mirror of
https://github.com/kmein/niveum
synced 2026-03-16 10:11:08 +01:00
Compare commits
103 Commits
20.09
...
d041e6fa52
| Author | SHA1 | Date | |
|---|---|---|---|
| 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
|
result
|
||||||
.direnv
|
.direnv
|
||||||
.envrc
|
.envrc
|
||||||
.history
|
.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",
|
"url": "https://github.com/rycee/home-manager.git",
|
||||||
"rev": "abaebf3b346c4bef500c5bd2fdebbed109261a0c",
|
"rev": "63f299b3347aea183fc5088e4d6c4a193b334a41",
|
||||||
"date": "2020-10-25T19:44:12+01:00",
|
"date": "2020-11-03T23:11:32+01:00",
|
||||||
"sha256": "1gcv2ni4nsicpmi4ain568msvgxch8cj04fxf6qgvhdklmh2y84k",
|
"path": "/nix/store/8ivnh2bjbnyl3aisb83f9z18pgwsca4l-home-manager",
|
||||||
"fetchSubmodules": false
|
"sha256": "0iksjch94wfvyq0cgwv5wq52j0dc9cavm68wka3pahhdvjlxd3js",
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"deepClone": false,
|
||||||
|
"leaveDotGit": false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
"url": "https://cgit.krebsco.de/krops",
|
"url": "https://cgit.krebsco.de/krops",
|
||||||
"rev": "55aa2c77ce8183f3d2b24f54efa33ab6a42e1e02",
|
"rev": "55aa2c77ce8183f3d2b24f54efa33ab6a42e1e02",
|
||||||
"date": "2020-04-19T01:06:20+02:00",
|
"date": "2020-04-19T01:06:20+02:00",
|
||||||
|
"path": "/nix/store/08wg2yrcgkr6iwipjd6g0fbwb7gacqax-krops",
|
||||||
"sha256": "00rvx9h596ync8wgic6xc9srzajzm28wlp9q7mv4z0jsb27l5bj8",
|
"sha256": "00rvx9h596ync8wgic6xc9srzajzm28wlp9q7mv4z0jsb27l5bj8",
|
||||||
"fetchSubmodules": false
|
"fetchSubmodules": false,
|
||||||
|
"deepClone": false,
|
||||||
|
"leaveDotGit": false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/NixOS/nixpkgs.git",
|
"url": "https://github.com/NixOS/nixpkgs.git",
|
||||||
"rev": "95d26c9a9f2a102e25cf318a648de44537f42e09",
|
"rev": "58f9c4c7d3a42c912362ca68577162e38ea8edfb",
|
||||||
"date": "2020-10-24T10:37:53+02:00",
|
"date": "2020-11-18T12:49:40-05:00",
|
||||||
"sha256": "0ymhj252dq7z2ajdjsdz99h106ylm4vsmz5v3xiwsylcs4bz2nl8",
|
"path": "/nix/store/nlnshfx9mp77cybwihjxmcw27jn42wsl-nixpkgs",
|
||||||
"fetchSubmodules": false
|
"sha256": "1517dy07jf4zhzknqbgm617lgjxsn7a6k1vgq61c67f6h55qs5ij",
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"deepClone": false,
|
||||||
|
"leaveDotGit": false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/krebs/retiolum",
|
"url": "https://github.com/krebs/retiolum",
|
||||||
"rev": "21244d55c10234b09a9f121015de1175f5facc69",
|
"rev": "982ae5aa3ed51fc982e7e872d8131e6f7a96909f",
|
||||||
"date": "2020-10-25T17:02:11+01:00",
|
"date": "2020-11-16T18:02:12+01:00",
|
||||||
"sha256": "0jzifani14rd68zv728mjq97p04njk8syrqbmn2vjd3plphvl5y5",
|
"path": "/nix/store/33sjdb90l2w80wjcqq2ihcb80x984rp2-retiolum",
|
||||||
"fetchSubmodules": false
|
"sha256": "0r9gzzjc1j0issqh4m1ynrk3xa7f44s22h4r0llp8qiiy5b5cxxp",
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"deepClone": false,
|
||||||
|
"leaveDotGit": false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
{
|
{
|
||||||
"url": "https://cgit.krebsco.de/stockholm",
|
"url": "https://github.com/kmein/stockholm",
|
||||||
"rev": "b034f63f7a2e4361b32c33c0e1a980eecf1a5aa6",
|
"rev": "f0325bef7954cb946674050847c6d52112cb658f",
|
||||||
"date": "2020-10-17T01:00:54+02:00",
|
"date": "2020-11-11T07:45:58+01:00",
|
||||||
"sha256": "1ji45h7xp3za5lq9qdg3f8gldrvqfpr8grinblzvf9iqxjgidr68",
|
"path": "/nix/store/lka6fhjfbwdx9bc7lk1bz4gizdv7nrbm-stockholm",
|
||||||
"fetchSubmodules": false
|
"sha256": "0gbw6n5yq36ysc30afa5d2dbsl2d46f73ms6f0rprdbr4nhdw8l2",
|
||||||
|
"fetchSubmodules": false,
|
||||||
|
"deepClone": false,
|
||||||
|
"leaveDotGit": false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (import <niveum/lib>) colours;
|
||||||
colourNames =
|
colourNames =
|
||||||
[ "black" "red" "green" "yellow" "blue" "magenta" "cyan" "white" ];
|
[ "black" "red" "green" "yellow" "blue" "magenta" "cyan" "white" ];
|
||||||
colours = lib.getAttrs colourNames config.niveum.colours;
|
colourPairs = lib.getAttrs colourNames colours;
|
||||||
alacrittyConfig = {
|
alacrittyConfig = {
|
||||||
background_opacity = 0.9;
|
background_opacity = 0.9;
|
||||||
colors = {
|
colors = {
|
||||||
primary = { inherit (config.niveum.colours) background foreground; };
|
primary = { inherit (colours) background foreground; };
|
||||||
normal = lib.mapAttrs (_: colour: colour.dark) colours;
|
normal = lib.mapAttrs (_: colour: colour.dark) colourPairs;
|
||||||
bright = lib.mapAttrs (_: colour: colour.bright) colours;
|
bright = lib.mapAttrs (_: colour: colour.bright) colourPairs;
|
||||||
};
|
};
|
||||||
font = {
|
font = {
|
||||||
normal.family = "Monospace";
|
normal.family = "Monospace";
|
||||||
size = config.niveum.fonts.size - 2;
|
size = 6;
|
||||||
};
|
};
|
||||||
key_bindings = [
|
key_bindings = [
|
||||||
{
|
{
|
||||||
@@ -36,7 +37,7 @@ in {
|
|||||||
environment.variables.TERMINAL = "alacritty";
|
environment.variables.TERMINAL = "alacritty";
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.unstable.alacritty
|
pkgs.alacritty
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.me.xdg.configFile = {
|
home-manager.users.me.xdg.configFile = {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
# "ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim
|
# "ihlenndgcmojhcghmfjfneahoeklbjjh" # cVim
|
||||||
# "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine
|
# "fpnmgdkabkmnadcjpehmlllkndpkmiak" # Wayback Machine
|
||||||
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
|
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # uBlock Origin
|
||||||
|
"khncfooichmfjbepaaaebmommgaepoid" # Remove YouTube Recommended Videos
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -28,26 +28,18 @@
|
|||||||
declarative = rec {
|
declarative = rec {
|
||||||
cert = toString <system-secrets/syncthing/cert.pem>;
|
cert = toString <system-secrets/syncthing/cert.pem>;
|
||||||
key = toString <system-secrets/syncthing/key.pem>;
|
key = toString <system-secrets/syncthing/key.pem>;
|
||||||
devices = {
|
inherit ((import <niveum/lib>).syncthing) 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";
|
|
||||||
};
|
|
||||||
folders =
|
folders =
|
||||||
let syncthing-dir = "${config.users.users.me.home}/cloud/syncthing";
|
let cloud-dir = "${config.users.users.me.home}/cloud";
|
||||||
in {
|
in {
|
||||||
"${syncthing-dir}/common".devices =
|
"${cloud-dir}/syncthing/common".devices = [ "wilde" "manakish" ];
|
||||||
[ "homeros" "scardanelli" "wilde" ];
|
"${cloud-dir}/syncthing/library".devices = [ "wilde" "manakish" "heym" ];
|
||||||
"${syncthing-dir}/library".devices = lib.attrNames devices;
|
"${cloud-dir}/syncthing/mundoiu".devices = [ "wilde" "manakish" "heym" ];
|
||||||
"${syncthing-dir}/mundoiu".devices = lib.attrNames devices;
|
"${cloud-dir}/syncthing/music".devices = [ "wilde" "manakish" "heym" ];
|
||||||
"${syncthing-dir}/music".devices = lib.attrNames devices;
|
"${cloud-dir}/moodle" = {
|
||||||
|
devices = [ "wilde" "toum" "manakish" ];
|
||||||
|
id = "moodle-dl";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
25
configs/codimd.nix
Normal file
25
configs/codimd.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.codimd = {
|
||||||
|
enable = true;
|
||||||
|
configuration = {
|
||||||
|
allowAnonymous = false;
|
||||||
|
allowGravatar = false;
|
||||||
|
db = {
|
||||||
|
dialect = "sqlite";
|
||||||
|
storage = "/var/lib/codimd/db.codimd.sqlite";
|
||||||
|
useCDN = false;
|
||||||
|
};
|
||||||
|
port = 3091;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,40 +1,14 @@
|
|||||||
{ pkgs, lib, config, options, ... }:
|
{ pkgs, lib, config, options, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib.strings) makeBinPath;
|
inherit (lib.strings) makeBinPath;
|
||||||
inherit (import <niveum/lib>) localAddresses;
|
inherit (import <niveum/lib>) localAddresses kieran;
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
<niveum/modules/constants.nix>
|
|
||||||
<home-manager/nixos>
|
<home-manager/nixos>
|
||||||
|
<niveum/modules/system-dependent.nix>
|
||||||
{
|
{
|
||||||
boot.supportedFilesystems = [ "ntfs" ];
|
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 = [
|
nix.nixPath = [
|
||||||
"/var/src"
|
"/var/src"
|
||||||
@@ -42,18 +16,6 @@ in {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
{ services.dbus.packages = [ pkgs.gnome3.dconf ]; }
|
{ 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 = {
|
nixpkgs = {
|
||||||
config = {
|
config = {
|
||||||
@@ -65,9 +27,7 @@ in {
|
|||||||
};
|
};
|
||||||
writeDashBin = pkgs.writers.writeDashBin;
|
writeDashBin = pkgs.writers.writeDashBin;
|
||||||
writeDash = pkgs.writers.writeDash;
|
writeDash = pkgs.writers.writeDash;
|
||||||
gfs-fonts = pkgs.callPackage <niveum/packages/gfs-fonts.nix> {
|
gfs-fonts = pkgs.callPackage <niveum/packages/gfs-fonts.nix> {};
|
||||||
scardanelli = config.networking.hostName == "scardanelli";
|
|
||||||
};
|
|
||||||
iolanguage = pkgs.callPackage <niveum/packages/iolanguage.nix> { };
|
iolanguage = pkgs.callPackage <niveum/packages/iolanguage.nix> { };
|
||||||
ix = pkgs.callPackage <niveum/packages/ix.nix> { };
|
ix = pkgs.callPackage <niveum/packages/ix.nix> { };
|
||||||
};
|
};
|
||||||
@@ -88,13 +48,6 @@ in {
|
|||||||
boot.loader.timeout = 1;
|
boot.loader.timeout = 1;
|
||||||
boot.extraModulePackages = [ config.boot.kernelPackages.exfat-nofuse ];
|
boot.extraModulePackages = [ config.boot.kernelPackages.exfat-nofuse ];
|
||||||
}
|
}
|
||||||
{
|
|
||||||
time.timeZone = "Europe/Berlin";
|
|
||||||
location = {
|
|
||||||
latitude = 52.517;
|
|
||||||
longitude = 13.3872;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
home-manager.users.me = {
|
home-manager.users.me = {
|
||||||
programs.zathura = {
|
programs.zathura = {
|
||||||
@@ -113,7 +66,7 @@ in {
|
|||||||
|
|
||||||
users.users.me = {
|
users.users.me = {
|
||||||
name = "kfm";
|
name = "kfm";
|
||||||
description = config.niveum.user.name;
|
description = kieran.name;
|
||||||
hashedPassword =
|
hashedPassword =
|
||||||
"$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
|
"$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
@@ -129,7 +82,7 @@ in {
|
|||||||
|
|
||||||
users.users.me.extraGroups = [ "audio" ];
|
users.users.me.extraGroups = [ "audio" ];
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.pavucontrol pkgs.pamixer ];
|
environment.systemPackages = [ pkgs.pavucontrol pkgs.pamixer pkgs.pulsemixer ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
environment.interactiveShellInit =
|
environment.interactiveShellInit =
|
||||||
@@ -150,29 +103,27 @@ in {
|
|||||||
cat = "${pkgs.bat}/bin/bat --style=plain";
|
cat = "${pkgs.bat}/bin/bat --style=plain";
|
||||||
chromium-incognito =
|
chromium-incognito =
|
||||||
"chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
|
"chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
|
||||||
cp = "cp -i";
|
cp = "cp --interactive";
|
||||||
dig = "dig +short";
|
|
||||||
ip = "${pkgs.iproute}/bin/ip -c";
|
ip = "${pkgs.iproute}/bin/ip -c";
|
||||||
l = "${pkgs.exa}/bin/exa -s type -a";
|
l = "ls --color=auto --time-style=long-iso --almost-all";
|
||||||
la = "${pkgs.exa}/bin/exa -s type -la";
|
ls = "ls --color=auto --time-style=long-iso";
|
||||||
ll = "${pkgs.exa}/bin/exa -s type -l";
|
ll = "ls --color=auto --time-style=long-iso -l";
|
||||||
ls = "${pkgs.exa}/bin/exa -s type";
|
la = "ls --color=auto --time-style=long-iso --almost-all -l";
|
||||||
mv = "mv -i";
|
mv = "mv --interactive";
|
||||||
nixi = "nix repl '<nixpkgs>'";
|
nixi = "nix repl '<nixpkgs>'";
|
||||||
ns = "nix-shell --run zsh";
|
ns = "nix-shell --run zsh";
|
||||||
o = "${pkgs.xdg_utils}/bin/xdg-open";
|
o = "${pkgs.xdg_utils}/bin/xdg-open";
|
||||||
pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in";
|
pbcopy = "${pkgs.xclip}/bin/xclip -selection clipboard -in";
|
||||||
pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out";
|
pbpaste = "${pkgs.xclip}/bin/xclip -selection clipboard -out";
|
||||||
rm = "rm -i";
|
rm = "rm --interactive";
|
||||||
s = "${pkgs.systemd}/bin/systemctl";
|
s = "${pkgs.systemd}/bin/systemctl";
|
||||||
take = "source ${take}";
|
take = "source ${take}";
|
||||||
tmux = "${pkgs.tmux}/bin/tmux -2";
|
tmux = "${pkgs.tmux}/bin/tmux -2";
|
||||||
tree = "${pkgs.exa}/bin/exa --tree";
|
|
||||||
sxiv = swallow "${pkgs.sxiv}/bin/sxiv";
|
sxiv = swallow "${pkgs.sxiv}/bin/sxiv";
|
||||||
zathura = swallow "${pkgs.zathura}/bin/zathura";
|
zathura = swallow "${pkgs.zathura}/bin/zathura";
|
||||||
us = "${pkgs.systemd}/bin/systemctl --user";
|
us = "${pkgs.systemd}/bin/systemctl --user";
|
||||||
wcd = "source ${wcd}";
|
wcd = "source ${wcd}";
|
||||||
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}";
|
where = "source ${where}";
|
||||||
yt =
|
yt =
|
||||||
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link
|
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link
|
||||||
@@ -180,50 +131,6 @@ in {
|
|||||||
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio
|
"${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"; }
|
{ i18n.defaultLocale = "en_GB.UTF-8"; }
|
||||||
{ services.illum.enable = true; }
|
{ services.illum.enable = true; }
|
||||||
{
|
{
|
||||||
@@ -254,7 +161,10 @@ in {
|
|||||||
{
|
{
|
||||||
programs.gnupg.agent.enable = true;
|
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;
|
services.atd.enable = true;
|
||||||
@@ -302,18 +212,17 @@ in {
|
|||||||
./neovim.nix
|
./neovim.nix
|
||||||
./newsboat.nix
|
./newsboat.nix
|
||||||
./flameshot-once.nix
|
./flameshot-once.nix
|
||||||
./nixpkgs-unstable.nix
|
|
||||||
./packages
|
./packages
|
||||||
./printing.nix
|
./printing.nix
|
||||||
./wallpaper.nix
|
./wallpaper.nix
|
||||||
./redshift.nix
|
./redshift.nix
|
||||||
./retiolum.nix
|
./retiolum.nix
|
||||||
./rofi.nix
|
./rofi.nix
|
||||||
./spotify.nix
|
./spacetime.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
|
./sshd.nix
|
||||||
./sudo.nix
|
./sudo.nix
|
||||||
./sxiv.nix
|
./sxiv.nix
|
||||||
./themes/mac-os.nix
|
|
||||||
./theming.nix
|
./theming.nix
|
||||||
./tmux.nix
|
./tmux.nix
|
||||||
./tor.nix
|
./tor.nix
|
||||||
@@ -323,6 +232,7 @@ in {
|
|||||||
./version.nix
|
./version.nix
|
||||||
./vscode.nix
|
./vscode.nix
|
||||||
./watson.nix
|
./watson.nix
|
||||||
|
./wifi.nix
|
||||||
./xautolock.nix
|
./xautolock.nix
|
||||||
./zsh.nix
|
./zsh.nix
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
with config.niveum; {
|
let
|
||||||
|
inherit (import <niveum/lib>) defaultApplications colours theme;
|
||||||
|
in {
|
||||||
home-manager.users.me.services.dunst = {
|
home-manager.users.me.services.dunst = {
|
||||||
enable = true;
|
enable = true;
|
||||||
iconTheme = theme.icon;
|
iconTheme = (theme pkgs).icon;
|
||||||
settings = {
|
settings = {
|
||||||
global = {
|
global = {
|
||||||
transparency = 10;
|
transparency = 10;
|
||||||
font = "Sans ${toString fonts.size}";
|
font = "Monospace 8";
|
||||||
geometry = "200x5-30+20";
|
geometry = "200x5-30+20";
|
||||||
frame_color = colours.foreground;
|
frame_color = colours.foreground;
|
||||||
follow = "mouse";
|
follow = "mouse";
|
||||||
@@ -31,7 +33,7 @@ with config.niveum; {
|
|||||||
sticky_history = true;
|
sticky_history = true;
|
||||||
history_length = 20;
|
history_length = 20;
|
||||||
dmenu = "${pkgs.rofi}/bin/rofi -display-run dunst -show run";
|
dmenu = "${pkgs.rofi}/bin/rofi -display-run dunst -show run";
|
||||||
browser = "x-www-browser";
|
browser = (defaultApplications pkgs).browser;
|
||||||
verbosity = "mesg";
|
verbosity = "mesg";
|
||||||
corner_radius = 0;
|
corner_radius = 0;
|
||||||
mouse_left_click = "do_action";
|
mouse_left_click = "do_action";
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{ lib, pkgs, ... }:
|
{ lib, pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (import <niveum/lib>) defaultApplications;
|
||||||
flameshot-once =
|
flameshot-once =
|
||||||
pkgs.callPackage <stockholm/krebs/5pkgs/simple/flameshot-once> {};
|
pkgs.callPackage <stockholm/krebs/5pkgs/simple/flameshot-once> {};
|
||||||
in {
|
in {
|
||||||
@@ -16,7 +17,7 @@ in {
|
|||||||
enable = true;
|
enable = true;
|
||||||
createUrl = "http://p.r/image";
|
createUrl = "http://p.r/image";
|
||||||
deleteUrl = "http://p.r/image/delete/%1";
|
deleteUrl = "http://p.r/image/delete/%1";
|
||||||
xdg-open.browser = "x-www-browser";
|
xdg-open.browser = (defaultApplications pkgs).browser;
|
||||||
};
|
};
|
||||||
config.timeout = 200;
|
config.timeout = 200;
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
{ pkgs, ... }: {
|
{ pkgs, ... }: {
|
||||||
niveum.fonts.size = 9;
|
|
||||||
|
|
||||||
fonts = {
|
fonts = {
|
||||||
enableDefaultFonts = true;
|
enableDefaultFonts = true;
|
||||||
enableFontDir = true;
|
enableFontDir = true;
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
{ pkgs, config, lib, ... }: {
|
{ pkgs, config, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (import <niveum/lib>) kieran ignorePaths;
|
||||||
|
in
|
||||||
|
{
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
pkgs.mr
|
pkgs.mr
|
||||||
pkgs.git
|
pkgs.git
|
||||||
@@ -6,7 +10,7 @@
|
|||||||
pkgs.gitAndTools.hub
|
pkgs.gitAndTools.hub
|
||||||
pkgs.gitAndTools.gh
|
pkgs.gitAndTools.gh
|
||||||
pkgs.gitAndTools.git-extras
|
pkgs.gitAndTools.git-extras
|
||||||
pkgs.unstable.gitAndTools.git-trim
|
pkgs.gitAndTools.git-trim
|
||||||
pkgs.gitstats
|
pkgs.gitstats
|
||||||
pkgs.patch
|
pkgs.patch
|
||||||
pkgs.patchutils
|
pkgs.patchutils
|
||||||
@@ -53,8 +57,8 @@
|
|||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.gitAndTools.gitFull;
|
package = pkgs.gitAndTools.gitFull;
|
||||||
userName = config.niveum.user.name;
|
userName = kieran.name;
|
||||||
userEmail = config.niveum.user.email;
|
userEmail = kieran.email;
|
||||||
aliases = {
|
aliases = {
|
||||||
br = "branch";
|
br = "branch";
|
||||||
co = "checkout";
|
co = "checkout";
|
||||||
@@ -69,8 +73,11 @@
|
|||||||
graph =
|
graph =
|
||||||
"log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all";
|
"log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all";
|
||||||
};
|
};
|
||||||
ignores = config.niveum.ignore;
|
ignores = ignorePaths;
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
|
pull.ff = "only";
|
||||||
|
rebase.autoStash = true;
|
||||||
|
merge.autoStash = true;
|
||||||
core.pager =
|
core.pager =
|
||||||
"${pkgs.gitAndTools.diff-so-fancy}/bin/diff-so-fancy | ${pkgs.less}/bin/less --tabs=4 -RFX";
|
"${pkgs.gitAndTools.diff-so-fancy}/bin/diff-so-fancy | ${pkgs.less}/bin/less --tabs=4 -RFX";
|
||||||
color = {
|
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;
|
inherit (import <niveum/lib>) localAddresses;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
disabledModules = [
|
|
||||||
"services/misc/home-assistant.nix"
|
|
||||||
];
|
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./zigbee.nix
|
./zigbee.nix
|
||||||
./frontend.nix
|
./frontend.nix
|
||||||
<nixpkgs-unstable/nixos/modules/services/misc/home-assistant.nix>
|
|
||||||
];
|
];
|
||||||
|
|
||||||
services.home-assistant = {
|
services.home-assistant = {
|
||||||
@@ -22,8 +17,8 @@ in
|
|||||||
config = {
|
config = {
|
||||||
homeassistant = {
|
homeassistant = {
|
||||||
name = "Toum";
|
name = "Toum";
|
||||||
latitude = 52.461;
|
latitude = config.location.latitude;
|
||||||
longitude = 13.378;
|
longitude = config.location.longitude;
|
||||||
elevation = 90; # TODO find out how high I live
|
elevation = 90; # TODO find out how high I live
|
||||||
unit_system = "metric";
|
unit_system = "metric";
|
||||||
time_zone = config.time.timeZone;
|
time_zone = config.time.timeZone;
|
||||||
@@ -2,15 +2,6 @@ let
|
|||||||
inherit (import ./lib.nix) triggers;
|
inherit (import ./lib.nix) triggers;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
disabledModules = [
|
|
||||||
"services/misc/home-assistant.nix"
|
|
||||||
];
|
|
||||||
|
|
||||||
imports = [
|
|
||||||
<nixpkgs-unstable/nixos/modules/services/misc/home-assistant.nix>
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
services.home-assistant.config = {
|
services.home-assistant.config = {
|
||||||
frontend = {
|
frontend = {
|
||||||
themes = {
|
themes = {
|
||||||
@@ -1,63 +1,25 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
inherit (import <stockholm/lib>) genid;
|
|
||||||
inherit (import <niveum/lib>) localAddresses;
|
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
|
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 = {
|
services.zigbee2mqtt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = zigbee2mqttConfig;
|
config = {
|
||||||
package = pkgs.unstable.zigbee2mqtt;
|
permit_join = false;
|
||||||
};
|
homeassistant = true;
|
||||||
*/
|
serial = {
|
||||||
|
port = "/dev/ttyACM0";
|
||||||
|
disable_led = true;
|
||||||
system.activationScripts.installZigbee = ''
|
};
|
||||||
install -d /var/lib/zigbee2mqtt
|
mqtt = {
|
||||||
install ${zigbee2mqtt_cfg} /var/lib/zigbee2mqtt/configuration.yaml
|
discovery = true;
|
||||||
'';
|
base_topic = "zigbee";
|
||||||
|
server = "mqtt://${localAddresses.toum}";
|
||||||
# hack to restart docker container on config change
|
user = "albrecht";
|
||||||
systemd.services.docker-zigbee2mqtt.environment.cfg = zigbee2mqtt_cfg;
|
password = lib.strings.fileContents <system-secrets/mosquitto>;
|
||||||
|
};
|
||||||
docker-containers.zigbee2mqtt = {
|
};
|
||||||
image = "koenkk/zigbee2mqtt";
|
|
||||||
extraDockerOptions = [
|
|
||||||
"--device=${zigbee2mqttDevice}:${zigbee2mqttDevice}"
|
|
||||||
];
|
|
||||||
volumes = ["/var/lib/zigbee2mqtt:/app/data"];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services.mosquitto = {
|
services.mosquitto = {
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{ pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib.strings) fileContents;
|
inherit (lib.strings) fileContents;
|
||||||
|
inherit (import <niveum/lib>) sshPort;
|
||||||
eduroam = {
|
eduroam = {
|
||||||
identity = fileContents <secrets/eduroam/identity>;
|
identity = fileContents <secrets/eduroam/identity>;
|
||||||
password = fileContents <secrets/eduroam/password>;
|
password = fileContents <secrets/eduroam/password>;
|
||||||
@@ -29,6 +30,8 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
|
pkgs.sshfsFuse
|
||||||
|
|
||||||
(pkgs.writers.writeDashBin "hu-vpn" ''
|
(pkgs.writers.writeDashBin "hu-vpn" ''
|
||||||
${pkgs.openfortivpn}/bin/openfortivpn -p "${eduroam.password}" -c ${pkgs.writeText "hu-berlin.config" ''
|
${pkgs.openfortivpn}/bin/openfortivpn -p "${eduroam.password}" -c ${pkgs.writeText "hu-berlin.config" ''
|
||||||
host = forti-ssl.vpn.hu-berlin.de
|
host = forti-ssl.vpn.hu-berlin.de
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (import <niveum/lib>) defaultApplications colours;
|
||||||
klem = import <niveum/packages/scripts/klem.nix> {
|
klem = import <niveum/packages/scripts/klem.nix> {
|
||||||
inherit pkgs lib;
|
inherit pkgs lib;
|
||||||
config.scripts = {
|
config.scripts = {
|
||||||
@@ -41,7 +42,7 @@ let
|
|||||||
emoji-file = pkgs.fetchurl {
|
emoji-file = pkgs.fetchurl {
|
||||||
url =
|
url =
|
||||||
"https://raw.githubusercontent.com/LukeSmithxyz/voidrice/master/.local/share/larbs/emoji";
|
"https://raw.githubusercontent.com/LukeSmithxyz/voidrice/master/.local/share/larbs/emoji";
|
||||||
sha256 = "09m2rgb9d5jpiy8q4jz3dw36gkpb4ng2pl7xi7ppsrzzzdvq85qk";
|
sha256 = "03fv69ah8msh2j6i3lm4sdkckqq8jwn1kj43j98dh0xjpzazsy46";
|
||||||
};
|
};
|
||||||
in with pkgs;
|
in with pkgs;
|
||||||
writers.writeDashBin "emoji-menu" ''
|
writers.writeDashBin "emoji-menu" ''
|
||||||
@@ -59,7 +60,7 @@ let
|
|||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
|
||||||
in with config.niveum; {
|
in {
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
displayManager.defaultSession = "none+i3";
|
displayManager.defaultSession = "none+i3";
|
||||||
windowManager.i3 = {
|
windowManager.i3 = {
|
||||||
@@ -71,7 +72,7 @@ in with config.niveum; {
|
|||||||
home-manager.users.me.xsession.windowManager.i3 = {
|
home-manager.users.me.xsession.windowManager.i3 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = rec {
|
config = rec {
|
||||||
fonts = [ "Monospace ${toString config.niveum.fonts.size}" ];
|
fonts = [ "Monospace 10" ];
|
||||||
modifier = "Mod4";
|
modifier = "Mod4";
|
||||||
window = {
|
window = {
|
||||||
titlebar = false;
|
titlebar = false;
|
||||||
@@ -133,7 +134,7 @@ in with config.niveum; {
|
|||||||
};
|
};
|
||||||
bars = [{
|
bars = [{
|
||||||
workspaceButtons = false;
|
workspaceButtons = false;
|
||||||
fonts = [ "Monospace ${toString (config.niveum.fonts.size - 1)}" ];
|
fonts = [ "Monospace 8" ];
|
||||||
mode = "hide"; # "dock"
|
mode = "hide"; # "dock"
|
||||||
position = "bottom";
|
position = "bottom";
|
||||||
colors = rec {
|
colors = rec {
|
||||||
@@ -147,10 +148,9 @@ in with config.niveum; {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ${
|
statusCommand = "${pkgs.i3status-rust}/bin/i3status-rs ${
|
||||||
pkgs.writeTOML (import <niveum/dot/i3status-rust.nix> {
|
pkgs.writeTOML (import <niveum/lib/i3status-rust.nix> {
|
||||||
wifi-interface = networkInterfaces.wireless;
|
inherit (config.niveum) batteryName wirelessInterface;
|
||||||
batteryBlock = batteryBlocks.default;
|
inherit colours;
|
||||||
inherit (config.niveum) colours;
|
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
})
|
})
|
||||||
}";
|
}";
|
||||||
@@ -164,10 +164,10 @@ in with config.niveum; {
|
|||||||
"l" = "resize grow width 10 px or 5 ppt";
|
"l" = "resize grow width 10 px or 5 ppt";
|
||||||
};
|
};
|
||||||
keybindings = {
|
keybindings = {
|
||||||
"${modifier}+Shift+h" = "move left";
|
"${modifier}+Shift+h" = "move left 25 px";
|
||||||
"${modifier}+Shift+j" = "move down";
|
"${modifier}+Shift+j" = "move down 25 px";
|
||||||
"${modifier}+Shift+k" = "move up";
|
"${modifier}+Shift+k" = "move up 25 px";
|
||||||
"${modifier}+Shift+l" = "move right";
|
"${modifier}+Shift+l" = "move right 25 px";
|
||||||
"${modifier}+h" = "focus left";
|
"${modifier}+h" = "focus left";
|
||||||
"${modifier}+j" = "focus down";
|
"${modifier}+j" = "focus down";
|
||||||
"${modifier}+k" = "focus up";
|
"${modifier}+k" = "focus up";
|
||||||
@@ -196,10 +196,10 @@ in with config.niveum; {
|
|||||||
"${modifier}+v" = "split v";
|
"${modifier}+v" = "split v";
|
||||||
"${modifier}+w" = "layout tabbed";
|
"${modifier}+w" = "layout tabbed";
|
||||||
|
|
||||||
"${modifier}+Return" = "exec i3-sensible-terminal";
|
|
||||||
# "${modifier}+Shift+y" = "exec ${pkgs.qutebrowser}/bin/qutebrowser";
|
# "${modifier}+Shift+y" = "exec ${pkgs.qutebrowser}/bin/qutebrowser";
|
||||||
"${modifier}+t" = "exec ${applications.fileManager}";
|
"${modifier}+Return" = "exec ${(defaultApplications pkgs).terminal}";
|
||||||
"${modifier}+y" = "exec x-www-browser";
|
"${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.xautolock}/bin/xautolock -locknow";
|
||||||
"${modifier}+a" =
|
"${modifier}+a" =
|
||||||
|
|||||||
@@ -1,5 +1,20 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
let
|
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 = [
|
tagRules = [
|
||||||
{
|
{
|
||||||
query = "to:miaengiadina-pwa@noreply.github.com AND subject:\"PR run failed\"";
|
query = "to:miaengiadina-pwa@noreply.github.com AND subject:\"PR run failed\"";
|
||||||
@@ -42,9 +57,6 @@ let
|
|||||||
notmuch.enable = true;
|
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" ''
|
mail-sync = pkgs.writers.writeDashBin "mail-sync" ''
|
||||||
${pkgs.isync}/bin/mbsync --all
|
${pkgs.isync}/bin/mbsync --all
|
||||||
${pkgs.notmuch}/bin/notmuch new
|
${pkgs.notmuch}/bin/notmuch new
|
||||||
@@ -107,7 +119,7 @@ in {
|
|||||||
};
|
};
|
||||||
in lib.listToAttrs (map muchsyncConfig [
|
in lib.listToAttrs (map muchsyncConfig [
|
||||||
"wilde"
|
"wilde"
|
||||||
"homeros"
|
"manakish"
|
||||||
]);
|
]);
|
||||||
|
|
||||||
programs.msmtp.enable = true;
|
programs.msmtp.enable = true;
|
||||||
@@ -139,7 +151,7 @@ in {
|
|||||||
};
|
};
|
||||||
userName = "kieran@fysi.tech";
|
userName = "kieran@fysi.tech";
|
||||||
address = "kieran@fysi.tech";
|
address = "kieran@fysi.tech";
|
||||||
realName = config.niveum.user.name;
|
realName = kieran.name;
|
||||||
passwordCommand = pass_ <secrets/mail/fastmail>;
|
passwordCommand = pass_ <secrets/mail/fastmail>;
|
||||||
};
|
};
|
||||||
cock = enableDefaults {
|
cock = enableDefaults {
|
||||||
@@ -166,7 +178,7 @@ in {
|
|||||||
primary = false;
|
primary = false;
|
||||||
flavor = "gmail.com";
|
flavor = "gmail.com";
|
||||||
address = "kieran.meinhardt@gmail.com";
|
address = "kieran.meinhardt@gmail.com";
|
||||||
realName = config.niveum.user.name;
|
realName = kieran.name;
|
||||||
userName = "kieran.meinhardt";
|
userName = "kieran.meinhardt";
|
||||||
passwordCommand = pass_ <secrets/mail/gmail/kieran.meinhardt>;
|
passwordCommand = pass_ <secrets/mail/gmail/kieran.meinhardt>;
|
||||||
folders = {
|
folders = {
|
||||||
@@ -179,7 +191,7 @@ in {
|
|||||||
primary = false;
|
primary = false;
|
||||||
flavor = "gmail.com";
|
flavor = "gmail.com";
|
||||||
address = "amroplay@gmail.com";
|
address = "amroplay@gmail.com";
|
||||||
realName = config.niveum.user.name;
|
realName = kieran.name;
|
||||||
userName = "amroplay";
|
userName = "amroplay";
|
||||||
passwordCommand = pass_ <secrets/mail/gmail/amroplay>;
|
passwordCommand = pass_ <secrets/mail/gmail/amroplay>;
|
||||||
folders = {
|
folders = {
|
||||||
@@ -204,14 +216,14 @@ in {
|
|||||||
tls.enable = true;
|
tls.enable = true;
|
||||||
};
|
};
|
||||||
address = "kieran.meinhardt@posteo.net";
|
address = "kieran.meinhardt@posteo.net";
|
||||||
realName = config.niveum.user.name;
|
realName = kieran.name;
|
||||||
userName = "kieran.meinhardt@posteo.net";
|
userName = "kieran.meinhardt@posteo.net";
|
||||||
passwordCommand = pass_ <secrets/mail/posteo>;
|
passwordCommand = pass_ <secrets/mail/posteo>;
|
||||||
};
|
};
|
||||||
hu-berlin = enableDefaults {
|
hu-berlin = enableDefaults {
|
||||||
primary = false;
|
primary = false;
|
||||||
address = "meinhark@hu-berlin.de";
|
address = "meinhark@hu-berlin.de";
|
||||||
realName = config.niveum.user.name;
|
realName = kieran.name;
|
||||||
userName = "meinhark";
|
userName = "meinhark";
|
||||||
passwordCommand = pass_ <secrets/eduroam/password>;
|
passwordCommand = pass_ <secrets/eduroam/password>;
|
||||||
smtp = {
|
smtp = {
|
||||||
@@ -228,6 +240,26 @@ in {
|
|||||||
tls.enable = true;
|
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);
|
||||||
|
};
|
||||||
|
}
|
||||||
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";
|
||||||
|
};
|
||||||
|
}
|
||||||
38
configs/mpd.nix
Normal file
38
configs/mpd.nix
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
playlists = import <niveum/lib/playlists.nix>;
|
||||||
|
playlistFiles = lib.mapAttrs (name: {tracks, ...}: pkgs.writeText "${name}.m3u" (builtins.concatStringsSep "\n" (map ({url, ...}: url) tracks))) playlists;
|
||||||
|
linkPlaylist = name: file: ''
|
||||||
|
ln -sfn "${toString file}" "/var/lib/mpd/playlists/${name}.m3u"
|
||||||
|
'';
|
||||||
|
linkPlaylists = lib.concatStringsSep "\n" (lib.mapAttrsToList linkPlaylist playlistFiles);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
system.activationScripts.mpd-playlists = ''
|
||||||
|
rm -rf /var/lib/mpd/playlists
|
||||||
|
install -d /var/lib/mpd/playlists
|
||||||
|
${linkPlaylists}
|
||||||
|
'';
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.ncmpcpp pkgs.mpc_cli ];
|
||||||
|
|
||||||
|
services.mpd.enable = true;
|
||||||
|
services.ympd.enable = true;
|
||||||
|
|
||||||
|
services.nginx.virtualHosts.default = {
|
||||||
|
locations."^~ /ympd/" = {
|
||||||
|
proxyPass = "http://127.0.0.1:${config.services.ympd.webPort}/";
|
||||||
|
extraConfig = ''
|
||||||
|
auth_basic "Restricted Content";
|
||||||
|
auth_basic_user_file ${pkgs.writeText "ympd-password" "dj:$apr1$1ogLNSki$37uGV8iqjWEYEwtY4iq3F1"};
|
||||||
|
''; # generate password hash with `openssl passwd -apr1`
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# dont let anyone outside localhost or local network in
|
||||||
|
networking.firewall.extraCommands = let ympdPort = config.services.ympd.webPort; in ''
|
||||||
|
${pkgs.iptables}/bin/iptables -A INPUT -p tcp --dport ${ympdPort} -s 192.168.0.0/16 -j ACCEPT
|
||||||
|
${pkgs.iptables}/bin/iptables -A INPUT -p tcp --dport ${ympdPort} -s 127.0.0.0/8 -j ACCEPT
|
||||||
|
${pkgs.iptables}/bin/iptables -A INPUT -p tcp --dport ${ympdPort} -j DROP
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
(pkgs.neovim.override {
|
(pkgs.neovim.override {
|
||||||
configure = {
|
configure = {
|
||||||
customRC = builtins.readFile <niveum/dot/init.vim>;
|
customRC = builtins.readFile <niveum/lib/vim/init.vim>;
|
||||||
packages.nvim = with pkgs.vimPlugins; {
|
packages.nvim = with pkgs.vimPlugins; {
|
||||||
start = [
|
start = [
|
||||||
# cheat-sh-vim
|
# cheat-sh-vim
|
||||||
|
|||||||
@@ -3,35 +3,22 @@ let
|
|||||||
inherit (import <niveum/lib>) localAddresses;
|
inherit (import <niveum/lib>) localAddresses;
|
||||||
in
|
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 = {
|
services.nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud19;
|
package = pkgs.nextcloud20;
|
||||||
|
|
||||||
|
https = true;
|
||||||
|
|
||||||
autoUpdateApps = {
|
autoUpdateApps = {
|
||||||
enable = true;
|
enable = true;
|
||||||
startAt = "05:00:00";
|
startAt = "05:00:00";
|
||||||
};
|
};
|
||||||
|
|
||||||
hostName = localAddresses.toum;
|
hostName = "cloud.xn--kiern-0qa.de";
|
||||||
|
|
||||||
nginx.enable = true;
|
|
||||||
# https = true;
|
|
||||||
config = {
|
config = {
|
||||||
# overwriteProtocol = "https";
|
overwriteProtocol = "https";
|
||||||
|
|
||||||
dbtype = "pgsql";
|
dbtype = "pgsql";
|
||||||
dbuser = "nextcloud";
|
dbuser = "nextcloud";
|
||||||
dbhost = "/run/postgresql"; # nextcloud will add /.s.PGSQL.5432 by itself
|
dbhost = "/run/postgresql"; # nextcloud will add /.s.PGSQL.5432 by itself
|
||||||
@@ -39,7 +26,7 @@ in
|
|||||||
dbpass = lib.strings.fileContents <system-secrets/nextcloud/database>;
|
dbpass = lib.strings.fileContents <system-secrets/nextcloud/database>;
|
||||||
adminpass = lib.strings.fileContents <system-secrets/nextcloud/admin>;
|
adminpass = lib.strings.fileContents <system-secrets/nextcloud/admin>;
|
||||||
adminuser = "admin";
|
adminuser = "admin";
|
||||||
extraTrustedDomains = [ "toum.r" ];
|
# extraTrustedDomains = [ "toum.r" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -54,6 +41,12 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
services.nginx.virtualHosts."cloud.xn--kiern-0qa.de" = {
|
||||||
|
enableACME = true;
|
||||||
|
addSSL = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Ensure that postgres is running before running the setup
|
# Ensure that postgres is running before running the setup
|
||||||
systemd.services."nextcloud-setup" = {
|
systemd.services."nextcloud-setup" = {
|
||||||
requires = ["postgresql.service"];
|
requires = ["postgresql.service"];
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
{ config, ... }: {
|
|
||||||
nixpkgs.config.packageOverrides = pkgs: {
|
|
||||||
unstable = import <nixpkgs-unstable> { config = config.nixpkgs.config; };
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
{ pkgs, lib, ... }: {
|
{ pkgs, lib, ... }:
|
||||||
|
let hc = pkgs.callPackage <stockholm/tv/5pkgs/simple/hc.nix> {};
|
||||||
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./krebs.nix
|
./krebs.nix
|
||||||
./writing.nix
|
./writing.nix
|
||||||
@@ -33,18 +35,15 @@
|
|||||||
# INTERNET
|
# INTERNET
|
||||||
aria2
|
aria2
|
||||||
firefox
|
firefox
|
||||||
# tor-browser-bundle-bin
|
|
||||||
# qutebrowser
|
|
||||||
tdesktop
|
tdesktop
|
||||||
skypeforlinux
|
|
||||||
w3m
|
w3m
|
||||||
wget
|
wget
|
||||||
httpie
|
httpie
|
||||||
whois
|
whois
|
||||||
ddgr
|
ddgr
|
||||||
ix
|
ix
|
||||||
# thunderbird
|
|
||||||
nur.repos.kmein.python3Packages.instaloader
|
nur.repos.kmein.python3Packages.instaloader
|
||||||
|
dnsutils
|
||||||
# mtr # my traceroute
|
# mtr # my traceroute
|
||||||
# FILE MANAGERS
|
# FILE MANAGERS
|
||||||
ranger
|
ranger
|
||||||
@@ -80,6 +79,7 @@
|
|||||||
manpages
|
manpages
|
||||||
posix_man_pages
|
posix_man_pages
|
||||||
# moreutils # for parallel, sponge, combine
|
# moreutils # for parallel, sponge, combine
|
||||||
|
tree
|
||||||
parallel # for parallel, since moreutils shadows task spooler
|
parallel # for parallel, since moreutils shadows task spooler
|
||||||
ripgrep # better grep
|
ripgrep # better grep
|
||||||
rlwrap
|
rlwrap
|
||||||
@@ -102,6 +102,7 @@
|
|||||||
pdftk # pdf toolkit
|
pdftk # pdf toolkit
|
||||||
evince # for viewing pdf annotations
|
evince # for viewing pdf annotations
|
||||||
xournal # for annotating pdfs
|
xournal # for annotating pdfs
|
||||||
|
hc # print files as qr codes
|
||||||
youtubeDL
|
youtubeDL
|
||||||
bc # calculator
|
bc # calculator
|
||||||
scripts.default-gateway
|
scripts.default-gateway
|
||||||
@@ -121,8 +122,11 @@
|
|||||||
scripts.notetags
|
scripts.notetags
|
||||||
scripts.booksplit
|
scripts.booksplit
|
||||||
scripts.dmenurandr
|
scripts.dmenurandr
|
||||||
|
scripts.interdimensional-cable
|
||||||
scripts.dmenubluetooth
|
scripts.dmenubluetooth
|
||||||
scripts.manual-sort
|
scripts.manual-sort
|
||||||
|
scripts.much-scripts
|
||||||
|
scripts.dns-sledgehammer
|
||||||
ts
|
ts
|
||||||
scripts.vg
|
scripts.vg
|
||||||
scripts.fkill
|
scripts.fkill
|
||||||
@@ -135,6 +139,10 @@
|
|||||||
par
|
par
|
||||||
qrencode
|
qrencode
|
||||||
wtf
|
wtf
|
||||||
|
|
||||||
|
spotify
|
||||||
|
spotify-tui
|
||||||
|
playerctl
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,13 +10,13 @@
|
|||||||
'';
|
'';
|
||||||
# :def unpl \x -> return $ ":!${pkgs.haskellPackages.pointful}/bin/pointful \"" ++ x ++ "\""
|
# :def unpl \x -> return $ ":!${pkgs.haskellPackages.pointful}/bin/pointful \"" ++ x ++ "\""
|
||||||
# :def pl \x -> return $ ":!${pkgs.haskellPackages.pointfree}/bin/pointfree -v \"" ++ 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 {
|
in builtins.toJSON {
|
||||||
templates.params = {
|
templates.params = {
|
||||||
author-name = user.name;
|
author-name = kieran.name;
|
||||||
author-email = user.email;
|
author-email = kieran.email;
|
||||||
copyright = "Copyright: (c) 2019 ${user.name}";
|
copyright = "Copyright: (c) 2020 ${kieran.name}";
|
||||||
github-username = user.github;
|
github-username = kieran.github;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (import <niveum/lib>) nixpkgs-unstable;
|
||||||
|
|
||||||
|
unstable = import nixpkgs-unstable {};
|
||||||
|
|
||||||
zoteroStyle = { name, sha256 }: {
|
zoteroStyle = { name, sha256 }: {
|
||||||
name = "${name}.csl";
|
name = "${name}.csl";
|
||||||
path = pkgs.fetchurl {
|
path = pkgs.fetchurl {
|
||||||
@@ -15,17 +19,11 @@ let
|
|||||||
})
|
})
|
||||||
(zoteroStyle {
|
(zoteroStyle {
|
||||||
name = "din-1505-2";
|
name = "din-1505-2";
|
||||||
sha256 = if scardanelli then
|
sha256 = "1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq";
|
||||||
"1pvy1b7qm13mnph7z365rrz1j082bl2y8ih73rhzd0zd6dz1jyjq"
|
|
||||||
else
|
|
||||||
"150kbnxl1r4g1s40khdavv5s6ah10ws135r9k883f6srk78sz6zi";
|
|
||||||
})
|
})
|
||||||
(zoteroStyle {
|
(zoteroStyle {
|
||||||
name = "apa";
|
name = "apa";
|
||||||
sha256 = if scardanelli then
|
sha256 = "1878vxp0y0h05yzaghnd51n981623mxskw3lsdyzmffqhihvv111";
|
||||||
"0g8vhp7gnd315h5b60r3zqp49kaq3fkxqnz2v7j2a0zp6s3cisdk"
|
|
||||||
else
|
|
||||||
"1rg41mblmqifba1azb6481dwxhsbl606kf6ysqkqd786f9l9dcf8";
|
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -34,7 +32,6 @@ let
|
|||||||
name = "dic/${name}";
|
name = "dic/${name}";
|
||||||
inherit path;
|
inherit path;
|
||||||
}) dicts);
|
}) dicts);
|
||||||
scardanelli = config.networking.hostName == "scardanelli";
|
|
||||||
in {
|
in {
|
||||||
environment.variables.STARDICT_DATA_DIR = toString (makeStardictDataDir [
|
environment.variables.STARDICT_DATA_DIR = toString (makeStardictDataDir [
|
||||||
{
|
{
|
||||||
@@ -69,8 +66,10 @@ in {
|
|||||||
texlive.combined.scheme-full
|
texlive.combined.scheme-full
|
||||||
(aspellWithDicts (dict: [ dict.de dict.en dict.en-computers ]))
|
(aspellWithDicts (dict: [ dict.de dict.en dict.en-computers ]))
|
||||||
haskellPackages.pandoc-citeproc
|
haskellPackages.pandoc-citeproc
|
||||||
# nur.repos.kmein.text2pdf
|
nur.repos.kmein.text2pdf
|
||||||
libreoffice
|
abiword
|
||||||
|
gnumeric
|
||||||
|
dia
|
||||||
unstable.pandoc
|
unstable.pandoc
|
||||||
# proselint
|
# proselint
|
||||||
asciidoctor
|
asciidoctor
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
{ config, ... }:
|
{ config, ... }:
|
||||||
with config.niveum; {
|
let
|
||||||
|
inherit (import <niveum/lib>) colours;
|
||||||
|
in{
|
||||||
home-manager.users.me.programs.rofi = {
|
home-manager.users.me.programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
separator = "solid";
|
separator = "solid";
|
||||||
scrollbar = false;
|
scrollbar = false;
|
||||||
borderWidth = 0;
|
borderWidth = 0;
|
||||||
lines = 5;
|
lines = 5;
|
||||||
font = "Monospace ${toString (fonts.size - 1)}";
|
font = "Monospace 10";
|
||||||
colors = rec {
|
colors = rec {
|
||||||
window = rec {
|
window = rec {
|
||||||
background = colours.foreground;
|
background = colours.foreground;
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
documentation.enable = false;
|
documentation.enable = false;
|
||||||
documentation.info.enable = false;
|
documentation.info.enable = false;
|
||||||
documentation.man.enable = false;
|
documentation.man.enable = false;
|
||||||
|
documentation.man.generateCaches = false;
|
||||||
fonts.fontconfig.enable = false;
|
fonts.fontconfig.enable = false;
|
||||||
nix.gc.automatic = true;
|
nix.gc.automatic = true;
|
||||||
nix.optimise.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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
12
configs/spotifyd.nix
Normal file
12
configs/spotifyd.nix
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
services.spotifyd = {
|
||||||
|
enable = true;
|
||||||
|
config = lib.generators.toINI { } {
|
||||||
|
global = {
|
||||||
|
username = lib.strings.fileContents <secrets/spotify/username>;
|
||||||
|
password = lib.strings.fileContents <secrets/spotify/password>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,27 +1,12 @@
|
|||||||
{ pkgs, config, lib, ... }:
|
{ pkgs, config, lib, ... }:
|
||||||
let
|
let
|
||||||
sshPort = 22022;
|
inherit (import <niveum/lib>) sshPort kieran;
|
||||||
kmeinKeys = lib.strings.splitString "\n" (lib.strings.fileContents (pkgs.fetchurl {
|
|
||||||
url = "https://github.com/kmein.keys";
|
|
||||||
sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx";
|
|
||||||
}));
|
|
||||||
in {
|
in {
|
||||||
services.xserver.displayManager.sessionCommands =
|
services.xserver.displayManager.sessionCommands = "${pkgs.openssh}/bin/ssh-add";
|
||||||
"${pkgs.openssh}/bin/ssh-add";
|
|
||||||
|
|
||||||
programs.ssh.startAgent = true;
|
programs.ssh.startAgent = true;
|
||||||
|
|
||||||
services.openssh = {
|
users.users.me.openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
|
||||||
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;
|
|
||||||
|
|
||||||
home-manager.users.me.programs.ssh = {
|
home-manager.users.me.programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -30,19 +15,24 @@ in {
|
|||||||
hostname = "ssh.github.com";
|
hostname = "ssh.github.com";
|
||||||
port = 443;
|
port = 443;
|
||||||
};
|
};
|
||||||
scardanelli = {
|
zaatar = {
|
||||||
hostname = "scardanelli.r";
|
hostname = "zaatar.r";
|
||||||
user = "kfm";
|
user = "root";
|
||||||
port = sshPort;
|
port = sshPort;
|
||||||
};
|
};
|
||||||
homeros = {
|
makanek = {
|
||||||
hostname = "homeros.r";
|
hostname = "makanek.r";
|
||||||
|
user = "root";
|
||||||
|
port = sshPort;
|
||||||
|
};
|
||||||
|
manakish = {
|
||||||
|
hostname = "manakish.r";
|
||||||
user = "kfm";
|
user = "kfm";
|
||||||
port = sshPort;
|
port = sshPort;
|
||||||
};
|
};
|
||||||
toum = {
|
toum = {
|
||||||
hostname = "toum.r";
|
hostname = "toum.r";
|
||||||
user = "kfm";
|
user = "root";
|
||||||
port = sshPort;
|
port = sshPort;
|
||||||
};
|
};
|
||||||
wilde = {
|
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, ... }:
|
{ lib, config, pkgs, ... }:
|
||||||
let inherit (config.niveum) theme colourPalette;
|
let
|
||||||
|
theme = (import <niveum/lib>).theme pkgs;
|
||||||
in {
|
in {
|
||||||
console.colors = map (c: lib.strings.removePrefix "#" c) colourPalette;
|
|
||||||
|
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
[ theme.gtk.package theme.icon.package theme.cursor.package ];
|
[ theme.gtk.package theme.icon.package theme.cursor.package ];
|
||||||
|
|
||||||
|
|||||||
24
configs/tuner.nix
Normal file
24
configs/tuner.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
let
|
||||||
|
tunerHTML = pkgs.callPackage <niveum/packages/tuner.nix> {
|
||||||
|
playlists = import <niveum/lib/playlists.nix>;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
recommendedGzipSettings = true;
|
||||||
|
recommendedOptimisation = true;
|
||||||
|
recommendedTlsSettings = true;
|
||||||
|
|
||||||
|
virtualHosts.default = {
|
||||||
|
locations."= /tuner".extraConfig = ''
|
||||||
|
default_type text/html;
|
||||||
|
alias ${tunerHTML};
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||||
|
}
|
||||||
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -27,7 +27,7 @@ in {
|
|||||||
home-manager.users.me = {
|
home-manager.users.me = {
|
||||||
services.random-background = {
|
services.random-background = {
|
||||||
enable = true;
|
enable = true;
|
||||||
imageDirectory = "${kmein-wallpapers}/saudade";
|
imageDirectory = "${kmein-wallpapers}/meteora";
|
||||||
interval = "1h";
|
interval = "1h";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
{
|
{
|
||||||
environment.systemPackages = [ pkgs.watson ];
|
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
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
47
configs/wifi.nix
Normal file
47
configs/wifi.nix
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{ 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.wpa_supplicant_gui ];
|
||||||
|
}
|
||||||
28
deploy.nix
28
deploy.nix
@@ -1,4 +1,6 @@
|
|||||||
let
|
let
|
||||||
|
inherit (import ./lib/default.nix) sshPort;
|
||||||
|
|
||||||
gitFromJson = path:
|
gitFromJson = path:
|
||||||
let object = importJson path;
|
let object = importJson path;
|
||||||
in {
|
in {
|
||||||
@@ -17,7 +19,6 @@ let
|
|||||||
nixos-config.symlink = "system/configuration.nix";
|
nixos-config.symlink = "system/configuration.nix";
|
||||||
|
|
||||||
nixpkgs.git = gitFromJson .versions/nixpkgs.json;
|
nixpkgs.git = gitFromJson .versions/nixpkgs.json;
|
||||||
nixpkgs-unstable.git = gitFromJson .versions/nixpkgs-unstable.json;
|
|
||||||
home-manager.git = gitFromJson .versions/home-manager.json;
|
home-manager.git = gitFromJson .versions/home-manager.json;
|
||||||
stockholm.git = gitFromJson .versions/stockholm.json;
|
stockholm.git = gitFromJson .versions/stockholm.json;
|
||||||
retiolum.git = gitFromJson .versions/retiolum.json;
|
retiolum.git = gitFromJson .versions/retiolum.json;
|
||||||
@@ -30,19 +31,14 @@ let
|
|||||||
name = "shared";
|
name = "shared";
|
||||||
};
|
};
|
||||||
}];
|
}];
|
||||||
target = "root@${address}:22022";
|
target = "root@${address}:${toString sshPort}";
|
||||||
};
|
};
|
||||||
inherit (pkgs.krops) writeDeploy;
|
inherit (pkgs.krops) writeDeploy;
|
||||||
in {
|
in {
|
||||||
scardanelli = writeDeploy "deploy-scardanelli" (regularSystem {
|
zaatar = writeDeploy "deploy-zaatar" (regularSystem {
|
||||||
path = systems/scardanelli;
|
path = systems/zaatar;
|
||||||
name = "scardanelli";
|
name = "zaatar";
|
||||||
address = "scardanelli.r";
|
address = "zaatar.r";
|
||||||
});
|
|
||||||
homeros = writeDeploy "deploy-homeros" (regularSystem {
|
|
||||||
path = systems/homeros;
|
|
||||||
name = "homeros";
|
|
||||||
address = "homeros.r";
|
|
||||||
});
|
});
|
||||||
wilde = writeDeploy "deploy-wilde" (regularSystem {
|
wilde = writeDeploy "deploy-wilde" (regularSystem {
|
||||||
path = systems/wilde;
|
path = systems/wilde;
|
||||||
@@ -54,4 +50,14 @@ in {
|
|||||||
name = "toum";
|
name = "toum";
|
||||||
address = "toum.r";
|
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,74 @@
|
|||||||
{
|
{
|
||||||
localAddresses = {
|
nixpkgs-unstable = builtins.fetchGit {
|
||||||
toum = "192.168.178.24";
|
url = "https://github.com/NixOS/nixpkgs";
|
||||||
homeros = "192.168.178.22";
|
rev = "4512dac960f3833cf24cdbd742b63cb447bbdd9a";
|
||||||
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";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, wifi-interface, colours, batteryBlock }:
|
{ pkgs, wirelessInterface, colours, batteryName }:
|
||||||
let
|
let
|
||||||
inherit (pkgs) lib;
|
inherit (pkgs) lib;
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ in {
|
|||||||
good_bg = colours.background;
|
good_bg = colours.background;
|
||||||
idle_bg = colours.background;
|
idle_bg = colours.background;
|
||||||
info_bg = colours.background;
|
info_bg = colours.background;
|
||||||
separator = "* ";
|
separator = "/ ";
|
||||||
separator_bg = "auto";
|
separator_bg = "auto";
|
||||||
separator_fg = colours.black.bright;
|
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";
|
block = "custom";
|
||||||
interval = 30;
|
interval = 30;
|
||||||
@@ -114,7 +102,7 @@ in {
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
block = "net";
|
block = "net";
|
||||||
device = wifi-interface;
|
device = wirelessInterface;
|
||||||
speed_up = false;
|
speed_up = false;
|
||||||
speed_down = false;
|
speed_down = false;
|
||||||
signal_strength = true;
|
signal_strength = true;
|
||||||
@@ -122,7 +110,7 @@ in {
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
block = "battery";
|
block = "battery";
|
||||||
device = batteryBlock;
|
device = batteryName;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
block = "sound";
|
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";
|
||||||
|
}
|
||||||
361
lib/playlists.nix
Normal file
361
lib/playlists.nix
Normal file
@@ -0,0 +1,361 @@
|
|||||||
|
let
|
||||||
|
di-fm-key = builtins.readFile <secrets/di.fm/key>;
|
||||||
|
|
||||||
|
soma-fm = name: {
|
||||||
|
url = "http://ice1.somafm.com/${name}-128-aac";
|
||||||
|
provider = "soma.fm";
|
||||||
|
inherit name;
|
||||||
|
};
|
||||||
|
di-fm = name: {
|
||||||
|
url = "http://prem2.di.fm/${name}_hi?${di-fm-key}";
|
||||||
|
provider = "di.fm";
|
||||||
|
inherit name;
|
||||||
|
};
|
||||||
|
big-fm = name: {
|
||||||
|
url = "https://streams.bigfm.de/bigfm-${name}-128-aac";
|
||||||
|
provider = "big.fm";
|
||||||
|
inherit name;
|
||||||
|
};
|
||||||
|
we-are-one = name: {
|
||||||
|
url = "http://listen.${name}.fm/tunein-aac-hd-pls";
|
||||||
|
provider = "WeAreOne";
|
||||||
|
inherit name;
|
||||||
|
};
|
||||||
|
rte = name: {
|
||||||
|
url = "https://www.rte.ie/manifests/${name}.m3u8";
|
||||||
|
provider = "Raidió Teilifís Éireann";
|
||||||
|
inherit name;
|
||||||
|
};
|
||||||
|
laut-fm = name: {
|
||||||
|
url = "http://stream.laut.fm/${name}";
|
||||||
|
provider = "laut.fm";
|
||||||
|
inherit name;
|
||||||
|
};
|
||||||
|
rautemusik = name: {
|
||||||
|
url = "http://${name}-high.rautemusik.fm/";
|
||||||
|
provider = "rautemusik.fm";
|
||||||
|
inherit name;
|
||||||
|
};
|
||||||
|
radiosai = name: port: {
|
||||||
|
url = "http://stream.radiosai.net:${toString port}";
|
||||||
|
provider = "Radio Sai";
|
||||||
|
inherit name;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
Chill = {
|
||||||
|
description = "Kühlen.";
|
||||||
|
tracks = [
|
||||||
|
{
|
||||||
|
url = "https://radio.lassul.us/radio.ogg";
|
||||||
|
name = "Radio";
|
||||||
|
provider = "lassulus";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://streamer.radio.co/s2c3cc784b/listen";
|
||||||
|
name = "Radio";
|
||||||
|
provider = "electroswing-radio.com";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://manifest.googlevideo.com/api/manifest/hls_playlist/expire/1606225326/ei/Tbm8X_LDOsLd1gKi-rVA/ip/2001:16b8:c2aa:1100:492d:381c:2efa:7e32/id/5qap5aO4i9A.0/itag/96/source/yt_live_broadcast/requiressl/yes/ratebypass/yes/live/1/goi/160/sgoap/gir%3Dyes%3Bitag%3D140/sgovp/gir%3Dyes%3Bitag%3D137/hls_chunk_host/r2---sn-8xgn5uxa-cxge.googlevideo.com/playlist_duration/30/manifest_duration/30/vprv/1/playlist_type/DVR/initcwndbps/13080/mh/30/mm/44/mn/sn-8xgn5uxa-cxge/ms/lva/mv/m/mvi/2/pcm2cms/yes/pl/40/dover/11/keepalive/yes/beids/9466585/mt/1606203379/sparams/expire,ei,ip,id,itag,source,requiressl,ratebypass,live,goi,sgoap,sgovp,playlist_duration,manifest_duration,vprv,playlist_type/sig/AOq0QJ8wRgIhAO_wKhb-NVX96XUsdZ_0towJsCs_VToFoi5CgUIOE45NAiEA48XX0D4HP-6ym_4nB6GSx_szjmZsYIzP8VRRTWMaD1o%3D/lsparams/hls_chunk_host,initcwndbps,mh,mm,mn,ms,mv,mvi,pcm2cms,pl/lsig/AG3C_xAwRAIgdsMa8V_pRLQKIIqBCjb-IUEoUheXL0-rlDiICHNKIC0CIHtvYseocMA1hfmQoX9J9rSlBW19Nl_52j0tmVeSBy-J/playlist/index.m3u8";
|
||||||
|
# obtained using `youtube-dl -g https://www.youtube.com/watch?v=5qap5aO4i9A`
|
||||||
|
name = "lofi hip hop radio - beats to relax/study to";
|
||||||
|
provider = "ChilledCow";
|
||||||
|
}
|
||||||
|
(rautemusik "study")
|
||||||
|
(big-fm "reggaevibes")
|
||||||
|
(big-fm "sunsetlounge")
|
||||||
|
(di-fm "ambient")
|
||||||
|
(di-fm "chilledm")
|
||||||
|
(di-fm "chillhop")
|
||||||
|
(di-fm "chillntropicalhouse")
|
||||||
|
(di-fm "chillout")
|
||||||
|
(di-fm "chilloutdreams")
|
||||||
|
(di-fm "chillstep")
|
||||||
|
(di-fm "deephouse")
|
||||||
|
(di-fm "deepprogressivehouse")
|
||||||
|
(di-fm "downtempolounge")
|
||||||
|
(di-fm "dub") # An emphasis on the bass and drums / DnB, delayed effects, sampled vocals and smokey Reggae inspired vibes.
|
||||||
|
(di-fm "indiebeats") # Smooth, groovy and full of cutting-edge, fresh ideas - beats to kick back and enjoy far from the club setting.
|
||||||
|
(di-fm "liquidtrap") # The smoother side of Trap but still packed with mechanical grooves and hip hop moods.
|
||||||
|
(di-fm "lofihiphop")
|
||||||
|
(di-fm "lofiloungenchill")
|
||||||
|
(di-fm "lounge")
|
||||||
|
(di-fm "melodicprogressive")
|
||||||
|
(di-fm "psybient") # The psychedelic side of ambient.
|
||||||
|
(di-fm "psychill")
|
||||||
|
(di-fm "psydub")
|
||||||
|
(di-fm "spacemusic") # Ambient space music for expanding minds.
|
||||||
|
(di-fm "trap")
|
||||||
|
(di-fm "vocalchillout")
|
||||||
|
(di-fm "vocallounge")
|
||||||
|
(soma-fm "beatblender") # A late night blend of deep-house and downtempo chill.
|
||||||
|
(soma-fm "deepspaceone") # Deep ambient electronic, experimental and space music. For inner and outer space exploration.
|
||||||
|
(soma-fm "digitalis") # Digitally affected analog rock to calm the agitated heart.
|
||||||
|
(soma-fm "dronezone") # Served best chilled, safe with most medications. Atmospheric textures with minimal beats.
|
||||||
|
(soma-fm "fluid") # Drown in the electronic sound of instrumental hiphop, future soul and liquid trap.
|
||||||
|
(soma-fm "indiepop") # New and classic favorite indie pop tracks.
|
||||||
|
(soma-fm "lush") # Sensuous and mellow vocals, mostly female, with an electronic influence.
|
||||||
|
(soma-fm "missioncontrol") # Celebrating NASA and Space Explorers everywhere.
|
||||||
|
(soma-fm "reggae") # NEW! Reggae, Ska, Rocksteady classic and deep tracks.
|
||||||
|
(soma-fm "sf1033") # Ambient music mixed with the sounds of San Francisco public safety radio traffic.
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
Brennpunkt = {
|
||||||
|
description = "What focus means.";
|
||||||
|
tracks = [ # What Focus Means
|
||||||
|
(laut-fm "dnbzone")
|
||||||
|
(di-fm "atmosphericbreaks")
|
||||||
|
(di-fm "bigbeat") # Heavily focused on breakbeats and dusty samples. A defining 90s musical movement still going strong today.
|
||||||
|
(di-fm "darkdnb") # Evil, gritty and twisted DnB / Drum & Bass. at 160+ BPM, hear the darkest basslines and the hardest hitting percussion.
|
||||||
|
(di-fm "deeptech")
|
||||||
|
(di-fm "drumandbass")
|
||||||
|
(di-fm "drumstep") # A hybrid of half-time Dubstep and intense Drum and Bass / DnB.
|
||||||
|
(di-fm "dubstep")
|
||||||
|
(di-fm "dubtechno") # The beloved sounds of deep techno saturated with tape delays, heavy reverb and ice cold atmospherics.
|
||||||
|
(di-fm "futuregarage") # 2step Garage rhythms, chunky bass line driven grooves and plenty of forward thinking innovation.
|
||||||
|
(di-fm "jungle") # Jungle keeps the breakbeat tempos high and celebrates the diverse ideas found within urban and rave music.
|
||||||
|
(di-fm "liquiddnb")
|
||||||
|
(di-fm "liquiddubstep")
|
||||||
|
(di-fm "minimal")
|
||||||
|
(di-fm "oldschoolacid") # Acid, one of the characteristics of the TB-303, is celebrated here with the best tracks from house, techno and trance.
|
||||||
|
(di-fm "progressive")
|
||||||
|
(di-fm "techhouse")
|
||||||
|
(di-fm "techno")
|
||||||
|
(di-fm "umfradio")
|
||||||
|
(soma-fm "defcon") # Music for Hacking. The DEF CON Year-Round Channel.
|
||||||
|
(soma-fm "dubstep") # Dubstep, Dub and Deep Bass. May damage speakers at high volume.
|
||||||
|
(soma-fm "groovesalad") # A nicely chilled plate of ambient/downtempo beats and grooves.
|
||||||
|
(soma-fm "gsclassic") # The classic (early 2000s) version of a nicely chilled plate of ambient/downtempo beats and grooves.
|
||||||
|
(soma-fm "secretagent") # The soundtrack for your stylish, mysterious, dangerous life. For Spies and PIs too!
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
Post-Musicality = {
|
||||||
|
description = "Makes you wonder whether you are listening to music at all.";
|
||||||
|
tracks = [
|
||||||
|
(rautemusik "wackenradio")
|
||||||
|
(di-fm "classicelectronica")
|
||||||
|
(di-fm "darkpsytrance") # The darker form of PsyTrance, which is a sound all its own – direct from Goa to your headphones.
|
||||||
|
(di-fm "gabber") # The hardest form of techno with punishing tracks designed to drive the crowds into a sweaty frenzy.
|
||||||
|
(di-fm "goapsy")
|
||||||
|
(di-fm "hardtechno") # Tough as nails warehouse jams full of cold aggression, sinister structures and pounding rhythms that hit hard.
|
||||||
|
(di-fm "progressivepsy")
|
||||||
|
(di-fm "undergroundtechno") # From gritty Berlin streets to dark corners of Brooklyn, this is techno made by artists pushing the genre further.
|
||||||
|
(soma-fm "cliqhop") # Blips'n'beeps backed mostly w/beats. Intelligent Dance Music.
|
||||||
|
(soma-fm "metal") # From black to doom, prog to sludge, thrash to post, stoner to crossover, punk to industrial.
|
||||||
|
(we-are-one "coretime")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Club Albrecht" = {
|
||||||
|
description = "Party!";
|
||||||
|
tracks = [
|
||||||
|
(rautemusik "club")
|
||||||
|
(rautemusik "house")
|
||||||
|
(rautemusik "bass")
|
||||||
|
(rautemusik "breakz")
|
||||||
|
(laut-fm "electro-swing")
|
||||||
|
(big-fm "dance")
|
||||||
|
(big-fm "groovenight")
|
||||||
|
(big-fm "nitroxdeep")
|
||||||
|
(big-fm "nitroxedm")
|
||||||
|
(big-fm "urbanclubbeats")
|
||||||
|
(di-fm "00sclubhits")
|
||||||
|
(di-fm "bassline") # Blending together elements of house music, speed garage, and techno – it’s all about the low end frequencies.
|
||||||
|
(di-fm "bassnjackinhouse") # From the funkiest grooves to the dirtiest beats. Hard-hitting, high energy 4/4 club cuts to move the masses.
|
||||||
|
(di-fm "bigroomhouse") # Fusing together house elements from the past and the present - prime time music full of uplifting high energy.
|
||||||
|
(di-fm "classiceurodance")
|
||||||
|
(di-fm "club")
|
||||||
|
(di-fm "clubdubstep")
|
||||||
|
(di-fm "deepnudisco")
|
||||||
|
(di-fm "detroithousentechno") # Where would dance music be without Detroit? The city that started it all continues to inspire and educate.
|
||||||
|
(di-fm "discohouse")
|
||||||
|
(di-fm "djmixes")
|
||||||
|
(di-fm "edm")
|
||||||
|
(di-fm "edmfestival")
|
||||||
|
(di-fm "electrohouse")
|
||||||
|
(di-fm "electronicpioneers") # The trailblazers, the renegades and the experimental musicians who gave early inspiration with electronic instruments.
|
||||||
|
(di-fm "electroswing") # The combination of 1920s-1940s jazz and swing music, big band horns and modern day electro house.
|
||||||
|
(di-fm "eurodance")
|
||||||
|
(di-fm "funkyhouse")
|
||||||
|
(di-fm "futurebass") # Hard basslines, booming beats and insatiable grooves. Inspired by Trap, Juke and Garage - molded together into a unique booming style.
|
||||||
|
(di-fm "futuresynthpop") # Finest selection of futurepop and synthpop.
|
||||||
|
(di-fm "glitchhop") # The sound of digital malfunctions, electric hum and bit rate distortions perfectly placed alongside laid-back hip hop beats.
|
||||||
|
(di-fm "handsup") # A channel showcasing everything from hard dance, trance and happy hardcore to lift the spirits (and the arms).
|
||||||
|
(di-fm "hardcore") # Strictly for the hardcore. These are the biggest and boldest bangers, and the hardest hitting tracks.
|
||||||
|
(di-fm "harddance") # Concrete kicks and punching rhythms, hard dance is a tougher side of music with sharp edges and aggressive power.
|
||||||
|
(di-fm "hardstyle") # Hard techno & hardcore. A global phenomenon with powerful kicks, distorted effects and infectious melodies.
|
||||||
|
(di-fm "house")
|
||||||
|
(di-fm "indiedance")
|
||||||
|
(di-fm "jazzhouse") # One of the biggest cultural soundtracks with the infectious thump of house music. Expect sultry saxophones, trumpets, and finger snapping grooves.
|
||||||
|
(di-fm "latinhouse") # The sounds of Salsa, Brazilian beats and Latin Jazz with the steady grooves of modern East Coast dance music.
|
||||||
|
(di-fm "nightcore") # Pitched up vocals, happy hardcore beats, and high energy music non-stop.
|
||||||
|
(di-fm "nudisco") # Modern disco music blending the familiar funk of the 70s and 80s with futuristic beats and up to date grooves.
|
||||||
|
(di-fm "oldschoolhouse") # The biggest classics and secret weapons – this is a true treasure chest of house tracks from back in the day.
|
||||||
|
(di-fm "oldschoolrave") # Grab your whistles, white gloves and reach for the laser beams. This is the sound of raving when raving was new.
|
||||||
|
(di-fm "soulfulhouse") # House music saturated with feeling – full of melodies, vocals and true soul. Steady warm 4/4 vibes.
|
||||||
|
(di-fm "summerchillhouse")
|
||||||
|
(di-fm "tribalhouse") # The percussive side of the house and tech house scene, tribal house takes drums and puts them in the forefront.
|
||||||
|
(di-fm "vocalhouse")
|
||||||
|
(soma-fm "poptron") # Electropop and indie dance rock with sparkle and pop.
|
||||||
|
(soma-fm "spacestation") # Tune in, turn on, space out. Spaced-out ambient and mid-tempo electronica.
|
||||||
|
(we-are-one "clubtime")
|
||||||
|
(we-are-one "hardbase")
|
||||||
|
(we-are-one "housetime")
|
||||||
|
(we-are-one "teatime")
|
||||||
|
(we-are-one "technobase")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
HipHop = {
|
||||||
|
description = "";
|
||||||
|
tracks = [
|
||||||
|
(rautemusik "deutschrap-charts")
|
||||||
|
(rautemusik "deutschrap-classic")
|
||||||
|
(big-fm "deutschrap")
|
||||||
|
(big-fm "hiphop")
|
||||||
|
(big-fm "oldschool")
|
||||||
|
(big-fm "oldschooldeutsch")
|
||||||
|
(big-fm "rapfeature")
|
||||||
|
(big-fm "usrap")
|
||||||
|
# (di-fm "breaks") # Inspired by hip hop and UK rave music, breaks features broken up drum loops and creative samples, synths and fx.
|
||||||
|
(rte "pulse")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
Wave = {
|
||||||
|
description = "";
|
||||||
|
tracks = [
|
||||||
|
(di-fm "classiceurodisco") # Conceived in the European discos in the 70s, evolving through the decades into modern electronic masterpieces.
|
||||||
|
(di-fm "electropop") # Catchy pop music blended together with vintage synthesizers and electronic instrumentation.
|
||||||
|
(di-fm "synthwave")
|
||||||
|
(soma-fm "seventies") # Mellow album rock from the Seventies. Yacht not required.
|
||||||
|
(soma-fm "u80s") # Early 80s UK Synthpop and a bit of New Wave.
|
||||||
|
(soma-fm "vaporwaves") # All Vaporwave. All the time.
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
Trance = {
|
||||||
|
description = "";
|
||||||
|
tracks = [
|
||||||
|
(laut-fm "uplifting-trance-radio")
|
||||||
|
(rautemusik "trance")
|
||||||
|
(di-fm "classictrance")
|
||||||
|
(di-fm "classicvocaltrance")
|
||||||
|
(di-fm "epictrance")
|
||||||
|
(di-fm "trance")
|
||||||
|
(di-fm "vocaltrance")
|
||||||
|
(soma-fm "thetrip") # Progressive house / trance. Tip top tunes.
|
||||||
|
(we-are-one "trancebase")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
i18n = {
|
||||||
|
description = "Country and culture specific music.";
|
||||||
|
tracks = [
|
||||||
|
{
|
||||||
|
url = "http://62.210.24.124:8379/;stream.mp3"; # Gjirokastër
|
||||||
|
provider = "Alpomedia";
|
||||||
|
name = "Gjirokastër";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "http://iphone.live24.gr/derty1000"; # derti – μόνο λαϊκά
|
||||||
|
name = "μόνο λαϊκά";
|
||||||
|
provider = "Derti";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
url = "https://knr.gl/radiolivestream"; # kalaallit nunaata radioa
|
||||||
|
provider = "KNR";
|
||||||
|
name = "Kalaallit Nunaata Radioa";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
provider = "VahonFM";
|
||||||
|
name = "Hindustani";
|
||||||
|
url = "http://94.23.148.11:8058/";
|
||||||
|
}
|
||||||
|
(radiosai "Asia" 8002)
|
||||||
|
(radiosai "Ameri" 8006)
|
||||||
|
(radiosai "Bhajan" 8000)
|
||||||
|
(big-fm "balkan")
|
||||||
|
(big-fm "latinbeats")
|
||||||
|
(big-fm "orient")
|
||||||
|
(big-fm "russia")
|
||||||
|
(big-fm "turkey")
|
||||||
|
(big-fm "worldbeats")
|
||||||
|
(di-fm "russianclubhits")
|
||||||
|
(rautemusik "partyhits")
|
||||||
|
(rautemusik "volksmusik")
|
||||||
|
(rte "rnag") # Raidió na Gaeltachta
|
||||||
|
(soma-fm "bootliquor") # Americana Roots music for Cowhands, Cowpokes and Cowtippers
|
||||||
|
(soma-fm "suburbsofgoa") # Desi-influenced Asian world beats and beyond.
|
||||||
|
(soma-fm "thistle") # Exploring music from Celtic roots and branches
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
Out-There = {
|
||||||
|
description = "Music that is very out-there.";
|
||||||
|
tracks = [
|
||||||
|
{
|
||||||
|
url = "http://klassikr.streamabc.net/klassikradio-simulcast-mp3-hq"; # Klassikradio
|
||||||
|
name = "Klassikradio";
|
||||||
|
provider = "Klassik Radio GmbH & Co. KG";
|
||||||
|
}
|
||||||
|
# "http://stream.klassikradio.de/live/mp3-192/stream.klassikradio.de"
|
||||||
|
# (soma-fm "scanner") # San Francisco Public Safety Scanner Feed
|
||||||
|
(rautemusik "rock")
|
||||||
|
(rautemusik "12punks")
|
||||||
|
(rte "2xm") # Alternative
|
||||||
|
(rte "gold") # Oldies
|
||||||
|
(rte "lyric") # "Classical and specialist music"
|
||||||
|
(soma-fm "7soul") # Vintage soul tracks from the original 45 RPM vinyl.
|
||||||
|
(soma-fm "bagel") # What alternative rock radio should sound like. [explicit]
|
||||||
|
(soma-fm "brfm") # From the Playa to the world, for the annual Burning Man festival.
|
||||||
|
(soma-fm "covers") # Just covers. Songs you know by artists you don't. We've got you covered.
|
||||||
|
(soma-fm "folkfwd") # Indie Folk, Alt-folk and the occasional folk classics.
|
||||||
|
(soma-fm "illstreet") # Classic bachelor pad, playful exotica and vintage music of tomorrow.
|
||||||
|
(soma-fm "live") # Special Live Events and rebroadcasts of past live events
|
||||||
|
(soma-fm "sonicuniverse") # Transcending the world of jazz with eclectic, avant-garde takes on tradition.
|
||||||
|
(soma-fm "specials") # For Halloween: Dark industrial/ambient music for tortured souls.
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
Weihnacht = {
|
||||||
|
description = "";
|
||||||
|
tracks = [
|
||||||
|
(soma-fm "christmas") # Chilled holiday grooves and classic winter lounge tracks. (Kid and Parent safe!)
|
||||||
|
(soma-fm "jollysoul") # Where we cut right to the soul of the season.
|
||||||
|
(soma-fm "xmasinfrisko") # SomaFM's wacky and eclectic holiday mix. Not for the easily offended.
|
||||||
|
(soma-fm "xmasrocks") # Have your self an indie/alternative holiday season!
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
Charts = {
|
||||||
|
description = "";
|
||||||
|
tracks = [
|
||||||
|
(rautemusik "main")
|
||||||
|
(rautemusik "workout")
|
||||||
|
(rautemusik "jam")
|
||||||
|
(rautemusik "charthits")
|
||||||
|
(rautemusik "top40")
|
||||||
|
{
|
||||||
|
url = "http://185.80.220.12:8166/stream"; # "Raidió Rírá"
|
||||||
|
name = "Raidió Rí-Rá";
|
||||||
|
provider = "Conradh na Gaeilge";
|
||||||
|
}
|
||||||
|
(big-fm "charts")
|
||||||
|
(big-fm "deutschland")
|
||||||
|
(big-fm "mashup")
|
||||||
|
(rte "2fm")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
Talk = {
|
||||||
|
description = "";
|
||||||
|
tracks = [
|
||||||
|
(rte "radio1")
|
||||||
|
(rte "radio1extra")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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"; };
|
options.niveum.dropbox = { enable = mkEnableOption "Dropbox"; };
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = [ pkgs.dropbox-cli ];
|
||||||
|
|
||||||
|
networking.firewall = {
|
||||||
|
allowedTCPPorts = [ 17500 ];
|
||||||
|
allowedUDPPorts = [ 17500 ];
|
||||||
|
};
|
||||||
|
|
||||||
systemd.user.services.dropbox = {
|
systemd.user.services.dropbox = {
|
||||||
description = "Dropbox synchronisation service";
|
description = "Dropbox synchronisation service";
|
||||||
after = [ "network.target" ];
|
wantedBy = [ "graphical-session.target" ];
|
||||||
wantedBy = [ "default.target" ];
|
|
||||||
path = [ pkgs.dropbox-cli ];
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "forking";
|
ExecStart = "${pkgs.dropbox.out}/bin/dropbox";
|
||||||
PIDFile = "%h/.dropbox/dropbox.pid";
|
ExecReload = "${pkgs.coreutils.out}/bin/kill -HUP $MAINPID";
|
||||||
Restart = "always";
|
KillMode = "control-group"; # upstream recommends process
|
||||||
ExecStart = "${pkgs.dropbox-cli}/bin/dropbox start";
|
Restart = "on-failure";
|
||||||
ExecStop = "${pkgs.dropbox-cli}/bin/dropbox stop";
|
PrivateTmp = true;
|
||||||
|
ProtectSystem = "full";
|
||||||
|
Nice = 10;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
|
stockholm-systems =
|
||||||
|
let systemsDir = <stockholm> + "/krebs/1systems";
|
||||||
|
in genAttrs
|
||||||
|
(attrNames (filterAttrs (_: value: value == "directory") (builtins.readDir systemsDir)))
|
||||||
|
(name: import <nixpkgs/nixos> {
|
||||||
|
configuration = import (systemsDir + "/${name}/config.nix");
|
||||||
|
});
|
||||||
|
|
||||||
|
hostsPackage = stockholm-systems.filebitch.config.krebs.tinc.retiolum.hostsPackage;
|
||||||
|
|
||||||
netname = "retiolum";
|
netname = "retiolum";
|
||||||
cfg = config.networking.retiolum;
|
cfg = config.networking.retiolum;
|
||||||
|
|
||||||
retiolum = pkgs.fetchFromGitHub {
|
|
||||||
owner = "krebs";
|
|
||||||
repo = netname;
|
|
||||||
rev = "76e8de36d4ac06bcfaf551946aa2f6a41d9e6555";
|
|
||||||
sha256 = "0yhmmvg6gm5yxs1gzszl19bs6y302yjg81a7sckfglwzcql3q0wf";
|
|
||||||
};
|
|
||||||
in {
|
in {
|
||||||
options = {
|
options = {
|
||||||
networking.retiolum.ipv4 = mkOption {
|
networking.retiolum.ipv4 = mkOption {
|
||||||
@@ -44,13 +45,20 @@ in {
|
|||||||
AutoConnect = yes
|
AutoConnect = yes
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# environment.etc."tinc/retiolum".source = hostsPackage;
|
||||||
|
|
||||||
systemd.services."tinc.${netname}" = {
|
systemd.services."tinc.${netname}" = {
|
||||||
preStart = ''
|
preStart = ''
|
||||||
cp -R ${toString <retiolum/hosts>} /etc/tinc/retiolum/ || true
|
set -eu
|
||||||
|
|
||||||
|
mkdir -p /etc/tinc/${netname}/hosts/
|
||||||
|
cp ${hostsPackage}/* /etc/tinc/${netname}/hosts/
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.extraHosts =
|
networking.extraHosts =
|
||||||
|
# TODO generate from stockholm
|
||||||
builtins.readFile (toString <retiolum/etc.hosts>);
|
builtins.readFile (toString <retiolum/etc.hosts>);
|
||||||
|
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
|
|||||||
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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{ fetchzip, symlinkJoin, lib, scardanelli ? false }:
|
{ fetchzip, symlinkJoin, lib }:
|
||||||
let
|
let
|
||||||
gfs-font = name: sha256:
|
gfs-font = name: sha256:
|
||||||
fetchzip {
|
fetchzip {
|
||||||
@@ -17,34 +17,21 @@ in symlinkJoin {
|
|||||||
GFS_Baskerville = "07gx5b9b43zv74d2lay37sajd4ba2wqn3b7xzvyhn265ds9x7cxk";
|
GFS_Baskerville = "07gx5b9b43zv74d2lay37sajd4ba2wqn3b7xzvyhn265ds9x7cxk";
|
||||||
GFS_Bodoni = "0jhl0728ikzha1krm01sk52nz3jzibidwmyvgidg61d87l8nbf2p";
|
GFS_Bodoni = "0jhl0728ikzha1krm01sk52nz3jzibidwmyvgidg61d87l8nbf2p";
|
||||||
GFS_Bodoni_Classic = "06jw2irskn75s50mgwkx08rzwqi82gpc6lgjsimsi8p81566gfrh";
|
GFS_Bodoni_Classic = "06jw2irskn75s50mgwkx08rzwqi82gpc6lgjsimsi8p81566gfrh";
|
||||||
GFS_Complutum =
|
GFS_Complutum = "1q7dxs2z3yrgchd2pz9h72mjrk62kdc2mmqw8kg9q76k28f8n3p0"; # -> GFSPolyglot.otf
|
||||||
"1q7dxs2z3yrgchd2pz9h72mjrk62kdc2mmqw8kg9q76k28f8n3p0"; # -> GFSPolyglot.otf
|
|
||||||
GFS_Decker = "016v1j5n9ph4i2cpmlk26pcxhp3q2fjwlaryppd5akl84dfkpncl";
|
GFS_Decker = "016v1j5n9ph4i2cpmlk26pcxhp3q2fjwlaryppd5akl84dfkpncl";
|
||||||
GFS_Didot = "0ysvrp527wm0wxfp6wmlgmxfx7ysr5mwpmjmqp1h605cy44jblfm";
|
GFS_Didot = "0ysvrp527wm0wxfp6wmlgmxfx7ysr5mwpmjmqp1h605cy44jblfm";
|
||||||
GFS_Didot_Classic = "0n5awqksvday3l3d85yhwmbmfj9bcpxivy4wpd4zrkgl7b85af2c";
|
GFS_Didot_Classic = "0n5awqksvday3l3d85yhwmbmfj9bcpxivy4wpd4zrkgl7b85af2c";
|
||||||
GFS_Didot_Display = if scardanelli then
|
GFS_Didot_Display = "0n2di2zyc76w6f8mc6hfilc2ir6igks7ldjp9fkw1gjp06330fi7";
|
||||||
"0n2di2zyc76w6f8mc6hfilc2ir6igks7ldjp9fkw1gjp06330fi7"
|
|
||||||
else
|
|
||||||
"0gg5xb8jic646gz9p05ry62nk7w0k546fxp5p4vvnawmckql2dj1";
|
|
||||||
GFS_Elpis = "02l7wd3nbn1kpv7ghxh19k4dbvd49ijyxd6gq83gcr9vlmxcq2s2";
|
GFS_Elpis = "02l7wd3nbn1kpv7ghxh19k4dbvd49ijyxd6gq83gcr9vlmxcq2s2";
|
||||||
GFS_Gazis = "0x9iwj6pinaykrds0iw6552hf256d0dr41sipdb1jnnlr2d3bf9w";
|
GFS_Gazis = "0x9iwj6pinaykrds0iw6552hf256d0dr41sipdb1jnnlr2d3bf9w";
|
||||||
GFS_Goschen = "1jvbn33wzq2yj0aygwy9pd2msg3wkmdp0npjzazadrmfjpnpkcy9";
|
GFS_Goschen = "1jvbn33wzq2yj0aygwy9pd2msg3wkmdp0npjzazadrmfjpnpkcy9";
|
||||||
GFS_NeoHellenic = "1ixm2frdc6i5lbn9h0h4gdsvsw2k4hny75q8ig4kgs28ac3dbzq3";
|
GFS_NeoHellenic = "1ixm2frdc6i5lbn9h0h4gdsvsw2k4hny75q8ig4kgs28ac3dbzq3";
|
||||||
GFS_Olga = "0f05ng02na84x9x6yhskxqwxwyabjisyl8a0k3fiah60i620p39d";
|
GFS_Olga = "1qaxaw3ngnbr1gb1xyk5f2z647zklg6sl3bqwi28l47j9mp0f8aj";
|
||||||
GFS_Orpheus = if scardanelli then
|
GFS_Orpheus = "18n6fag4pyr8jdwnsz0vixf47jz4ym8mjmppc1w3k7v27cg1z9dz";
|
||||||
"18n6fag4pyr8jdwnsz0vixf47jz4ym8mjmppc1w3k7v27cg1z9dz"
|
GFS_Orpheus_Classic = "1rqy1kf7slw56zfhbv264yzarjisnqbqydj4f7hghiknhnmdakps";
|
||||||
else
|
GFS_Orpheus_Sans = "02rh7z8c3h3xyfi52rn47z4finizx636d05bg5g23v0l0mqs6nkg";
|
||||||
"1rvjpvk1fx55vyp3dyxcbww1a24rm7xv5faqs735yf6lqzpkqnax";
|
|
||||||
GFS_Orpheus_Classic = if scardanelli then
|
|
||||||
"1rqy1kf7slw56zfhbv264yzarjisnqbqydj4f7hghiknhnmdakps"
|
|
||||||
else
|
|
||||||
"0d2yzwg6albmgl1d0xhsfrmxj79r42wp712rpry567nv1ry42k0a";
|
|
||||||
GFS_Orpheus_Sans = if scardanelli then
|
|
||||||
"02rh7z8c3h3xyfi52rn47z4finizx636d05bg5g23v0l0mqs6nkg"
|
|
||||||
else
|
|
||||||
"1rdlm2kmkvi4y3ii68ik8k3w3183vvb3q2pnk04lbb0ggg9w5jdb";
|
|
||||||
GFS_Philostratos = "0zh3d0cn6b2fjbwnvmg379z20zh7w626w2bnj19xcazjvqkwhzx1";
|
GFS_Philostratos = "0zh3d0cn6b2fjbwnvmg379z20zh7w626w2bnj19xcazjvqkwhzx1";
|
||||||
GFS_Porson = "0r3snwgxkdx7h34sg3s0hr8fac3rnpllq62bk44m266hj6a80a5k";
|
GFS_Porson = "0c2axagkm6wxv8na2q11k6c5dmgkwx5hn9sh9qy82gbips9blnda";
|
||||||
GFS_Pyrsos = "0y0dv7y3n01bbhhnczflx1zcc7by56cffmr2xqixj2rd1nvchx0j";
|
GFS_Pyrsos = "0y0dv7y3n01bbhhnczflx1zcc7by56cffmr2xqixj2rd1nvchx0j";
|
||||||
GFS_Solomos = "1mpx9mw566awvfjdfx5sbz3wz5gbnjjw56gz30mk1lw06vxf0dxz";
|
GFS_Solomos = "1mpx9mw566awvfjdfx5sbz3wz5gbnjjw56gz30mk1lw06vxf0dxz";
|
||||||
GFS_Theokritos = "0haasx819x8c8yvna6pqywgi4060av2570jm34cddnz1fgnhv1b8";
|
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";
|
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" ''
|
showkeys-toggle = pkgs.writers.writeDashBin "showkeys-toggle" ''
|
||||||
if ${pkgs.procps}/bin/pgrep screenkey; then
|
if ${pkgs.procps}/bin/pgrep screenkey; then
|
||||||
exec ${pkgs.procps}/bin/pkill screenkey
|
exec ${pkgs.procps}/bin/pkill screenkey
|
||||||
@@ -29,6 +49,18 @@ in rec {
|
|||||||
fi
|
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 {
|
tag = wrapScript {
|
||||||
packages = [ pkgs.vorbisTools pkgs.python3Packages.eyeD3 pkgs.nur.repos.kmein.opustags ];
|
packages = [ pkgs.vorbisTools pkgs.python3Packages.eyeD3 pkgs.nur.repos.kmein.opustags ];
|
||||||
script = "${voidrice}/.local/bin/tag";
|
script = "${voidrice}/.local/bin/tag";
|
||||||
|
|||||||
20
packages/scripts/mail-kill.sh
Normal file
20
packages/scripts/mail-kill.sh
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
set -efu
|
||||||
|
|
||||||
|
if ! notmuch search --exclude=false tag:deleted | tac | grep .; then
|
||||||
|
echo 'No killed mail.'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf 'want do rm these mail? [y/N] '
|
||||||
|
read REPLY
|
||||||
|
case "$REPLY" in
|
||||||
|
y|Y) :;; # continue
|
||||||
|
*)
|
||||||
|
echo 'abort.'
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
notmuch search --output=files --exclude=false tag:deleted | xargs -l rm -v
|
||||||
|
notmuch new
|
||||||
93
packages/scripts/nix-haddock-index
Executable file
93
packages/scripts/nix-haddock-index
Executable file
@@ -0,0 +1,93 @@
|
|||||||
|
#! /usr/bin/env nix-shell
|
||||||
|
#! nix-shell -i bash -p coreutils gnugrep gnused graphviz
|
||||||
|
#
|
||||||
|
# usage: nix-haddock-index
|
||||||
|
#
|
||||||
|
# Run this script in an environment where either NIX_GHC is set, or the ghc
|
||||||
|
# executable exists, to generate an HTML index file pointing to all Haddock
|
||||||
|
# files accessible to the respective ghc version.
|
||||||
|
#
|
||||||
|
# Additionally, an SVG dependency graph of all packages is linked at the
|
||||||
|
# bottom of the index file.
|
||||||
|
#
|
||||||
|
# Note: all files will be generated in /tmp, and won't be deleted automatically
|
||||||
|
#
|
||||||
|
|
||||||
|
set -efux
|
||||||
|
|
||||||
|
if test -z "${NIX_GHC-}"; then
|
||||||
|
NIX_GHC=$(readlink -f "$(type -P ghc)")
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! echo $NIX_GHC | grep -q '^/nix/store/'; then
|
||||||
|
printf '%s: error: unsupported GHC executable path (not in Nix store): %q\n' \
|
||||||
|
"$0" \
|
||||||
|
"$NIX_GHC" \
|
||||||
|
>&2
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
NIX_GHC_PREFIX=$(dirname "$(dirname "$NIX_GHC")")
|
||||||
|
NIX_GHC_DOCDIR=$NIX_GHC_PREFIX/share/doc/ghc/html
|
||||||
|
|
||||||
|
main() {
|
||||||
|
|
||||||
|
hash=$(echo $NIX_GHC_PREFIX | sed -n 's|^/nix/store/\([a-z0-9]\+\).*|\1|p')
|
||||||
|
title="Haddock index for $NIX_GHC_PREFIX"
|
||||||
|
|
||||||
|
header=$(
|
||||||
|
printf 'Haddock index for <a href="%s">%s</a>\n' \
|
||||||
|
$NIX_GHC_PREFIX \
|
||||||
|
$NIX_GHC_PREFIX \
|
||||||
|
)
|
||||||
|
|
||||||
|
suffix=${hash:+-$hash}
|
||||||
|
index_file=/tmp/haddock$suffix-index.html
|
||||||
|
svg_file=/tmp/haddock$suffix.svg
|
||||||
|
|
||||||
|
#if ! test -e $index_file; then
|
||||||
|
eval "$(
|
||||||
|
echo 'gen_index() {'
|
||||||
|
echo ' html_head'
|
||||||
|
"$NIX_GHC_PREFIX"/bin/ghc-pkg dump | sed -n '
|
||||||
|
s/^---$/ reset/p
|
||||||
|
s/^\(name\|version\):\s*\([-A-Za-z0-9_.]\+\)$/ \1=\2/p
|
||||||
|
s/^haddock-html:\s*\([-A-Za-z0-9_./]\+\)$/ haddock_html \1/p
|
||||||
|
'
|
||||||
|
echo ' html_foot'
|
||||||
|
echo '}'
|
||||||
|
)"
|
||||||
|
|
||||||
|
gen_index > $index_file
|
||||||
|
#fi
|
||||||
|
|
||||||
|
#if ! test -e $svg_file; then
|
||||||
|
"$NIX_GHC_PREFIX"/bin/ghc-pkg dot | tred | dot -Tsvg | sed '
|
||||||
|
s/<svg width="[0-9]\+pt" height="[0-9]\+pt"/<svg width="3600px" height="100%"/
|
||||||
|
' > $svg_file
|
||||||
|
#fi
|
||||||
|
|
||||||
|
echo $index_file
|
||||||
|
}
|
||||||
|
reset() {
|
||||||
|
unset name version
|
||||||
|
}
|
||||||
|
haddock_html() {
|
||||||
|
printf '<li>'
|
||||||
|
printf '<a href="%s/index.html">%s</a>' "$1" "$name-$version"
|
||||||
|
printf '</li>\n'
|
||||||
|
}
|
||||||
|
html_head() {
|
||||||
|
printf '<!doctype html>\n'
|
||||||
|
printf '<title>%s</title>\n' "$title"
|
||||||
|
printf '<link href="%s" rel="stylesheet" type="text/css">\n' \
|
||||||
|
"$NIX_GHC_DOCDIR/libraries/ocean.css"
|
||||||
|
printf '<h1>%s</h1>\n' "$header"
|
||||||
|
printf '<ul>\n'
|
||||||
|
}
|
||||||
|
html_foot() {
|
||||||
|
printf '</ul>\n'
|
||||||
|
printf '<a href="%s">graph</a>\n' "$svg_file"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
64
packages/tuner.nix
Normal file
64
packages/tuner.nix
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
{ pkgs, playlists }:
|
||||||
|
let
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
trackHTML = {url, provider, name}: ''
|
||||||
|
<tr>
|
||||||
|
<th>${name}</th>
|
||||||
|
<td><small>${provider}</small></td>
|
||||||
|
<td>
|
||||||
|
<audio controls>
|
||||||
|
<source src="${url}">
|
||||||
|
Your browser does not support the audio tag.
|
||||||
|
</audio>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
'';
|
||||||
|
playlistSection = name: {description, tracks}: ''
|
||||||
|
<section>
|
||||||
|
<header>
|
||||||
|
<h2 id="${lib.strings.sanitizeDerivationName name}">${name}</h2>
|
||||||
|
<p>${description}</p>
|
||||||
|
</header>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Provider</th>
|
||||||
|
<th>Player</th>
|
||||||
|
</thead>
|
||||||
|
${builtins.concatStringsSep "\n\n" (map trackHTML tracks)}
|
||||||
|
</table>
|
||||||
|
</section>
|
||||||
|
'';
|
||||||
|
in pkgs.writeText "tuner.html" ''
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<title>Tuner</title>
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/mvp.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<nav>
|
||||||
|
<a href="#">Tuner</a>
|
||||||
|
<small>kmein's webradio hub</small>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
Playlists
|
||||||
|
<ul>
|
||||||
|
${builtins.concatStringsSep "\n" (lib.mapAttrsToList (name: {...}: ''<li><a href="#${lib.strings.sanitizeDerivationName name}">${name}</a></li>'') playlists)}
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
|
<main>
|
||||||
|
${builtins.concatStringsSep "\n<hr/>\n" (lib.mapAttrsToList playlistSection playlists)}
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<p><small>© kmein 2020</small></p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
''
|
||||||
12
shell.nix
12
shell.nix
@@ -10,11 +10,6 @@ let
|
|||||||
url = "https://github.com/NixOS/nixpkgs.git";
|
url = "https://github.com/NixOS/nixpkgs.git";
|
||||||
path = toString .versions/nixpkgs.json;
|
path = toString .versions/nixpkgs.json;
|
||||||
};
|
};
|
||||||
nixpkgs-unstable = {
|
|
||||||
ref = "refs/heads/master";
|
|
||||||
url = "https://github.com/NixOS/nixpkgs.git";
|
|
||||||
path = toString .versions/nixpkgs-unstable.json;
|
|
||||||
};
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
ref = "refs/heads/release-${release}";
|
ref = "refs/heads/release-${release}";
|
||||||
url = "https://github.com/rycee/home-manager.git";
|
url = "https://github.com/rycee/home-manager.git";
|
||||||
@@ -27,7 +22,7 @@ let
|
|||||||
};
|
};
|
||||||
stockholm = {
|
stockholm = {
|
||||||
ref = "refs/heads/master";
|
ref = "refs/heads/master";
|
||||||
url = "https://cgit.krebsco.de/stockholm";
|
url = "https://github.com/kmein/stockholm";
|
||||||
path = toString .versions/stockholm.json;
|
path = toString .versions/stockholm.json;
|
||||||
};
|
};
|
||||||
retiolum = {
|
retiolum = {
|
||||||
@@ -46,9 +41,7 @@ let
|
|||||||
dependencies;
|
dependencies;
|
||||||
|
|
||||||
in pkgs.mkShell {
|
in pkgs.mkShell {
|
||||||
|
|
||||||
buildInputs = updateScripts ++ [
|
buildInputs = updateScripts ++ [
|
||||||
|
|
||||||
(pkgs.writers.writeDashBin "niveum-update"
|
(pkgs.writers.writeDashBin "niveum-update"
|
||||||
(lib.concatStringsSep " &\n" (lib.mapAttrsToList updateCommand dependencies)))
|
(lib.concatStringsSep " &\n" (lib.mapAttrsToList updateCommand dependencies)))
|
||||||
|
|
||||||
@@ -77,8 +70,5 @@ in pkgs.mkShell {
|
|||||||
printf "\033[1m%11s\033[0m %s\n" "$hostname" "$machine_status"
|
printf "\033[1m%11s\033[0m %s\n" "$hostname" "$machine_status"
|
||||||
done
|
done
|
||||||
'')
|
'')
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
shellHook = "export HISTFILE=${toString ./.history}";
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
{ config, pkgs, lib, ... }: {
|
|
||||||
imports = [
|
|
||||||
<niveum/configs/default.nix>
|
|
||||||
<niveum/configs/kdeconnect.nix>
|
|
||||||
./hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.zeroad pkgs.minecraft ];
|
|
||||||
|
|
||||||
niveum = {
|
|
||||||
batteryBlocks.default = "BAT1";
|
|
||||||
networkInterfaces.wireless = "wlp3s0";
|
|
||||||
promptColours.success = "green";
|
|
||||||
fonts.size = lib.mkForce 11;
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.loader.systemd-boot = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 5;
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
# ref https://askubuntu.com/questions/575020/ubuntu-14-04-brightness-problem-lenovo-z500
|
|
||||||
boot.kernelParams = [ "acpi_backlight=vendor" ];
|
|
||||||
services.xserver.deviceSection = ''
|
|
||||||
Option "Backlight" "ideapad"
|
|
||||||
BusID "PCI:0:2:0"
|
|
||||||
'';
|
|
||||||
|
|
||||||
services.xserver.videoDrivers = [ "intel" ];
|
|
||||||
|
|
||||||
networking.retiolum = {
|
|
||||||
ipv4 = "10.243.2.1";
|
|
||||||
ipv6 = "42:0:3c46:53e:e63d:e62a:56ea:c705";
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.hostName = "homeros";
|
|
||||||
|
|
||||||
system.stateVersion = "18.09";
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }: {
|
|
||||||
imports = [ <nixpkgs/nixos/modules/installer/scan/not-detected.nix> ];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"xhci_pci"
|
|
||||||
"ehci_pci"
|
|
||||||
"ahci"
|
|
||||||
"usbhid"
|
|
||||||
"usb_storage"
|
|
||||||
"sd_mod"
|
|
||||||
"sr_mod"
|
|
||||||
"rtsx_usb_sdmmc"
|
|
||||||
];
|
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/83544ad3-1d23-4c2d-82bc-fafef13a996f";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/8F9E-7556";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices =
|
|
||||||
[{ device = "/dev/disk/by-uuid/5ea3a65e-8fdb-45fb-ad32-3759d991a83a"; }];
|
|
||||||
|
|
||||||
# services.xserver.videoDrivers = [ "nvidia" ];
|
|
||||||
|
|
||||||
nix.maxJobs = lib.mkDefault 4;
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
|
||||||
}
|
|
||||||
63
systems/makanek/configuration.nix
Normal file
63
systems/makanek/configuration.nix
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
{ config, pkgs, ... }:
|
||||||
|
let
|
||||||
|
inherit (import <niveum/lib>) kieran;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
<niveum/configs/codimd.nix>
|
||||||
|
<niveum/configs/spacetime.nix>
|
||||||
|
<niveum/configs/sshd.nix>
|
||||||
|
<niveum/configs/nextcloud.nix>
|
||||||
|
<niveum/configs/save-space.nix>
|
||||||
|
<niveum/configs/version.nix>
|
||||||
|
<niveum/configs/urlwatch.nix>
|
||||||
|
<niveum/configs/gitea.nix>
|
||||||
|
<niveum/configs/matterbridge.nix>
|
||||||
|
<niveum/modules/retiolum.nix>
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.loader.grub.enable = true;
|
||||||
|
boot.loader.grub.version = 2;
|
||||||
|
|
||||||
|
networking.useDHCP = false;
|
||||||
|
networking.interfaces.ens3.useDHCP = true;
|
||||||
|
|
||||||
|
networking.hostName = "makanek";
|
||||||
|
|
||||||
|
system.stateVersion = "20.03";
|
||||||
|
|
||||||
|
boot.loader.grub.devices = [ "/dev/sda" ];
|
||||||
|
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
networking.retiolum = {
|
||||||
|
ipv4 = "10.243.2.84";
|
||||||
|
ipv6 = "42:0:3c46:f7a9:1f0a:1b2b:822a:6050";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.etc."tinc/retiolum/rsa_key.priv" = {
|
||||||
|
text = builtins.readFile <system-secrets/retiolum.key>;
|
||||||
|
mode = "400";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 443 ];
|
||||||
|
|
||||||
|
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";
|
||||||
|
};
|
||||||
|
|
||||||
|
security.acme = {
|
||||||
|
acceptTerms = true;
|
||||||
|
email = kieran.email;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.vim pkgs.git ];
|
||||||
|
}
|
||||||
22
systems/makanek/hardware-configuration.nix
Normal file
22
systems/makanek/hardware-configuration.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ <nixpkgs/nixos/modules/profiles/qemu-guest.nix>
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ata_piix" "virtio_pci" "xhci_pci" "sd_mod" "sr_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/9eaeaaa7-b453-4634-8a69-d416f702d3aa";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
zramSwap.enable = true;
|
||||||
|
|
||||||
|
nix.maxJobs = lib.mkDefault 2;
|
||||||
|
}
|
||||||
54
systems/manakish/configuration.nix
Normal file
54
systems/manakish/configuration.nix
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{
|
||||||
|
imports = [ # Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
<niveum/configs/default.nix>
|
||||||
|
{
|
||||||
|
boot.extraModulePackages = with config.boot.kernelPackages; [
|
||||||
|
tp_smapi
|
||||||
|
acpi_call
|
||||||
|
];
|
||||||
|
boot.kernelModules = [ "tp_smapi" "acpi_call" ];
|
||||||
|
environment.systemPackages = [ pkgs.tpacpi-bat ];
|
||||||
|
|
||||||
|
services.tlp = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
START_CHARGE_THRESH_BAT0 = 80;
|
||||||
|
STOP_CHARGE_THRESH_BAT0 = 95;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
niveum = {
|
||||||
|
batteryName = "BAT0";
|
||||||
|
wirelessInterface = "wlp3s0";
|
||||||
|
promptColours.success = "cyan";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.useDHCP = false;
|
||||||
|
networking.interfaces = {
|
||||||
|
enp0s25.useDHCP = true;
|
||||||
|
wlp3s0.useDHCP = true;
|
||||||
|
wwp0s20u4i6.useDHCP = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
git vim
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.retiolum = {
|
||||||
|
ipv4 = "10.243.2.85";
|
||||||
|
ipv6 = "42:0:3c46:ac99:ae36:cb8:c551:ba27";
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostName = "manakish";
|
||||||
|
|
||||||
|
system.stateVersion = "20.09"; # Did you read the comment?
|
||||||
|
}
|
||||||
40
systems/manakish/hardware-configuration.nix
Normal file
40
systems/manakish/hardware-configuration.nix
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "sd_mod" "sdhci_pci" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/ff47c479-e6d4-4cd6-93f1-9685f4018bc6";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.luks.devices."crypted".device = "/dev/disk/by-uuid/493cb228-c292-4f71-9f38-dcb3e96dec47";
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/D4AC-91B0";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
zramSwap.enable = true;
|
||||||
|
|
||||||
|
boot.loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
version = 2;
|
||||||
|
efiSupport = true;
|
||||||
|
efiInstallAsRemovable = true;
|
||||||
|
device = "/dev/sda";
|
||||||
|
};
|
||||||
|
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
}
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
{ config, pkgs, ... }:
|
|
||||||
let
|
|
||||||
sshKey.rilke =
|
|
||||||
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWRcTILWzSzOAWqwBjJC97K9wKm+pfxk15L5AiTUlUMyBzVQsU+d2jUEe1rmp+kjVXL0qgNMI+eBzEAzaafUMdCPeIkMyeiOlXaYxq8NHApcZUSYV9CmzWqePj8Dlu8uexoF3TJi6tj3mmGM8BY50qkwk4mlT/5xLPPnh/HHyFmoZlj6183Z4vJRnK8UZ6x2gevVaE36lP27MikZ/MQ6/PaHJ5TNZy63rQwzKXw6ZQMx4JU22CwyZqPn1wjlGEkpJFOBKtnypURdVBsPydaZd/I7b/13FMwso2hSUoXqeV6iaeno2FWOrB3cAaFogNWKPRkEacKEE5mQOvLGGdG1Xp u0_a138@localhost";
|
|
||||||
in {
|
|
||||||
imports = [ <niveum/configs/default.nix> ./hardware-configuration.nix ];
|
|
||||||
|
|
||||||
users.users.me.openssh.authorizedKeys.keys = [ sshKey.rilke ];
|
|
||||||
|
|
||||||
niveum = {
|
|
||||||
batteryBlocks.default = "BAT1";
|
|
||||||
networkInterfaces.wireless = "wlp2s0";
|
|
||||||
promptColours.success = "yellow";
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.loader.systemd-boot = {
|
|
||||||
enable = true;
|
|
||||||
configurationLimit = 5;
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
networking.hostName = "scardanelli";
|
|
||||||
|
|
||||||
networking.retiolum = {
|
|
||||||
ipv4 = "10.243.2.2";
|
|
||||||
ipv6 = "42:0:3c46:4007:5bce:f1bc:606b:2b18";
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "18.09";
|
|
||||||
}
|
|
||||||
@@ -1,132 +1,49 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
kmeinKeys = lib.strings.splitString "\n" (lib.strings.fileContents (pkgs.fetchurl {
|
inherit (import <niveum/lib>) kieran;
|
||||||
url = "https://github.com/kmein.keys";
|
|
||||||
sha256 = "1b9gbpgihg7zc89ivsz0gs3najp0zg53rcknvzvkm0851fdzkryx";
|
|
||||||
}));
|
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
./hass
|
|
||||||
./telegram-bots
|
./telegram-bots
|
||||||
|
<niveum/configs/hass>
|
||||||
<niveum/configs/distrobump.nix>
|
<niveum/configs/distrobump.nix>
|
||||||
<niveum/configs/nixpkgs-unstable.nix>
|
<niveum/configs/spacetime.nix>
|
||||||
<niveum/configs/nextcloud.nix>
|
<niveum/configs/sshd.nix>
|
||||||
|
<niveum/configs/moodle-dl.nix>
|
||||||
<niveum/configs/save-space.nix>
|
<niveum/configs/save-space.nix>
|
||||||
|
<niveum/configs/wifi.nix>
|
||||||
<niveum/configs/tmux.nix>
|
<niveum/configs/tmux.nix>
|
||||||
<niveum/configs/version.nix>
|
<niveum/configs/version.nix>
|
||||||
<niveum/configs/traadfri.nix>
|
<niveum/configs/traadfri.nix>
|
||||||
<niveum/modules/retiolum.nix>
|
<niveum/modules/retiolum.nix>
|
||||||
<niveum/modules/telegram-bot.nix>
|
<niveum/modules/telegram-bot.nix>
|
||||||
{
|
{
|
||||||
nixpkgs = {
|
services.rss-bridge.enable = true;
|
||||||
overlays = [ (import <niveum/overlays/toml.nix>) ];
|
|
||||||
config.packageOverrides = pkgs: {
|
|
||||||
writeDash = pkgs.writers.writeDash;
|
|
||||||
writeDashBin = pkgs.writers.writeDashBin;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.matterbridge = {
|
|
||||||
enable = true;
|
|
||||||
configPath = toString (pkgs.writeTOML (import <niveum/dot/matterbridge.nix> {
|
|
||||||
token = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
}
|
|
||||||
{ services.keybase.enable = true; }
|
|
||||||
{
|
|
||||||
systemd.services.irc-bouncer = {
|
|
||||||
description = "IRC bouncer";
|
|
||||||
after = [ "network.target" ];
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
restartIfChanged = false;
|
|
||||||
script = "${pkgs.tmux}/bin/tmux -2 new-session -d -s IRC ${pkgs.weechat}/bin/weechat";
|
|
||||||
preStop = "${pkgs.tmux}/bin/tmux kill-session -t IRC";
|
|
||||||
serviceConfig = {
|
|
||||||
User = "kfm";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
Type = "oneshot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
sound.enable = true;
|
services.weechat.enable = true;
|
||||||
hardware.pulseaudio.enable = true;
|
users.extraUsers.weechat = {
|
||||||
|
useDefaultShell = true;
|
||||||
boot.loader.raspberryPi.firmwareConfig = ''
|
openssh.authorizedKeys.keys = kieran.sshKeys pkgs;
|
||||||
dtparam=audio=on
|
};
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
{
|
|
||||||
imports = [ <stockholm/krebs/3modules/urlwatch.nix> ];
|
|
||||||
|
|
||||||
krebs.urlwatch = {
|
|
||||||
enable = true;
|
|
||||||
onCalendar = "*-*-* 05:00:00";
|
|
||||||
sendmail.enable = false;
|
|
||||||
telegram = {
|
|
||||||
enable = true;
|
|
||||||
chatId = [ "18980945" ];
|
|
||||||
botToken = lib.strings.fileContents <system-secrets/telegram/kmein.token>;
|
|
||||||
};
|
|
||||||
urls = [
|
|
||||||
# "https://michael-klonovsky.de/acta-diurna"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nix.nixPath = [ "/var/src" ];
|
nix.nixPath = [ "/var/src" ];
|
||||||
|
|
||||||
|
|
||||||
boot.loader.grub.enable = false;
|
boot.loader.grub.enable = false;
|
||||||
boot.loader.generic-extlinux-compatible.enable = true;
|
boot.loader.generic-extlinux-compatible.enable = true;
|
||||||
|
|
||||||
networking.hostName = "toum";
|
networking.hostName = "toum";
|
||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
|
||||||
|
|
||||||
networking.wireless = {
|
|
||||||
enable = false;
|
|
||||||
networks.Aether = {
|
|
||||||
pskRaw =
|
|
||||||
"e1b18af54036c5c9a747fe681c6a694636d60a5f8450f7dec0d76bc93e2ec85a";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.variables.TERM = "linux";
|
environment.variables.TERM = "linux";
|
||||||
environment.variables.HTOPRC = toString <niveum/dot/htoprc>;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
git vim htop wget reptyr
|
git vim htop wget reptyr
|
||||||
|
|
||||||
raspberrypi-tools
|
raspberrypi-tools
|
||||||
];
|
];
|
||||||
|
|
||||||
users.mutableUsers = false;
|
users.mutableUsers = false;
|
||||||
users.users.me = {
|
|
||||||
name = "kfm";
|
|
||||||
home = "/home/kfm";
|
|
||||||
createHome = true;
|
|
||||||
group = "users";
|
|
||||||
extraGroups = [ "wheel" ];
|
|
||||||
hashedPassword =
|
|
||||||
"$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
|
|
||||||
shell = pkgs.bash;
|
|
||||||
};
|
|
||||||
|
|
||||||
security.sudo.enable = true;
|
|
||||||
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
ports = [ 22022 ];
|
|
||||||
passwordAuthentication = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.root.openssh.authorizedKeys.keys = kmeinKeys;
|
|
||||||
|
|
||||||
users.users.me.openssh.authorizedKeys.keys = kmeinKeys;
|
|
||||||
|
|
||||||
networking.retiolum = {
|
networking.retiolum = {
|
||||||
ipv4 = "10.243.2.3";
|
ipv4 = "10.243.2.3";
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ let
|
|||||||
autorenkalender-package = pkgs.fetchFromGitHub {
|
autorenkalender-package = pkgs.fetchFromGitHub {
|
||||||
owner = "kmein";
|
owner = "kmein";
|
||||||
repo = "autorenkalender";
|
repo = "autorenkalender";
|
||||||
rev = "1971f082ec6e14d392a0dc3ac62e0b1e4187409b";
|
rev = "cf49a7b057301332d980eb47042a626add93db66";
|
||||||
sha256 = "0hipj616vcsa3f62s83jvlx8zx4bmbgl5h2n4w8ba5ngp40lkmb3";
|
sha256 = "1pa7sjg33vdnjianrqldv445jdzzv3mn231ljk1j58hs0cd505gs";
|
||||||
};
|
};
|
||||||
autorenkalender =
|
autorenkalender =
|
||||||
pkgs.python3Packages.callPackage autorenkalender-package { };
|
pkgs.python3Packages.callPackage autorenkalender-package { };
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (import <niveum/lib>) nixpkgs-unstable;
|
||||||
|
unstable = import nixpkgs-unstable {
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
<niveum/configs/default.nix>
|
<niveum/configs/default.nix>
|
||||||
@@ -24,14 +29,17 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
niveum = {
|
niveum = {
|
||||||
batteryBlocks.default = "BAT0";
|
batteryName = "BAT0";
|
||||||
networkInterfaces.wireless = "wlp3s0";
|
wirelessInterface = "wlp3s0";
|
||||||
promptColours.success = "cyan";
|
promptColours.success = "cyan";
|
||||||
};
|
};
|
||||||
|
|
||||||
virtualisation.docker.enable = lib.mkForce false;
|
virtualisation.docker.enable = lib.mkForce false;
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.unstable.minecraft ];
|
nix.buildCores = 1;
|
||||||
|
nix.maxJobs = 2;
|
||||||
|
|
||||||
|
environment.systemPackages = [ unstable.minecraft ];
|
||||||
|
|
||||||
boot.loader.systemd-boot = {
|
boot.loader.systemd-boot = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user