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

chore: format with alejandra

This commit is contained in:
2022-03-10 21:52:12 +01:00
parent 13727abfd6
commit d37e90cb97
159 changed files with 4239 additions and 3405 deletions

34
ci.nix
View File

@@ -1,22 +1,30 @@
{ inputs, system, name }: {
let inputs,
system,
name,
}: let
inherit (inputs) nixpkgs; inherit (inputs) nixpkgs;
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
ensureFiles = paths: pkgs.runCommand "directory" {} '' ensureFiles = paths:
pkgs.runCommand "directory" {} ''
set -efu set -efu
mkdir $out mkdir $out
cd $out cd $out
${nixpkgs.lib.concatMapStringsSep "\n" (path: '' ${
nixpkgs.lib.concatMapStringsSep "\n" (path: ''
mkdir -p "$(dirname ${nixpkgs.lib.escapeShellArg path})" mkdir -p "$(dirname ${nixpkgs.lib.escapeShellArg path})"
echo foo > ${nixpkgs.lib.escapeShellArg path} echo foo > ${nixpkgs.lib.escapeShellArg path}
'') paths} '')
paths
}
''; '';
nixPath = nixpkgs.lib.concatStringsSep ":" ([ nixPath = nixpkgs.lib.concatStringsSep ":" ([
"niveum=${toString ./.}" "niveum=${toString ./.}"
"nixos-config=${toString ./.}/systems/${name}/configuration.nix" "nixos-config=${toString ./.}/systems/${name}/configuration.nix"
"system-secrets=${systemSecrets}" "system-secrets=${systemSecrets}"
"secrets=${sharedSecrets}" "secrets=${sharedSecrets}"
] ++ nixpkgs.lib.mapAttrsToList (name: value: "${name}=${value}") inputs); ]
++ nixpkgs.lib.mapAttrsToList (name: value: "${name}=${value}") inputs);
# cd ~/.password-store/shared && find * -type f | sed 's/.gpg$//' # cd ~/.password-store/shared && find * -type f | sed 's/.gpg$//'
sharedSecrets = ensureFiles [ sharedSecrets = ensureFiles [
"di.fm/key" "di.fm/key"
@@ -37,7 +45,10 @@ let
"spotify/username" "spotify/username"
"spotify/password" "spotify/password"
]; ];
systemSecrets = let basic = [ "retiolum.ed25519" "retiolum.key" "syncthing/cert.pem" "syncthing/key.pem"]; in { systemSecrets = let
basic = ["retiolum.ed25519" "retiolum.key" "syncthing/cert.pem" "syncthing/key.pem"];
in
{
zaatar = ensureFiles (["moodle.token" "telegram/moodle-dl.token" "mpd-web.key"] ++ basic); zaatar = ensureFiles (["moodle.token" "telegram/moodle-dl.token" "mpd-web.key"] ++ basic);
kabsa = ensureFiles basic; kabsa = ensureFiles basic;
manakish = ensureFiles basic; manakish = ensureFiles basic;
@@ -62,6 +73,9 @@ let
"telegram/kmein.token" "telegram/kmein.token"
"telegram/prometheus.token" "telegram/prometheus.token"
"weechat/relay" "weechat/relay"
] ++ basic); ]
}.${name}; ++ basic);
in toString (pkgs.writers.writeDash "build" "NIX_PATH=${nixPath} nix-build '<nixpkgs/nixos>' -A system --dry-run") }
.${name};
in
toString (pkgs.writers.writeDash "build" "NIX_PATH=${nixPath} nix-build '<nixpkgs/nixos>' -A system --dry-run")

View File

@@ -1,13 +1,16 @@
{ pkgs, lib, config, ... }:
{ {
pkgs,
lib,
config,
...
}: {
environment.variables.TERMINAL = "alacritty"; environment.variables.TERMINAL = "alacritty";
environment.systemPackages = [ environment.systemPackages = [
pkgs.alacritty pkgs.alacritty
]; ];
home-manager.users.me.xdg.configFile = home-manager.users.me.xdg.configFile = let
let
inherit (import <niveum/lib>) colours; inherit (import <niveum/lib>) colours;
colourNames = ["black" "red" "green" "yellow" "blue" "magenta" "cyan" "white"]; colourNames = ["black" "red" "green" "yellow" "blue" "magenta" "cyan" "white"];
colourPairs = lib.getAttrs colourNames colours; colourPairs = lib.getAttrs colourNames colours;

View File

@@ -1,12 +1,17 @@
{ pkgs, config, ... }:
let
inherit (import <niveum/lib>) restic;
in
{ {
pkgs,
config,
...
}: let
inherit (import <niveum/lib>) restic;
in {
services.restic.backups.niveum = { services.restic.backups.niveum = {
initialize = true; initialize = true;
inherit (restic) repository; inherit (restic) repository;
timerConfig = { OnCalendar = "8:00"; RandomizedDelaySec = "1h"; }; timerConfig = {
OnCalendar = "8:00";
RandomizedDelaySec = "1h";
};
passwordFile = toString <secrets/restic/password>; passwordFile = toString <secrets/restic/password>;
extraBackupArgs = [ extraBackupArgs = [
"--exclude=/home/kfm/projects/nixpkgs/.git" "--exclude=/home/kfm/projects/nixpkgs/.git"

View File

@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
boot.extraModulePackages = with config.boot.kernelPackages; [ boot.extraModulePackages = with config.boot.kernelPackages; [
tp_smapi tp_smapi
acpi_call acpi_call

View File

@@ -1,5 +1,8 @@
{ lib, pkgs, ... }:
{ {
lib,
pkgs,
...
}: {
environment.systemPackages = [pkgs.beets]; environment.systemPackages = [pkgs.beets];
home-manager.users.me.xdg.configFile = { home-manager.users.me.xdg.configFile = {
"beets/config.yaml".source = (pkgs.formats.yaml {}).generate "config.yaml" { "beets/config.yaml".source = (pkgs.formats.yaml {}).generate "config.yaml" {

View File

@@ -1,4 +1,8 @@
{ pkgs, lib, ... }: { {
pkgs,
lib,
...
}: {
hardware.bluetooth = { hardware.bluetooth = {
enable = true; enable = true;
settings.General.Enable = settings.General.Enable =

View File

@@ -1,4 +1,9 @@
{ config, lib, pkgs, ... }: { {
config,
lib,
pkgs,
...
}: {
imports = [ imports = [
<niveum/modules/dropbox.nix> <niveum/modules/dropbox.nix>
]; ];
@@ -50,8 +55,8 @@
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>;
inherit ((import <niveum/lib>).syncthing) devices; inherit ((import <niveum/lib>).syncthing) devices;
folders = folders = let
let cloud-dir = "${config.users.users.me.home}/cloud"; cloud-dir = "${config.users.users.me.home}/cloud";
in { in {
"${cloud-dir}/syncthing/common".devices = ["kabsa" "manakish"]; "${cloud-dir}/syncthing/common".devices = ["kabsa" "manakish"];
"${cloud-dir}/syncthing/library".devices = ["kabsa" "manakish" "heym"]; "${cloud-dir}/syncthing/library".devices = ["kabsa" "manakish" "heym"];

View File

@@ -1,5 +1,8 @@
{ config, pkgs, ... }: {
let config,
pkgs,
...
}: let
copyqConfig = pkgs.writers.writeDash "copyq-config" '' copyqConfig = pkgs.writers.writeDash "copyq-config" ''
${pkgs.copyq}/bin/copyq config check_clipboard true ${pkgs.copyq}/bin/copyq config check_clipboard true
${pkgs.copyq}/bin/copyq config check_selection false ${pkgs.copyq}/bin/copyq config check_selection false

View File

@@ -1,5 +1,10 @@
{ pkgs, lib, config, options, ... }: {
let pkgs,
lib,
config,
options,
...
}: let
inherit (lib.strings) makeBinPath; inherit (lib.strings) makeBinPath;
inherit (import <niveum/lib>) localAddresses kieran; inherit (import <niveum/lib>) localAddresses kieran;
in { in {
@@ -29,7 +34,10 @@ in {
}; };
overlays = [ overlays = [
(self: super: { (self: super: {
scripts = import <niveum/packages/scripts> { pkgs = super; lib = super.lib; }; scripts = import <niveum/packages/scripts> {
pkgs = super;
lib = super.lib;
};
}) })
]; ];
}; };
@@ -57,8 +65,7 @@ in {
users.users.me = { users.users.me = {
name = "kfm"; name = "kfm";
description = kieran.name; description = kieran.name;
hashedPassword = hashedPassword = "$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
"$6$w9hXyGFl/.IZBXk$5OiWzS1G.5hImhh1YQmZiCXYNAJhi3X6Y3uSLupJNYYXPLMsQpx2fwF4Xr2uYzGMV8Foqh8TgUavx1APD9rcb/";
isNormalUser = true; isNormalUser = true;
uid = 1000; uid = 1000;
}; };
@@ -76,13 +83,15 @@ in {
# copy server:/run/pulse/.config/pulse/cookie to client:~/.config/pulse/cookie to authenticate a client machine # copy server:/run/pulse/.config/pulse/cookie to client:~/.config/pulse/cookie to authenticate a client machine
zeroconf.discovery.enable = true; zeroconf.discovery.enable = true;
extraConfig = '' extraConfig = ''
load-module ${toString [ load-module ${
toString [
"module-tunnel-sink-new" "module-tunnel-sink-new"
"server=zaatar.r" "server=zaatar.r"
"sink_name=zaatar" "sink_name=zaatar"
"channels=2" "channels=2"
"rate=44100" "rate=44100"
]} ]
}
''; '';
}; };
@@ -91,8 +100,7 @@ in {
environment.systemPackages = [pkgs.pavucontrol pkgs.ncpamixer pkgs.pamixer pkgs.pulsemixer]; environment.systemPackages = [pkgs.pavucontrol pkgs.ncpamixer pkgs.pamixer pkgs.pulsemixer];
} }
{ {
environment.interactiveShellInit = environment.interactiveShellInit = "export PATH=$PATH:$HOME/projects/niveum";
"export PATH=$PATH:$HOME/projects/niveum";
environment.shellAliases = let environment.shellAliases = let
wcd = pkgs.writers.writeDash "wcd" '' wcd = pkgs.writers.writeDash "wcd" ''
cd "$(readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname)/.." cd "$(readlink "$(${pkgs.which}/bin/which --skip-alias "$1")" | xargs dirname)/.."
@@ -107,8 +115,7 @@ in {
in { in {
"ß" = "${pkgs.utillinux}/bin/setsid"; "ß" = "${pkgs.utillinux}/bin/setsid";
cat = "${pkgs.bat}/bin/bat --style=plain"; cat = "${pkgs.bat}/bin/bat --style=plain";
chromium-incognito = chromium-incognito = "chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
"chromium --user-data-dir=$(mktemp -d /tmp/chr.XXXXXX) --no-first-run --incognito";
cp = "cp --interactive"; cp = "cp --interactive";
ip = "${pkgs.iproute}/bin/ip -c"; ip = "${pkgs.iproute}/bin/ip -c";
l = "ls --color=auto --time-style=long-iso --almost-all"; l = "ls --color=auto --time-style=long-iso --almost-all";
@@ -131,10 +138,8 @@ in {
wcd = "source ${wcd}"; wcd = "source ${wcd}";
im = "${pkgs.openssh}/bin/ssh weechat@makanek -t tmux attach-session -t IM"; im = "${pkgs.openssh}/bin/ssh weechat@makanek -t tmux attach-session -t IM";
where = "source ${where}"; where = "source ${where}";
yt = yt = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -ic"; # Download video link yta = "${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio
yta =
"${pkgs.youtube-dl}/bin/youtube-dl --add-metadata -xic"; # Download with audio
}; };
} }
{i18n.defaultLocale = "en_DK.UTF-8";} {i18n.defaultLocale = "en_DK.UTF-8";}
@@ -192,7 +197,8 @@ in {
networking.hosts = lib.mapAttrs' (name: address: { networking.hosts = lib.mapAttrs' (name: address: {
name = address; name = address;
value = ["${name}.local"]; value = ["${name}.local"];
}) localAddresses; })
localAddresses;
} }
./alacritty.nix ./alacritty.nix
./backup.nix ./backup.nix

View File

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

View File

@@ -1,4 +1,9 @@
{ lib, config, pkgs, ... }: { {
lib,
config,
pkgs,
...
}: {
imports = [ imports = [
(import <stockholm/makefu/3modules/bump-distrowatch.nix> { (import <stockholm/makefu/3modules/bump-distrowatch.nix> {
inherit lib config; inherit lib config;

View File

@@ -1,4 +1,8 @@
{ lib, pkgs, ... }: { {
lib,
pkgs,
...
}: {
virtualisation.docker = { virtualisation.docker = {
enable = true; enable = true;
# for ICE wifi, ref https://gist.github.com/sunsided/7840e89ff4e11b64a2d7503fafa0290c # for ICE wifi, ref https://gist.github.com/sunsided/7840e89ff4e11b64a2d7503fafa0290c

View File

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

View File

@@ -1,5 +1,8 @@
{ lib, pkgs, ... }: {
let lib,
pkgs,
...
}: let
inherit (import <niveum/lib>) defaultApplications; 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> {};

View File

@@ -1,5 +1,8 @@
{ config, pkgs, ... }: {
let config,
pkgs,
...
}: let
flixLocation = "/media/flix"; flixLocation = "/media/flix";
cacheLocation = "/var/cache/flix"; cacheLocation = "/var/cache/flix";
indexFilename = "index"; indexFilename = "index";
@@ -74,5 +77,4 @@ in {
| ${pkgs.findutils}/bin/xargs -I '{}' ${pkgs.utillinux}/bin/setsid ${pkgs.xdg_utils}/bin/xdg-open '{}' | ${pkgs.findutils}/bin/xargs -I '{}' ${pkgs.utillinux}/bin/setsid ${pkgs.xdg_utils}/bin/xdg-open '{}'
'') '')
]; ];
} }

View File

@@ -1,4 +1,8 @@
{ pkgs, lib, ... }: { {
pkgs,
lib,
...
}: {
environment = { environment = {
systemPackages = [pkgs.fzf]; systemPackages = [pkgs.fzf];
variables = { variables = {

View File

@@ -1,8 +1,11 @@
{ pkgs, config, lib, ... }:
let
inherit (import <niveum/lib>) kieran ignorePaths;
in
{ {
pkgs,
config,
lib,
...
}: let
inherit (import <niveum/lib>) kieran ignorePaths;
in {
environment.systemPackages = [ environment.systemPackages = [
pkgs.mr pkgs.mr
pkgs.git pkgs.git
@@ -38,8 +41,7 @@ in
diffs = "diff --staged"; diffs = "diff --staged";
last = "log -1 HEAD"; last = "log -1 HEAD";
logs = "log --pretty=oneline"; logs = "log --pretty=oneline";
graph = graph = "log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all";
"log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all";
}; };
ignores = ignorePaths; ignores = ignorePaths;
extraConfig = { extraConfig = {

View File

@@ -1,4 +1,8 @@
{ config, pkgs, ... }: { {
config,
pkgs,
...
}: {
imports = [<niveum/modules/hledger.nix>]; imports = [<niveum/modules/hledger.nix>];
niveum.hledger = { niveum.hledger = {

View File

@@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
inherit (lib.strings) fileContents; inherit (lib.strings) fileContents;
inherit (import <niveum/lib>) sshPort; inherit (import <niveum/lib>) sshPort;
eduroam = { eduroam = {
@@ -32,7 +36,6 @@ in {
options = hu-berlin-cifs-options; options = hu-berlin-cifs-options;
}; };
home-manager.users.me.programs.ssh = { home-manager.users.me.programs.ssh = {
matchBlocks = { matchBlocks = {
"alew.hu-berlin.de" = { "alew.hu-berlin.de" = {
@@ -46,7 +49,8 @@ in {
(pkgs.writers.writeDashBin "hu-ip" '' (pkgs.writers.writeDashBin "hu-ip" ''
${pkgs.w3m}/bin/w3m -dump meineip.hu-berlin.de | head --lines=-4 | tail --lines=+3 ${pkgs.w3m}/bin/w3m -dump meineip.hu-berlin.de | head --lines=-4 | tail --lines=+3
'') '')
(pkgs.writers.writePython3Bin "hu-eduroam-install" (
pkgs.writers.writePython3Bin "hu-eduroam-install"
{ {
libraries = with pkgs.python3Packages; [distro pyopenssl dbus-python]; libraries = with pkgs.python3Packages; [distro pyopenssl dbus-python];
flakeIgnore = ["E501" "E123" "W504" "E722" "F821" "E226" "E126" "E265" "W291"]; flakeIgnore = ["E501" "E123" "W504" "E722" "F821" "E226" "E126" "E265" "W291"];
@@ -63,13 +67,15 @@ in {
wants = ["network-online.target"]; wants = ["network-online.target"];
conflicts = ["openvpn-hu-berlin.service"]; conflicts = ["openvpn-hu-berlin.service"];
script = '' script = ''
${pkgs.openfortivpn}/bin/openfortivpn -c ${pkgs.writeText "hu-berlin.config" '' ${pkgs.openfortivpn}/bin/openfortivpn -c ${
pkgs.writeText "hu-berlin.config" ''
host = forti-ssl.vpn.hu-berlin.de host = forti-ssl.vpn.hu-berlin.de
port = 443 port = 443
trusted-cert = 42193a913d276d9eb86217612956e1e6464d6f07bed5393a4787c87adc4bd359 trusted-cert = 42193a913d276d9eb86217612956e1e6464d6f07bed5393a4787c87adc4bd359
username = ${eduroam.identity}@split_tunnel username = ${eduroam.identity}@split_tunnel
password = ${eduroam.password} password = ${eduroam.password}
''} ''
}
''; '';
}; };
@@ -82,8 +88,7 @@ in {
password = eduroam.password; password = eduroam.password;
}; };
config = fileContents (pkgs.fetchurl { config = fileContents (pkgs.fetchurl {
url = url = "https://www.cms.hu-berlin.de/de/dl/netze/vpn/openvpn/hu-berlin.ovpn";
"https://www.cms.hu-berlin.de/de/dl/netze/vpn/openvpn/hu-berlin.ovpn";
sha256 = "15b55aibik5460svjq2gwxrcyh6ay4k8savd6cd5lncgndmd8p8h"; sha256 = "15b55aibik5460svjq2gwxrcyh6ay4k8savd6cd5lncgndmd8p8h";
}); });
}; };

View File

@@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
inherit (import <niveum/lib>) defaultApplications colours; 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;
@@ -45,7 +49,6 @@ let
move-to-new-workspace = pkgs.writers.writeDash "new-workspace" '' move-to-new-workspace = pkgs.writers.writeDash "new-workspace" ''
i3-msg move container to workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1)) i3-msg move container to workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1))
''; '';
in { in {
services.xserver = { services.xserver = {
displayManager.defaultSession = "none+i3"; displayManager.defaultSession = "none+i3";
@@ -73,7 +76,10 @@ in {
home-manager.users.me.xsession.windowManager.i3 = { home-manager.users.me.xsession.windowManager.i3 = {
enable = true; enable = true;
config = rec { config = rec {
fonts = {names = ["Sans"]; size = 10.0;}; fonts = {
names = ["Sans"];
size = 10.0;
};
modifier = "Mod4"; modifier = "Mod4";
window = { window = {
titlebar = false; titlebar = false;
@@ -111,31 +117,43 @@ in {
text = colours.foreground; text = colours.foreground;
}; };
in rec { in rec {
focused = scheme // { focused =
scheme
// {
border = colours.cyan.bright; border = colours.cyan.bright;
indicator = colours.cyan.bright; indicator = colours.cyan.bright;
childBorder = colours.cyan.bright; childBorder = colours.cyan.bright;
}; };
unfocused = scheme // { unfocused =
scheme
// {
border = colours.background; border = colours.background;
indicator = colours.background; indicator = colours.background;
childBorder = colours.background; childBorder = colours.background;
}; };
focusedInactive = unfocused; focusedInactive = unfocused;
urgent = scheme // { urgent =
scheme
// {
border = colours.red.bright; border = colours.red.bright;
indicator = colours.red.bright; indicator = colours.red.bright;
childBorder = colours.red.bright; childBorder = colours.red.bright;
}; };
placeholder = scheme // { placeholder =
scheme
// {
border = colours.green.bright; border = colours.green.bright;
indicator = colours.green.bright; indicator = colours.green.bright;
childBorder = colours.green.bright; childBorder = colours.green.bright;
}; };
}; };
bars = [{ bars = [
{
workspaceButtons = false; workspaceButtons = false;
fonts = {names = ["Sans"]; size = 8.0;}; fonts = {
names = ["Sans"];
size = 8.0;
};
mode = "hide"; # "dock" mode = "hide"; # "dock"
position = "bottom"; position = "bottom";
colors = rec { colors = rec {
@@ -155,7 +173,8 @@ in {
inherit pkgs; inherit pkgs;
}) })
}"; }";
}]; }
];
modes.resize = { modes.resize = {
"Escape" = ''mode "default"''; "Escape" = ''mode "default"'';
"Return" = ''mode "default"''; "Return" = ''mode "default"'';

View File

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

View File

@@ -1,5 +1,9 @@
{ pkgs, lib, ... }: {
let commaSep = builtins.concatStringsSep ","; pkgs,
lib,
...
}: let
commaSep = builtins.concatStringsSep ",";
in { in {
services.xserver = { services.xserver = {
layout = commaSep ["de" "gr"]; layout = commaSep ["de" "gr"];
@@ -12,6 +16,5 @@ in {
console.keyMap = "de"; console.keyMap = "de";
# improve held key rate # improve held key rate
services.xserver.displayManager.sessionCommands = services.xserver.displayManager.sessionCommands = "${pkgs.xorg.xset}/bin/xset r rate 300 50";
"${pkgs.xorg.xset}/bin/xset r rate 300 50";
} }

View File

@@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
davHome = "~/.local/share/dav"; davHome = "~/.local/share/dav";
kmeinCloud = { kmeinCloud = {
davEndpoint = "https://cloud.xn--kiern-0qa.de/remote.php/dav"; davEndpoint = "https://cloud.xn--kiern-0qa.de/remote.php/dav";
@@ -11,8 +15,7 @@ let
username = "kmein"; username = "kmein";
password = lib.fileContents <secrets/nextcloud-fysi/password>; password = lib.fileContents <secrets/nextcloud-fysi/password>;
}; };
in in {
{
environment.systemPackages = [pkgs.khal pkgs.vdirsyncer pkgs.khard pkgs.todoman]; environment.systemPackages = [pkgs.khal pkgs.vdirsyncer pkgs.khard pkgs.todoman];
systemd.user.services.vdirsyncer = { systemd.user.services.vdirsyncer = {

View File

@@ -1,5 +1,8 @@
{ lib, pkgs, ... }:
{ {
lib,
pkgs,
...
}: {
systemd.services.lb-subscription = { systemd.services.lb-subscription = {
enable = true; enable = true;
wants = ["network-online.target"]; wants = ["network-online.target"];

View File

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

View File

@@ -1,5 +1,8 @@
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
services.nginx.virtualHosts.default = { services.nginx.virtualHosts.default = {
locations."= /stub_status".extraConfig = "stub_status;"; locations."= /stub_status".extraConfig = "stub_status;";
}; };
@@ -43,14 +46,21 @@
serviceConfig = { serviceConfig = {
ExecStart = '' ExecStart = ''
${pkgs.grafana-loki}/bin/promtail --config.file ${(pkgs.formats.yaml {}).generate "promtail.yaml" { ${pkgs.grafana-loki}/bin/promtail --config.file ${
(pkgs.formats.yaml {}).generate "promtail.yaml" {
server = { server = {
http_listen_port = 28183; http_listen_port = 28183;
grpc_listen_port = 0; grpc_listen_port = 0;
}; };
positions.filename = "/tmp/positions.yaml"; positions.filename = "/tmp/positions.yaml";
clients = [ clients = [
{ url = "http://${if config.networking.hostName == "makanek" then "127.0.0.1" else "makanek.r"}:3100/loki/api/v1/push"; } {
url = "http://${
if config.networking.hostName == "makanek"
then "127.0.0.1"
else "makanek.r"
}:3100/loki/api/v1/push";
}
]; ];
scrape_configs = [ scrape_configs = [
{ {
@@ -68,7 +78,8 @@
]; ];
} }
]; ];
}} }
}
''; '';
}; };
}; };

View File

@@ -1,4 +1,8 @@
{ pkgs, lib, ... }: let {
pkgs,
lib,
...
}: let
swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}"; swallow = command: "${pkgs.scripts.swallow}/bin/swallow ${command}";
in { in {
environment.shellAliases.smpv = swallow "mpv"; environment.shellAliases.smpv = swallow "mpv";

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
...
}: let
mainMailbox = "posteo"; mainMailbox = "posteo";
accounts.uni = { accounts.uni = {
@@ -113,13 +116,13 @@ let
trash = "[Gmail]/Papierkorb"; trash = "[Gmail]/Papierkorb";
}; };
}; };
in in {
{
environment.systemPackages = [pkgs.neomutt]; environment.systemPackages = [pkgs.neomutt];
environment.shellAliases.mua = "${pkgs.neomutt}/bin/neomutt -f ${mainMailbox}"; environment.shellAliases.mua = "${pkgs.neomutt}/bin/neomutt -f ${mainMailbox}";
home-manager.users.me.xdg.configFile."neomutt/neomuttrc".text = '' home-manager.users.me.xdg.configFile."neomutt/neomuttrc".text = ''
set mailcap_path = ${pkgs.writeText "mailcap" '' set mailcap_path = ${
pkgs.writeText "mailcap" ''
text/plain; $EDITOR %s ; text/plain; $EDITOR %s ;
text/html; ${pkgs.lynx}/bin/lynx -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput; text/html; ${pkgs.lynx}/bin/lynx -assume_charset=%{charset} -display_charset=utf-8 -dump %s; nametemplate=%s.html; copiousoutput;
image/*; ${pkgs.sxiv}/bin/sxiv %s ; image/*; ${pkgs.sxiv}/bin/sxiv %s ;
@@ -128,7 +131,8 @@ in
application/pdf; ${pkgs.zathura}/bin/zathura %s ; application/pdf; ${pkgs.zathura}/bin/zathura %s ;
application/pgp-encrypted; ${pkgs.gnupg}/bin/gpg -d '%s'; copiousoutput; application/pgp-encrypted; ${pkgs.gnupg}/bin/gpg -d '%s'; copiousoutput;
application/pgp-keys; ${pkgs.gnupg}/bin/gpg --import '%s'; copiousoutput; application/pgp-keys; ${pkgs.gnupg}/bin/gpg --import '%s'; copiousoutput;
''}:$mailcap_path ''
}:$mailcap_path
set sidebar_visible set sidebar_visible
set sidebar_format = "%D%?F? [%F]?%* %?N?%N/?%S" set sidebar_format = "%D%?F? [%F]?%* %?N?%N/?%S"
@@ -180,21 +184,29 @@ in
set header_cache="~/.cache/mutt" message_cachedir="~/.cache/mutt" set header_cache="~/.cache/mutt" message_cachedir="~/.cache/mutt"
source ${pkgs.writeText "accounts.neomuttrc" '' source ${
pkgs.writeText "accounts.neomuttrc" ''
set realname = "Kierán Meinhardt" set realname = "Kierán Meinhardt"
account-hook . 'unset imap_user imap_pass smtp_user smtp_pass' account-hook . 'unset imap_user imap_pass smtp_user smtp_pass'
# set accordingly: postponed trash record # set accordingly: postponed trash record
${lib.concatStringsSep "\n\n" (lib.mapAttrsToList (name: account: let imapRoot = "imaps://${account.user}@${account.imap}"; in '' ${
lib.concatStringsSep "\n\n" (lib.mapAttrsToList (name: account: let
imapRoot = "imaps://${account.user}@${account.imap}";
in ''
account-hook ${account.user}@${account.imap} 'set imap_user="${account.user}" imap_pass="${account.password}"' account-hook ${account.user}@${account.imap} 'set imap_user="${account.user}" imap_pass="${account.password}"'
account-hook ${account.user}@${account.smtp} 'set smtp_user="${account.user}" smtp_pass="${account.password}"' account-hook ${account.user}@${account.smtp} 'set smtp_user="${account.user}" smtp_pass="${account.password}"'
folder-hook ${account.user}@${account.imap} 'set smtp_url="${account.smtpSettings "${account.user}@${account.smtp}"}" from="${account.address}" record="${imapRoot}/${account.folders.sent}" postponed="${imapRoot}/${account.folders.drafts}" trash="${imapRoot}/${account.folders.trash}"' folder-hook ${account.user}@${account.imap} 'set smtp_url="${account.smtpSettings "${account.user}@${account.smtp}"}" from="${account.address}" record="${imapRoot}/${account.folders.sent}" postponed="${imapRoot}/${account.folders.drafts}" trash="${imapRoot}/${account.folders.trash}"'
named-mailboxes "${name}" "${imapRoot}" "${name}" "${imapRoot}/${account.folders.sent}" named-mailboxes "${name}" "${imapRoot}" "${name}" "${imapRoot}/${account.folders.sent}"
'') accounts)} '')
''} accounts)
}
''
}
set spoolfile="${mainMailbox}" set spoolfile="${mainMailbox}"
source ${pkgs.writeText "colors.neomuttrc" '' source ${
pkgs.writeText "colors.neomuttrc" ''
# Default index colors: # Default index colors:
color index_number blue default color index_number blue default
color index red default '.*' color index red default '.*'
@@ -243,6 +255,7 @@ in
mono body bold "^gpg: Good signature" mono body bold "^gpg: Good signature"
mono body bold "^gpg: BAD signature from.*" mono body bold "^gpg: BAD signature from.*"
color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]" color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]"
''} ''
}
''; '';
} }

View File

@@ -5,7 +5,9 @@
environment.shellAliases.view = "nvim -R"; environment.shellAliases.view = "nvim -R";
nixpkgs.config.packageOverrides = pkgs: { nixpkgs.config.packageOverrides = pkgs: {
vimPlugins = pkgs.vimPlugins // { vimPlugins =
pkgs.vimPlugins
// {
cheat-sh-vim = pkgs.callPackage <niveum/packages/vimPlugins/cheat-sh.nix> {}; cheat-sh-vim = pkgs.callPackage <niveum/packages/vimPlugins/cheat-sh.nix> {};
vim-fetch = pkgs.callPackage <niveum/packages/vimPlugins/vim-fetch.nix> {}; vim-fetch = pkgs.callPackage <niveum/packages/vimPlugins/vim-fetch.nix> {};
vim-colors-paramount = pkgs.callPackage <niveum/packages/vimPlugins/vim-colors-paramount.nix> {}; vim-colors-paramount = pkgs.callPackage <niveum/packages/vimPlugins/vim-colors-paramount.nix> {};

View File

@@ -1,6 +1,10 @@
{ lib, pkgs, ... }: {
let lib,
profile = name: custom: lib.recursiveUpdate { pkgs,
...
}: let
profile = name: custom:
lib.recursiveUpdate {
connection.id = name; connection.id = name;
connection.type = "wifi"; connection.type = "wifi";
connection.interface-name = "wlp3s0"; connection.interface-name = "wlp3s0";
@@ -14,7 +18,8 @@ let
ipv6.dns-search = ""; ipv6.dns-search = "";
ipv6.method = "auto"; ipv6.method = "auto";
proxy = {}; proxy = {};
} custom; }
custom;
eduroamProfile = { eduroamProfile = {
connection.uuid = "eae9fee6-a7d2-4120-a609-440b457d6fcf"; connection.uuid = "eae9fee6-a7d2-4120-a609-440b457d6fcf";
wifi-security = { wifi-security = {
@@ -36,8 +41,7 @@ let
phase2-auth = "pap"; phase2-auth = "pap";
}; };
}; };
in in {
{
imports = [<niveum/modules/networkmanager-declarative.nix>]; imports = [<niveum/modules/networkmanager-declarative.nix>];
programs.nm-applet.enable = true; programs.nm-applet.enable = true;

View File

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

View File

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

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
...
}: let
openweathermap-repo = pkgs.fetchFromGitHub { openweathermap-repo = pkgs.fetchFromGitHub {
owner = "ip1981"; owner = "ip1981";
repo = "openweathermap"; repo = "openweathermap";

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
...
}: let
hc = pkgs.callPackage <stockholm/tv/5pkgs/simple/hc.nix> {}; hc = pkgs.callPackage <stockholm/tv/5pkgs/simple/hc.nix> {};
worldradio = pkgs.callPackage <niveum/packages/worldradio.nix> {}; worldradio = pkgs.callPackage <niveum/packages/worldradio.nix> {};
menstruation = pkgs.callPackage <menstruation-backend> {}; menstruation = pkgs.callPackage <menstruation-backend> {};
@@ -7,7 +10,10 @@ let
nixpkgs-unstable = import <nixpkgs-unstable> {config.allowUnfree = true;}; nixpkgs-unstable = import <nixpkgs-unstable> {config.allowUnfree = true;};
zoteroStyle = { name, sha256 }: { zoteroStyle = {
name,
sha256,
}: {
name = "${name}.csl"; name = "${name}.csl";
path = pkgs.fetchurl { path = pkgs.fetchurl {
url = "https://www.zotero.org/styles/${name}"; url = "https://www.zotero.org/styles/${name}";
@@ -29,8 +35,9 @@ let
}) })
]; ];
astrolog = nixpkgs-unstable.astrolog.overrideAttrs (old:
astrolog = nixpkgs-unstable.astrolog.overrideAttrs (old: old // { old
// {
installPhase = '' installPhase = ''
${old.installPhase} ${old.installPhase}
# set sensible defaults # set sensible defaults
@@ -50,7 +57,6 @@ let
}); });
recht = pkgs.callPackage <recht> {}; recht = pkgs.callPackage <recht> {};
in { in {
home-manager.users.me.home.file = { home-manager.users.me.home.file = {
".csl".source = cslDirectory; ".csl".source = cslDirectory;
@@ -120,6 +126,7 @@ in {
anki # flashcards anki # flashcards
jbofihe # lojbanic software jbofihe # lojbanic software
nixpkgs-unstable.zoom-us # video conferencing nixpkgs-unstable.zoom-us # video conferencing
nixpkgs-unstable.alejandra # nix formatter
pdfgrep # search in pdf pdfgrep # search in pdf
pdftk # pdf toolkit pdftk # pdf toolkit
mupdf mupdf
@@ -255,10 +262,8 @@ in {
shellcheck shellcheck
]; ];
home-manager.users.me.xdg.configFile."pycodestyle".text = '' home-manager.users.me.xdg.configFile."pycodestyle".text = ''
[pycodestyle] [pycodestyle]
max-line-length = 110 max-line-length = 110
''; '';
} }

View File

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

View File

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

View File

@@ -1,5 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: let
let
inherit (import <niveum/lib>) localAddresses; inherit (import <niveum/lib>) localAddresses;
hp-driver = pkgs.hplipWithPlugin; hp-driver = pkgs.hplipWithPlugin;
in { in {
@@ -13,7 +12,8 @@ in {
extraBackends = [hp-driver]; extraBackends = [hp-driver];
}; };
hardware.printers.ensurePrinters = [{ hardware.printers.ensurePrinters = [
{
name = "OfficeJet"; name = "OfficeJet";
location = "Zimmer"; location = "Zimmer";
deviceUri = "https://${localAddresses.officejet}"; deviceUri = "https://${localAddresses.officejet}";
@@ -25,9 +25,11 @@ in {
OutputMode = "Normal"; OutputMode = "Normal";
ColorModel = "KGray"; # RGB CMYGray KGray ColorModel = "KGray"; # RGB CMYGray KGray
}; };
}];
} }
];
/* HP/hp-officejet_4650_series.ppd.gz }
/*
HP/hp-officejet_4650_series.ppd.gz
drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd drv:///hp/hpcups.drv/hp-officejet_4650_series.ppd
*/ */

View File

@@ -1,4 +1,8 @@
{ config, pkgs, ... }: { {
config,
pkgs,
...
}: {
imports = [ imports = [
<niveum/modules/retiolum.nix> <niveum/modules/retiolum.nix>
]; ];

View File

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

View File

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

View File

@@ -1,5 +1,9 @@
{ pkgs, config, lib, ... }: {
let pkgs,
config,
lib,
...
}: let
inherit (import <niveum/lib>) sshPort kieran; inherit (import <niveum/lib>) sshPort kieran;
in { in {
services.xserver.displayManager.sessionCommands = "${pkgs.openssh}/bin/ssh-add"; services.xserver.displayManager.sessionCommands = "${pkgs.openssh}/bin/ssh-add";

View File

@@ -1,8 +1,11 @@
{ config, lib, pkgs, ... }:
let
inherit (import <niveum/lib>) sshPort kieran;
in
{ {
config,
lib,
pkgs,
...
}: let
inherit (import <niveum/lib>) sshPort kieran;
in {
users.motd = "Welcome to ${config.networking.hostName}!"; users.motd = "Welcome to ${config.networking.hostName}!";
services.openssh = { services.openssh = {

View File

@@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
dictionaries = { dictionaries = {
lojban = { lojban = {
jbo-deu = pkgs.fetchzip { jbo-deu = pkgs.fetchzip {
@@ -100,7 +104,9 @@ let
sha256 = "0cx086zvb86bmz7i8vnsch4cj4fb0cp165g4hig4982zakj6f2jd"; sha256 = "0cx086zvb86bmz7i8vnsch4cj4fb0cp165g4hig4982zakj6f2jd";
}; };
}; };
sanskrit = let repo = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f"; in { sanskrit = let
repo = "https://github.com/indic-dict/stardict-sanskrit/raw/4ebd2d3db5820f7cbe3a649c3d5aa8f83d19b29f";
in {
BoehtlingkRoth = pkgs.fetchzip { BoehtlingkRoth = pkgs.fetchzip {
url = "${repo}/sa-head/german-entries/tars/Bohtlingk-and-Roth-Grosses-Petersburger-Worterbuch__2021-10-05_14-23-18Z__19MB.tar.gz"; url = "${repo}/sa-head/german-entries/tars/Bohtlingk-and-Roth-Grosses-Petersburger-Worterbuch__2021-10-05_14-23-18Z__19MB.tar.gz";
sha256 = "13414a8rgd7hd5ffar6nl68nk3ys60wjkgb7m11hp0ahaasmf6ly"; sha256 = "13414a8rgd7hd5ffar6nl68nk3ys60wjkgb7m11hp0ahaasmf6ly";
@@ -156,7 +162,8 @@ let
makeStardictDataDir = dicts: pkgs.linkFarm "dictionaries" (lib.mapAttrsToList (name: path: {inherit name path;}) dicts); makeStardictDataDir = dicts: pkgs.linkFarm "dictionaries" (lib.mapAttrsToList (name: path: {inherit name path;}) dicts);
makeStardict = name: dicts: pkgs.writers.writeDashBin name '' makeStardict = name: dicts:
pkgs.writers.writeDashBin name ''
set -efu set -efu
export SDCV_PAGER=${toString sdcvPager} export SDCV_PAGER=${toString sdcvPager}
exec ${pkgs.sdcv}/bin/sdcv --color --only-data-dir --data-dir ${makeStardictDataDir dicts} "$@" exec ${pkgs.sdcv}/bin/sdcv --color --only-data-dir --data-dir ${makeStardictDataDir dicts} "$@"
@@ -266,8 +273,7 @@ let
s!</\?p[^>]*>!!gI s!</\?p[^>]*>!!gI
" | less -FR " | less -FR
''; '';
in in {
{
environment.etc.stardict.source = toString (makeStardictDataDir ({ environment.etc.stardict.source = toString (makeStardictDataDir ({
Crum = pkgs.fetchzip { Crum = pkgs.fetchzip {
url = "http://download.huzheng.org/misc/stardict-Coptic-English_all_dialects-2.4.2.tar.bz2"; url = "http://download.huzheng.org/misc/stardict-Coptic-English_all_dialects-2.4.2.tar.bz2";
@@ -281,7 +287,12 @@ in
url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip"; url = "https://github.com/latin-dict/Smith1890/releases/download/v1.0/Smith1890-stardict.zip";
sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb"; sha256 = "0vpsv62p2lrzmgys4d1swpnc6lqhdi7rxwkj2ngy3lz5dk3fysyb";
}; };
} // dictionaries.classics // dictionaries.sanskrit // dictionaries.oed // dictionaries.russian // dictionaries.englishGerman)); }
// dictionaries.classics
// dictionaries.sanskrit
// dictionaries.oed
// dictionaries.russian
// dictionaries.englishGerman));
environment.systemPackages = [ environment.systemPackages = [
pkgs.goldendict pkgs.goldendict
@@ -293,7 +304,6 @@ in
(makeStardict "jbo" dictionaries.lojban) (makeStardict "jbo" dictionaries.lojban)
]; ];
} }
/* /*
https://github.com/latin-dict/Georges1910/releases/download/v1.0/Georges1910-stardict.zip https://github.com/latin-dict/Georges1910/releases/download/v1.0/Georges1910-stardict.zip
https://github.com/nikita-moor/latin-dictionary/releases/download/2020-02-14/LiddellScott1940-stardict.zip https://github.com/nikita-moor/latin-dictionary/releases/download/2020-02-14/LiddellScott1940-stardict.zip
@@ -355,3 +365,4 @@ MacDonell = pkgs.fetchzip {
stripRoot = false; stripRoot = false;
}; };
*/ */

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
...
}: let
important-directories = pkgs.writeText "directories" '' important-directories = pkgs.writeText "directories" ''
h ~/ h ~/
d ~/cloud/Dropbox/ d ~/cloud/Dropbox/

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
...
}: let
nixpkgs-unstable = import <nixpkgs-unstable> {}; nixpkgs-unstable = import <nixpkgs-unstable> {};
toSymbols = pkgs.writers.writeDash "to-symbols" '' toSymbols = pkgs.writers.writeDash "to-symbols" ''
${pkgs.gnused}/bin/sed ' ${pkgs.gnused}/bin/sed '

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
...
}: let
autorenkalender-package = pkgs.fetchFromGitHub { autorenkalender-package = pkgs.fetchFromGitHub {
owner = "kmein"; owner = "kmein";
repo = "autorenkalender"; repo = "autorenkalender";

View File

@@ -1,5 +1,9 @@
{ config, pkgs, lib, ... }: {
let config,
pkgs,
lib,
...
}: let
telebots = pkgs.callPackage <telebots> {}; telebots = pkgs.callPackage <telebots> {};
reverseDirectory = "/run/telegram-reverse"; reverseDirectory = "/run/telegram-reverse";
proverbDirectory = "/run/telegram-proverb"; proverbDirectory = "/run/telegram-proverb";
@@ -14,7 +18,8 @@ in {
<niveum/modules/telegram-bot.nix> <niveum/modules/telegram-bot.nix>
]; ];
systemd.tmpfiles.rules = map (path: tmpfilesConfig { systemd.tmpfiles.rules = map (path:
tmpfilesConfig {
type = "d"; type = "d";
mode = "0750"; mode = "0750";
age = "1h"; age = "1h";

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
...
}: let
scripts = import <niveum/packages/scripts> {inherit pkgs lib;}; scripts = import <niveum/packages/scripts> {inherit pkgs lib;};
inherit (scripts) literature-quote; inherit (scripts) literature-quote;
in { in {

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
...
}: let
nachtischsatan-bot = {token}: nachtischsatan-bot = {token}:
pkgs.writers.writePython3 "nachtischsatan-bot" { pkgs.writers.writePython3 "nachtischsatan-bot" {
libraries = [pkgs.python3Packages.python-telegram-bot]; libraries = [pkgs.python3Packages.python-telegram-bot];

View File

@@ -1,5 +1,8 @@
{ pkgs, lib, ... }:
{ {
pkgs,
lib,
...
}: {
niveum.telegramBots.tlg-wotd = { niveum.telegramBots.tlg-wotd = {
enable = true; enable = true;
time = "9:30"; time = "9:30";

View File

@@ -1,9 +1,12 @@
{ lib, config, pkgs, ... }: {
let lib,
config,
pkgs,
...
}: let
theme = (import <niveum/lib>).theme pkgs; theme = (import <niveum/lib>).theme pkgs;
in { in {
environment.systemPackages = environment.systemPackages = [theme.gtk.package theme.icon.package theme.cursor.package];
[ theme.gtk.package theme.icon.package theme.cursor.package ];
services.xserver.displayManager.lightdm.greeters.gtk = { services.xserver.displayManager.lightdm.greeters.gtk = {
theme = {inherit (theme.gtk) name package;}; theme = {inherit (theme.gtk) name package;};

View File

@@ -1,9 +1,11 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
...
}: let
inherit (import <niveum/lib>) localAddresses; inherit (import <niveum/lib>) localAddresses;
living-room-id = 131090; living-room-id = 131090;
in in {
{
imports = [<niveum/modules/traadfri.nix>]; imports = [<niveum/modules/traadfri.nix>];
environment.systemPackages = [ environment.systemPackages = [

View File

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

View File

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

View File

@@ -1,4 +1,8 @@
{ config, pkgs, ... }: { {
config,
pkgs,
...
}: {
home-manager.users.me.home.file.".zshrc".text = '' home-manager.users.me.home.file.".zshrc".text = ''
# nothing to see here # nothing to see here
''; '';

116
flake.nix
View File

@@ -16,42 +16,75 @@
}; };
# legacy # legacy
menstruation-backend = { url = "github:kmein/menstruation.rs"; flake = false; }; menstruation-backend = {
menstruation-telegram = { url = "github:kmein/menstruation-telegram"; flake = false; }; url = "github:kmein/menstruation.rs";
nix-writers = { url = "git+https://cgit.krebsco.de/nix-writers"; flake = false; }; flake = false;
recht = { url = "github:kmein/recht"; flake = false; }; };
retiolum = { url = "github:krebs/retiolum"; flake = false; }; menstruation-telegram = {
scripts = { url = "github:kmein/scripts"; flake = false; }; url = "github:kmein/menstruation-telegram";
stockholm = { url = "git+https://cgit.lassul.us/stockholm"; flake = false; }; flake = false;
telebots = { url = "github:kmein/telebots"; flake = false; }; };
tinc-graph = { url = "github:kmein/tinc-graph"; flake = false; }; nix-writers = {
traadfri = { url = "github:kmein/traadfri"; flake = false; }; url = "git+https://cgit.krebsco.de/nix-writers";
tuna = { url = "github:kmein/tuna"; flake = false; }; flake = false;
};
recht = {
url = "github:kmein/recht";
flake = false;
};
retiolum = {
url = "github:krebs/retiolum";
flake = false;
};
scripts = {
url = "github:kmein/scripts";
flake = false;
};
stockholm = {
url = "git+https://cgit.lassul.us/stockholm";
flake = false;
};
telebots = {
url = "github:kmein/telebots";
flake = false;
};
tinc-graph = {
url = "github:kmein/tinc-graph";
flake = false;
};
traadfri = {
url = "github:kmein/traadfri";
flake = false;
};
tuna = {
url = "github:kmein/tuna";
flake = false;
};
}; };
outputs = outputs = {
{ self self,
, flake-utils flake-utils,
, home-manager home-manager,
, krops krops,
, menstruation-backend menstruation-backend,
, menstruation-telegram menstruation-telegram,
, nix-writers nix-writers,
, nixpkgs nixpkgs,
, nixpkgs-unstable nixpkgs-unstable,
, recht recht,
, retiolum retiolum,
, scripts scripts,
, stockholm stockholm,
, telebots telebots,
, tinc-graph tinc-graph,
, traadfri traadfri,
, tuna tuna,
}@inputs: } @ inputs: let
let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
source = name: { source = name:
{
niveum.file = toString ./.; niveum.file = toString ./.;
nixos-config.symlink = "niveum/systems/${name}/configuration.nix"; nixos-config.symlink = "niveum/systems/${name}/configuration.nix";
system-secrets.pass = { system-secrets.pass = {
@@ -62,11 +95,18 @@
dir = toString ~/.password-store; dir = toString ~/.password-store;
name = "shared"; name = "shared";
}; };
} // nixpkgs.lib.mapAttrs' (name: value: { }
// nixpkgs.lib.mapAttrs' (name: value: {
inherit name; inherit name;
value.file = toString value; value.file = toString value;
}) (nixpkgs.lib.filterAttrs (name: _: !builtins.elem name ["flake-utils" "krops" "self"]) inputs); }) (nixpkgs.lib.filterAttrs (name: _: !builtins.elem name ["flake-utils" "krops" "self"]) inputs);
deployScriptFor = {name, host}: let inherit (import ./lib/default.nix) sshPort; in toString (krops.packages.${system}.writeDeploy "deploy-${name}" { deployScriptFor = {
name,
host,
}: let
inherit (import ./lib/default.nix) sshPort;
in
toString (krops.packages.${system}.writeDeploy "deploy-${name}" {
source = krops.lib.evalSource [(source name)]; source = krops.lib.evalSource [(source name)];
target = "root@${host}:${toString sshPort}"; target = "root@${host}:${toString sshPort}";
}); });
@@ -77,7 +117,10 @@
name = "deploy-${name}"; name = "deploy-${name}";
value = { value = {
type = "app"; type = "app";
program = deployScriptFor { inherit name; host = "${name}.r"; }; program = deployScriptFor {
inherit name;
host = "${name}.r";
};
}; };
}); });
ciScripts = forSystems (name: { ciScripts = forSystems (name: {
@@ -87,6 +130,7 @@
program = import ./ci.nix {inherit name system inputs;}; program = import ./ci.nix {inherit name system inputs;};
}; };
}); });
in deployScripts // ciScripts; in
deployScripts // ciScripts;
}; };
} }

View File

@@ -1,5 +1,13 @@
rec { rec {
tmpfilesConfig = {type, path, mode ? "-", user ? "-", group ? "-", age ? "-", argument ? "-"}: "${type} '${path}' ${mode} ${user} ${group} ${age} ${argument}"; tmpfilesConfig = {
type,
path,
mode ? "-",
user ? "-",
group ? "-",
age ? "-",
argument ? "-",
}: "${type} '${path}' ${mode} ${user} ${group} ${age} ${argument}";
restic = rec { restic = rec {
port = 3571; port = 3571;
@@ -8,14 +16,25 @@ rec {
}; };
firewall = lib: { firewall = lib: {
accept = { source, protocol, dport }: "nixos-fw -s ${lib.escapeShellArg source} -p ${lib.escapeShellArg protocol} --dport ${lib.escapeShellArg (toString dport)} -j nixos-fw-accept"; accept = {
source,
protocol,
dport,
}: "nixos-fw -s ${lib.escapeShellArg source} -p ${lib.escapeShellArg protocol} --dport ${lib.escapeShellArg (toString dport)} -j nixos-fw-accept";
addRules = lib.concatMapStringsSep "\n" (rule: "iptables -A ${rule}"); addRules = lib.concatMapStringsSep "\n" (rule: "iptables -A ${rule}");
removeRules = lib.concatMapStringsSep "\n" (rule: "iptables -D ${rule} || true"); removeRules = lib.concatMapStringsSep "\n" (rule: "iptables -D ${rule} || true");
}; };
serveHtml = file: pkgs: '' serveHtml = file: pkgs: ''
default_type "text/html"; default_type "text/html";
root ${pkgs.linkFarm "fahrplan" [{ name = "index.html"; path = file; }]}; root ${
pkgs.linkFarm "fahrplan" [
{
name = "index.html";
path = file;
}
]
};
index index.html; index index.html;
''; '';
@@ -50,7 +69,8 @@ rec {
github = "kmein"; github = "kmein";
email = "kmein@posteo.de"; email = "kmein@posteo.de";
name = "Kierán Meinhardt"; name = "Kierán Meinhardt";
sshKeys = pkgs: pkgs.lib.strings.splitString "\n" (pkgs.lib.strings.fileContents (pkgs.fetchurl { sshKeys = pkgs:
pkgs.lib.strings.splitString "\n" (pkgs.lib.strings.fileContents (pkgs.fetchurl {
url = "https://github.com/kmein.keys"; url = "https://github.com/kmein.keys";
sha256 = "09c6ny0rmpid1m0pc1wsmb3wyy9g721lf4kv55i4lrp42b3i2d5b"; sha256 = "09c6ny0rmpid1m0pc1wsmb3wyy9g721lf4kv55i4lrp42b3i2d5b";
})); }));

View File

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

View File

@@ -1,5 +1,9 @@
{ pkgs, wirelessInterface, colours, batteryName }: {
let pkgs,
wirelessInterface,
colours,
batteryName,
}: let
inherit (pkgs) lib; inherit (pkgs) lib;
setsid = script: setsid = script:
@@ -95,7 +99,13 @@ in {
{ {
block = "custom"; block = "custom";
interval = 60 * 5; interval = 60 * 5;
command = let spacetime = import <niveum/configs/spacetime.nix>; in pkgs.writers.writePython3 "sun.py" { libraries = [ pkgs.python3Packages.astral ]; flakeIgnore = [ "E121" "E501" ]; } command = let
spacetime = import <niveum/configs/spacetime.nix>;
in
pkgs.writers.writePython3 "sun.py" {
libraries = [pkgs.python3Packages.astral];
flakeIgnore = ["E121" "E501"];
}
'' ''
import astral import astral
import astral.moon import astral.moon

View File

@@ -42,7 +42,8 @@ let
radiorecord-logo = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 144 46'%3E%3Cpath d='M68.3 24H79c8-11.4 29.8-18.8 41.7-24l-5.4 1.6-.3.2-15.3 4.6-3.1.9-17 5.3-3.4-3.1h-5.4l-3.5 3.2L43 5 32 1.6 26.6 0c12.3 5.4 35.1 14.5 41.7 24zm5.2-11.4c.9 0 1.6.3 2.2.8.6.5.9 1.1.9 1.9 0 .8-.4 2-1.1 3-.5.7-1.2 1.2-1.9 1.3-.7 0-1.3-.5-1.8-1.2-.7-.9-1.1-2-1.1-2.9v-.2c-.2-1.5 1.1-2.7 2.8-2.7zm70.3 17.5c-.5-1.3-2.4-1.5-4.1-1.5h-15.9l-.1.4-.1.2-4.8 16-.1.2-.2.7h16.8c2.8 0 4.6-1 5.5-3.6L143 35c1-2.6 1.2-3.9.8-4.9zm-10.2 11.7h-6.3l2.7-8.9h6.3l-2.7 8.9zM94.5 29.1c-.8-.4-2-.5-3.1-.5H79.9c-2.8 0-4.6 1-5.5 3.6l-2.2 7.5c-.6 2-1.8 4.8.3 5.9.8.4 2 .5 3.1.5h11.5c2.8 0 4.6-1 5.5-3.6l2.2-7.5c.6-2 1.8-4.9-.3-5.9zm-9.2 12.7h-6.4l2.7-8.9H88l-2.7 8.9zm-39.8 0H32.8l.7-2.3h10.9l.1-.4.1-.2.9-2.9.1-.2.2-.7h-11l.7-2.3h13.8l.1-.4.1-.2.8-2.8.1-.2.2-.7H29.3l-.1.4-.2.2-4.8 16-.1.2-.1.7h21.2l.1-.4.1-.2.8-2.8.1-.2.2-.7h-1zm70.2-13.3H99.2c-1.6 5.5-3.3 11-4.9 16.6l-.1.2-.3.7h7.5l.1-.4.1-.2 1.7-5.6h2.5l2.7 5.7.1.1.1.3h8.2l-3.3-6.6c3.4-.4 4.2-1.8 4.8-4.2.2-.6.3-1.2.5-1.7 1.2-3.5-.1-4.8-3.2-4.9zm-4.3 5.1L111 35c-.1.4-.3.5-.7.6l-6.4 1.7 1.4-4.5h5.5c.6 0 .8.2.6.8zm-86.9 1.6c.2-.6.3-1.2.5-1.7 1.2-3.6-.1-4.9-3.2-4.9H5.3C3.7 34.1 2 39.6.4 45.2l-.1.2-.3.6h7.4l.1-.4.1-.2 1.7-5.6h2.5l2.7 5.7.1.1.1.3h8.2l-3.3-6.6c3.5-.3 4.3-1.7 4.9-4.1zm-7-1.6l-.4 1.4c-.1.4-.3.5-.7.6L10 37.3l1.4-4.5h5.5c.6 0 .8.2.6.8zM71.1 35l1.2-3.8c.5-1.3-.4-2.8-1.9-2.7H57c-2.8 0-4.6 1-5.5 3.6l-2.2 7.5c-.6 2-1.8 4.8.3 5.9.8.4 2 .5 3.1.5h12.5c1.5 0 3.2-1.4 3.6-2.7l1-3.7h-5.7l-.6 2.1h-7.3l2.7-8.9h7l-.8 2.2h6z' fill-rule='evenodd' clip-rule='evenodd' fill='%23fff'/%3E%3C/svg%3E"; radiorecord-logo = "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 144 46'%3E%3Cpath d='M68.3 24H79c8-11.4 29.8-18.8 41.7-24l-5.4 1.6-.3.2-15.3 4.6-3.1.9-17 5.3-3.4-3.1h-5.4l-3.5 3.2L43 5 32 1.6 26.6 0c12.3 5.4 35.1 14.5 41.7 24zm5.2-11.4c.9 0 1.6.3 2.2.8.6.5.9 1.1.9 1.9 0 .8-.4 2-1.1 3-.5.7-1.2 1.2-1.9 1.3-.7 0-1.3-.5-1.8-1.2-.7-.9-1.1-2-1.1-2.9v-.2c-.2-1.5 1.1-2.7 2.8-2.7zm70.3 17.5c-.5-1.3-2.4-1.5-4.1-1.5h-15.9l-.1.4-.1.2-4.8 16-.1.2-.2.7h16.8c2.8 0 4.6-1 5.5-3.6L143 35c1-2.6 1.2-3.9.8-4.9zm-10.2 11.7h-6.3l2.7-8.9h6.3l-2.7 8.9zM94.5 29.1c-.8-.4-2-.5-3.1-.5H79.9c-2.8 0-4.6 1-5.5 3.6l-2.2 7.5c-.6 2-1.8 4.8.3 5.9.8.4 2 .5 3.1.5h11.5c2.8 0 4.6-1 5.5-3.6l2.2-7.5c.6-2 1.8-4.9-.3-5.9zm-9.2 12.7h-6.4l2.7-8.9H88l-2.7 8.9zm-39.8 0H32.8l.7-2.3h10.9l.1-.4.1-.2.9-2.9.1-.2.2-.7h-11l.7-2.3h13.8l.1-.4.1-.2.8-2.8.1-.2.2-.7H29.3l-.1.4-.2.2-4.8 16-.1.2-.1.7h21.2l.1-.4.1-.2.8-2.8.1-.2.2-.7h-1zm70.2-13.3H99.2c-1.6 5.5-3.3 11-4.9 16.6l-.1.2-.3.7h7.5l.1-.4.1-.2 1.7-5.6h2.5l2.7 5.7.1.1.1.3h8.2l-3.3-6.6c3.4-.4 4.2-1.8 4.8-4.2.2-.6.3-1.2.5-1.7 1.2-3.5-.1-4.8-3.2-4.9zm-4.3 5.1L111 35c-.1.4-.3.5-.7.6l-6.4 1.7 1.4-4.5h5.5c.6 0 .8.2.6.8zm-86.9 1.6c.2-.6.3-1.2.5-1.7 1.2-3.6-.1-4.9-3.2-4.9H5.3C3.7 34.1 2 39.6.4 45.2l-.1.2-.3.6h7.4l.1-.4.1-.2 1.7-5.6h2.5l2.7 5.7.1.1.1.3h8.2l-3.3-6.6c3.5-.3 4.3-1.7 4.9-4.1zm-7-1.6l-.4 1.4c-.1.4-.3.5-.7.6L10 37.3l1.4-4.5h5.5c.6 0 .8.2.6.8zM71.1 35l1.2-3.8c.5-1.3-.4-2.8-1.9-2.7H57c-2.8 0-4.6 1-5.5 3.6l-2.2 7.5c-.6 2-1.8 4.8.3 5.9.8.4 2 .5 3.1.5h12.5c1.5 0 3.2-1.4 3.6-2.7l1-3.7h-5.7l-.6 2.1h-7.3l2.7-8.9h7l-.8 2.2h6z' fill-rule='evenodd' clip-rule='evenodd' fill='%23fff'/%3E%3C/svg%3E";
caster-fm = subdomain: port: "http://${subdomain}.caster.fm:${toString port}/listen.mp3?authn0b0236758bd0e178156d0787327a055d"; caster-fm = subdomain: port: "http://${subdomain}.caster.fm:${toString port}/listen.mp3?authn0b0236758bd0e178156d0787327a055d";
in [ in
[
{ {
stream = "http://lassul.us:8000/radio.ogg"; stream = "http://lassul.us:8000/radio.ogg";
station = "Radio lassulus"; station = "Radio lassulus";
@@ -106,7 +107,8 @@ in [
stream = "https://drachenhits.stream.laut.fm/drachenhits"; stream = "https://drachenhits.stream.laut.fm/drachenhits";
station = "Drachenhits"; station = "Drachenhits";
} }
] ++ ]
++
# generated via: curl https://radiorecord.ru/api/stations | jq '.result.stations | sort_by(.sort) | map({station:.title,desc:.tooltip,logo:.icon_fill_colored,stream:.stream_320})' > radiorecord.json # generated via: curl https://radiorecord.ru/api/stations | jq '.result.stations | sort_by(.sort) | map({station:.title,desc:.tooltip,logo:.icon_fill_colored,stream:.stream_320})' > radiorecord.json
importJSON ./radiorecord.json importJSON ./radiorecord.json
++ [ ++ [
@@ -1173,15 +1175,42 @@ importJSON ./radiorecord.json
station = "Dhol Radio"; station = "Dhol Radio";
desc = " "; desc = " ";
} }
{ stream = bhaktiworld "2bhanuman"; station = bhaktiworld-name "Hanuman"; } {
{ stream = bhaktiworld "djbeat"; station = bhaktiworld-name "Mantra Shakti"; } stream = bhaktiworld "2bhanuman";
{ stream = bhaktiworld "gurbani"; station = bhaktiworld-name "Sangam"; } station = bhaktiworld-name "Hanuman";
{ stream = bhaktiworld "hot"; station = bhaktiworld-name "Shiv"; } }
{ stream = bhaktiworld "ibadat"; station = bhaktiworld-name "Devi Maa"; } {
{ stream = bhaktiworld "iskon2b"; station = bhaktiworld-name "Om Sai"; } stream = bhaktiworld "djbeat";
{ stream = bhaktiworld "millenniumhits"; station = bhaktiworld-name "Krishna"; } station = bhaktiworld-name "Mantra Shakti";
{ stream = bhaktiworld "dard"; station = bhaktiworld-name "Shri Ram"; } }
{ stream = bhaktiworld "bhaktiworldindia"; station = bhaktiworld-name "Ganesh"; } {
stream = bhaktiworld "gurbani";
station = bhaktiworld-name "Sangam";
}
{
stream = bhaktiworld "hot";
station = bhaktiworld-name "Shiv";
}
{
stream = bhaktiworld "ibadat";
station = bhaktiworld-name "Devi Maa";
}
{
stream = bhaktiworld "iskon2b";
station = bhaktiworld-name "Om Sai";
}
{
stream = bhaktiworld "millenniumhits";
station = bhaktiworld-name "Krishna";
}
{
stream = bhaktiworld "dard";
station = bhaktiworld-name "Shri Ram";
}
{
stream = bhaktiworld "bhaktiworldindia";
station = bhaktiworld-name "Ganesh";
}
{ {
station = "Rockabilly Radio"; station = "Rockabilly Radio";
stream = "http://lin3.ash.fast-serv.com:6026/stream_96"; stream = "http://lin3.ash.fast-serv.com:6026/stream_96";
@@ -1376,12 +1405,36 @@ importJSON ./radiorecord.json
logo = "https://www.radiopartywelle.com/wp-content/uploads/2020/11/RPW-HAUPTLOGO-einfach-gute-Laune-1.png"; logo = "https://www.radiopartywelle.com/wp-content/uploads/2020/11/RPW-HAUPTLOGO-einfach-gute-Laune-1.png";
desc = "... einfach gute Laune!"; desc = "... einfach gute Laune!";
} }
{ stream = paloma "RP-Fresh"; station = paloma-name "Fresh"; logo = paloma-logo; } {
{ stream = paloma "RP-Kultschlager"; station = paloma-name "Kultschlager"; logo = paloma-logo; } stream = paloma "RP-Fresh";
{ stream = paloma "RP-Kuschelschlager"; station = paloma-name "Kuschelschlager"; logo = paloma-logo; } station = paloma-name "Fresh";
{ stream = paloma "RP-Partyschlager"; station = paloma-name "Partyschlager"; logo = paloma-logo; } logo = paloma-logo;
{ stream = paloma "RP-Volksmusik"; station = paloma-name "Volksmusik"; logo = paloma-logo; } }
{ stream = paloma "RADIOPALOMA"; station = paloma-name "Live"; logo = paloma-logo; } {
stream = paloma "RP-Kultschlager";
station = paloma-name "Kultschlager";
logo = paloma-logo;
}
{
stream = paloma "RP-Kuschelschlager";
station = paloma-name "Kuschelschlager";
logo = paloma-logo;
}
{
stream = paloma "RP-Partyschlager";
station = paloma-name "Partyschlager";
logo = paloma-logo;
}
{
stream = paloma "RP-Volksmusik";
station = paloma-name "Volksmusik";
logo = paloma-logo;
}
{
stream = paloma "RADIOPALOMA";
station = paloma-name "Live";
logo = paloma-logo;
}
{ {
stream = "http://91.121.59.45:8013/autodj"; stream = "http://91.121.59.45:8013/autodj";
station = "Feeling Floyd | AutoDJ"; station = "Feeling Floyd | AutoDJ";
@@ -1418,5 +1471,5 @@ http://radio.hostchefs.net:8046/stream?1520818130148
http://185.105.4.53:2339//;stream.mp3 http://185.105.4.53:2339//;stream.mp3
http://cast5.servcast.net:1390/;stream.mp3 http://cast5.servcast.net:1390/;stream.mp3
*/ */

View File

@@ -1,6 +1,11 @@
{ pkgs, lib, config, ... }: {
with lib; pkgs,
let cfg = config.niveum.dropbox; lib,
config,
...
}:
with lib; let
cfg = config.niveum.dropbox;
in { in {
options.niveum.dropbox = {enable = mkEnableOption "Dropbox";}; options.niveum.dropbox = {enable = mkEnableOption "Dropbox";};

View File

@@ -1,6 +1,10 @@
{ config, lib, pkgs, ... }: {
with lib; config,
let lib,
pkgs,
...
}:
with lib; let
cfg = config.niveum.hledger; cfg = config.niveum.hledger;
hledger-git = pkgs.writers.writeDashBin "hledger-git" '' hledger-git = pkgs.writers.writeDashBin "hledger-git" ''
LEDGER_DIR="$(dirname $LEDGER_FILE)" LEDGER_DIR="$(dirname $LEDGER_FILE)"

View File

@@ -1,6 +1,11 @@
{ pkgs, lib, config, ... }: {
with lib; pkgs,
let cfg = config.niveum.minecraft; lib,
config,
...
}:
with lib; let
cfg = config.niveum.minecraft;
in { in {
options.niveum.minecraft = {enable = mkEnableOption "Minecraft";}; options.niveum.minecraft = {enable = mkEnableOption "Minecraft";};

View File

@@ -1,6 +1,10 @@
{ config, lib, pkgs, ... }: {
with lib; config,
let lib,
pkgs,
...
}:
with lib; let
cfg = config.services.moodle-dl; cfg = config.services.moodle-dl;
json = pkgs.formats.json {}; json = pkgs.formats.json {};
moodle-dl-json = json.generate "moodle-dl.json" cfg.settings; moodle-dl-json = json.generate "moodle-dl.json" cfg.settings;
@@ -52,7 +56,6 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
users.users.moodle-dl = { users.users.moodle-dl = {
isSystemUser = true; isSystemUser = true;
home = cfg.directory; home = cfg.directory;

View File

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

View File

@@ -1,6 +1,10 @@
{ config, pkgs, lib, ... }: {
with lib; config,
let pkgs,
lib,
...
}:
with lib; let
netname = "retiolum"; netname = "retiolum";
cfg = config.networking.retiolum; cfg = config.networking.retiolum;
in { in {
@@ -27,7 +31,6 @@ in {
}; };
config = { config = {
services.tinc.networks.${netname} = { services.tinc.networks.${netname} = {
name = cfg.nodename; name = cfg.nodename;
hosts = builtins.mapAttrs hosts = builtins.mapAttrs

View File

@@ -1,13 +1,17 @@
{ config, lib, pkgs, ... }: {
config,
with lib; lib,
pkgs,
let ...
}:
with lib; let
cfg = config.services.spotifyd; cfg = config.services.spotifyd;
toml = pkgs.formats.toml {}; toml = pkgs.formats.toml {};
spotifydConf = if cfg.settings != {} then toml.generate "spotify.conf" cfg.settings else pkgs.writeText "spotifyd.conf" cfg.config; spotifydConf =
in if cfg.settings != {}
{ then toml.generate "spotify.conf" cfg.settings
else pkgs.writeText "spotifyd.conf" cfg.config;
in {
options = { options = {
services.spotifyd = { services.spotifyd = {
enable = mkEnableOption "spotifyd, a Spotify playing daemon"; enable = mkEnableOption "spotifyd, a Spotify playing daemon";

View File

@@ -1,6 +1,10 @@
{ config, lib, pkgs, ... }:
with lib;
{ {
config,
lib,
pkgs,
...
}:
with lib; {
options.niveum = { options.niveum = {
wirelessInterface = mkOption {type = types.str;}; wirelessInterface = mkOption {type = types.str;};

View File

@@ -1,6 +1,10 @@
{ lib, config, pkgs, ... }: {
with lib; lib,
let config,
pkgs,
...
}:
with lib; let
cfg = config.niveum.telegramBots; cfg = config.niveum.telegramBots;
botService = name: bot: botService = name: bot:
@@ -17,7 +21,8 @@ let
lib.strings.optionalString (bot.parseMode != null) lib.strings.optionalString (bot.parseMode != null)
"-d parse_mode=${bot.parseMode}" "-d parse_mode=${bot.parseMode}"
} }
'') bot.chatIds '')
bot.chatIds
++ ["fi"]); ++ ["fi"]);
}; };
in { in {

View File

@@ -1,6 +1,10 @@
{ pkgs, lib, config, ... }: {
with lib; pkgs,
let lib,
config,
...
}:
with lib; let
cfg = config.niveum.traadfri; cfg = config.niveum.traadfri;
traadfri = pkgs.callPackage <traadfri> { traadfri = pkgs.callPackage <traadfri> {
libcoap = pkgs.callPackage <niveum/packages/libcoap.nix> {tls = true;}; libcoap = pkgs.callPackage <niveum/packages/libcoap.nix> {tls = true;};
@@ -22,18 +26,24 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = [ environment.systemPackages =
[
(pkgs.writers.writeDashBin "traadfri" '' (pkgs.writers.writeDashBin "traadfri" ''
TRAADFRI_USER="${cfg.user}" \ TRAADFRI_USER="${cfg.user}" \
TRAADFRI_KEY="${cfg.key}" \ TRAADFRI_KEY="${cfg.key}" \
TRAADFRI_HUB="${cfg.host}" \ TRAADFRI_HUB="${cfg.host}" \
${traadfri}/bin/traadfri $@ ${traadfri}/bin/traadfri $@
'') '')
] ++ lib.mapAttrsToList (name: value: pkgs.writers.writeDashBin "traadfri-${name}" '' ]
++ lib.mapAttrsToList (name: value:
pkgs.writers.writeDashBin "traadfri-${name}" ''
exec traadfri --target Room ${toString value} "$@" exec traadfri --target Room ${toString value} "$@"
'') cfg.rooms '')
++ lib.mapAttrsToList (name: value: pkgs.writers.writeDashBin "traadfri-${name}" '' cfg.rooms
++ lib.mapAttrsToList (name: value:
pkgs.writers.writeDashBin "traadfri-${name}" ''
exec traadfri --target Bulb ${toString value} "$@" exec traadfri --target Bulb ${toString value} "$@"
'') cfg.bulbs; '')
cfg.bulbs;
}; };
} }

View File

@@ -1,6 +1,10 @@
{ config, lib, pkgs, ... }: {
with lib; config,
let lib,
pkgs,
...
}:
with lib; let
tuna = pkgs.callPackage <tuna> {}; tuna = pkgs.callPackage <tuna> {};
cfg = config.services.tuna; cfg = config.services.tuna;
in { in {

View File

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

View File

@@ -1,4 +1,10 @@
{ lib, stdenv, makeWrapper, pandoc, fetchFromGitHub }: {
lib,
stdenv,
makeWrapper,
pandoc,
fetchFromGitHub,
}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "daybook"; name = "daybook";
src = fetchFromGitHub { src = fetchFromGitHub {

View File

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

View File

@@ -1,4 +1,10 @@
{ fetchurl, fetchgit, linkFarm, runCommandNoCC, gnutar }: rec { {
fetchurl,
fetchgit,
linkFarm,
runCommandNoCC,
gnutar,
}: rec {
offline_cache = linkFarm "offline" packages; offline_cache = linkFarm "offline" packages;
packages = [ packages = [
{ {

View File

@@ -1,4 +1,10 @@
{ lib, stdenv, xdo, makeWrapper, fetchFromGitHub }: {
lib,
stdenv,
xdo,
makeWrapper,
fetchFromGitHub,
}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "devour"; name = "devour";
version = "master"; version = "master";

View File

@@ -1,5 +1,8 @@
{ fetchzip, symlinkJoin, lib }: {
let fetchzip,
symlinkJoin,
lib,
}: let
gfs-font = name: sha256: gfs-font = name: sha256:
fetchzip { fetchzip {
inherit name sha256; inherit name sha256;
@@ -10,7 +13,8 @@ let
unzip -j -o $downloadedFile "**/*.otf" -d $out/share/fonts/opentype unzip -j -o $downloadedFile "**/*.otf" -d $out/share/fonts/opentype
''; '';
}; };
in symlinkJoin { in
symlinkJoin {
name = "gfs-fonts"; name = "gfs-fonts";
paths = lib.mapAttrsToList gfs-font { paths = lib.mapAttrsToList gfs-font {
GFS_Artemisia = "1q39086pr2jhv118fjfv6l1li6japv4pdjnhh1scqw06mqrmydf4"; GFS_Artemisia = "1q39086pr2jhv118fjfv6l1li6japv4pdjnhh1scqw06mqrmydf4";

View File

@@ -2,7 +2,6 @@
{pkgs ? import <nixpkgs> {}}: {pkgs ? import <nixpkgs> {}}:
with pkgs; with pkgs;
with pkgs.python2Packages; with pkgs.python2Packages;
buildPythonApplication rec { buildPythonApplication rec {
pname = "gourmet"; pname = "gourmet";
version = "0.17.4"; version = "0.17.4";

View File

@@ -1,4 +1,10 @@
{ lib, stdenv, cmake, python3, fetchFromGitHub }: {
lib,
stdenv,
cmake,
python3,
fetchFromGitHub,
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2017.09.06"; version = "2017.09.06";
name = "iolanguage-${version}"; name = "iolanguage-${version}";
@@ -17,8 +23,7 @@ stdenv.mkDerivation rec {
''; '';
meta = with lib; { meta = with lib; {
homepage = "https://iolanguage.org/"; homepage = "https://iolanguage.org/";
description = description = "Io programming language. Inspired by Self, Smalltalk and LISP.";
"Io programming language. Inspired by Self, Smalltalk and LISP.";
license = licenses.bsd3; license = licenses.bsd3;
}; };
} }

View File

@@ -1,4 +1,7 @@
{ stdenv, fetchurl }: {
stdenv,
fetchurl,
}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "ix"; name = "ix";
src = fetchurl { src = fetchurl {

View File

@@ -1,6 +1,18 @@
{ lib, pkg-config, fetchFromGitHub, automake, autoconf, which, libtool, stdenv, gnutls {
, doxygen, asciidoc lib,
, tls ? false, docs ? true }: pkg-config,
fetchFromGitHub,
automake,
autoconf,
which,
libtool,
stdenv,
gnutls,
doxygen,
asciidoc,
tls ? false,
docs ? true,
}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "libcoap"; name = "libcoap";
version = "unstable-2021-05-28"; version = "unstable-2021-05-28";
@@ -11,7 +23,8 @@ stdenv.mkDerivation {
sha256 = "1igjv0hbwmakdccp5in4gw9w2p5swxdwsdx0glyna2s29sh1d37x"; sha256 = "1igjv0hbwmakdccp5in4gw9w2p5swxdwsdx0glyna2s29sh1d37x";
fetchSubmodules = true; fetchSubmodules = true;
}; };
buildInputs = [ which pkg-config automake autoconf libtool ] buildInputs =
[which pkg-config automake autoconf libtool]
++ lib.optionals docs [doxygen asciidoc] ++ lib.optionals docs [doxygen asciidoc]
++ lib.optional tls gnutls; ++ lib.optional tls gnutls;
# preConfigure = "./autogen.sh"; # preConfigure = "./autogen.sh";

View File

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

View File

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

View File

@@ -1,4 +1,11 @@
{ lib, stdenv, cmake, pkgconfig, libogg, fetchFromGitHub }: {
lib,
stdenv,
cmake,
pkgconfig,
libogg,
fetchFromGitHub,
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "opustags"; name = "opustags";
version = "1.3.0"; version = "1.3.0";

View File

@@ -1,4 +1,9 @@
{ fetchPypi, buildPythonPackage, pygtrie, ... }: {
fetchPypi,
buildPythonPackage,
pygtrie,
...
}:
buildPythonPackage rec { buildPythonPackage rec {
pname = "betacode"; pname = "betacode";
version = "0.2"; version = "0.2";

View File

@@ -1,4 +1,11 @@
{ fetchFromGitHub, buildPythonPackage, backports_functools_lru_cache, selenium, regex, ... }: {
fetchFromGitHub,
buildPythonPackage,
backports_functools_lru_cache,
selenium,
regex,
...
}:
buildPythonPackage rec { buildPythonPackage rec {
pname = "indic_transliteration"; pname = "indic_transliteration";
version = "unstable-2020-12-15"; version = "unstable-2020-12-15";

View File

@@ -1,6 +1,10 @@
{ buildPythonApplication, fetchPypi, requests }: {
let buildPythonApplication,
in buildPythonApplication rec { fetchPypi,
requests,
}: let
in
buildPythonApplication rec {
pname = "instaloader"; pname = "instaloader";
version = "4.2.4"; version = "4.2.4";
src = fetchPypi { src = fetchPypi {

View File

@@ -1,4 +1,8 @@
{ fetchPypi, buildPythonPackage, ... }: {
fetchPypi,
buildPythonPackage,
...
}:
buildPythonPackage rec { buildPythonPackage rec {
pname = "pygtrie"; pname = "pygtrie";
version = "2.3"; version = "2.3";

View File

@@ -1,5 +1,13 @@
{ buildPythonPackage, buildPythonApplication, fetchPypi, pytestrunner, six, beautifulsoup4, requests, dbus-python }: {
let buildPythonPackage,
buildPythonApplication,
fetchPypi,
pytestrunner,
six,
beautifulsoup4,
requests,
dbus-python,
}: let
lyricwikia = buildPythonPackage rec { lyricwikia = buildPythonPackage rec {
pname = "lyricwikia"; pname = "lyricwikia";
version = "0.1.9"; version = "0.1.9";
@@ -11,7 +19,8 @@ let
propagatedBuildInputs = [six beautifulsoup4 requests]; propagatedBuildInputs = [six beautifulsoup4 requests];
doCheck = false; doCheck = false;
}; };
in buildPythonApplication rec { in
buildPythonApplication rec {
pname = "spotify-cli-linux"; pname = "spotify-cli-linux";
version = "1.4.2"; version = "1.4.2";
src = fetchPypi { src = fetchPypi {

View File

@@ -1,5 +1,9 @@
{ stdenv, fetchFromGitHub, lib, pandoc }: {
let stdenv,
fetchFromGitHub,
lib,
pandoc,
}: let
owner = "kamalist"; owner = "kamalist";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {

View File

@@ -1,5 +1,9 @@
{ ruby, stdenv, bundlerEnv, fetchFromGitHub }: {
let ruby,
stdenv,
bundlerEnv,
fetchFromGitHub,
}: let
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kmein"; owner = "kmein";
repo = "bvg"; repo = "bvg";
@@ -13,7 +17,8 @@ let
lockfile = "${src.out}/Gemfile.lock"; lockfile = "${src.out}/Gemfile.lock";
gemset = "${src.out}/gemset.nix"; gemset = "${src.out}/gemset.nix";
}; };
in stdenv.mkDerivation { in
stdenv.mkDerivation {
name = "bvg"; name = "bvg";
buildInputs = [env.wrappedRuby]; buildInputs = [env.wrappedRuby];
script = "${src.out}/bvg.rb"; script = "${src.out}/bvg.rb";

View File

@@ -1,4 +1,10 @@
{ lib, stdenv, makeWrapper, pandoc, fetchFromGitHub }: {
lib,
stdenv,
makeWrapper,
pandoc,
fetchFromGitHub,
}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "daybook"; name = "daybook";
src = fetchFromGitHub { src = fetchFromGitHub {

View File

@@ -1,9 +1,16 @@
{ pkgs, lib, ... }: {
let pkgs,
lib,
...
}: let
kpaste = pkgs.callPackage <stockholm/krebs/5pkgs/simple/kpaste> {}; kpaste = pkgs.callPackage <stockholm/krebs/5pkgs/simple/kpaste> {};
opustags = pkgs.callPackage <niveum/packages/opustags.nix> {}; opustags = pkgs.callPackage <niveum/packages/opustags.nix> {};
betacode = pkgs.callPackage <niveum/packages/python3Packages/betacode.nix> {}; betacode = pkgs.callPackage <niveum/packages/python3Packages/betacode.nix> {};
wrapScript = { packages ? [ ], name, script }: wrapScript = {
packages ? [],
name,
script,
}:
pkgs.writers.writeDashBin name '' pkgs.writers.writeDashBin name ''
PATH=$PATH:${ PATH=$PATH:${
lib.makeBinPath (packages ++ [pkgs.coreutils pkgs.findutils]) lib.makeBinPath (packages ++ [pkgs.coreutils pkgs.findutils])
@@ -16,7 +23,8 @@ let
rev = "0582b495937117d899ce8ef715a89c6cc25a36cf"; rev = "0582b495937117d899ce8ef715a89c6cc25a36cf";
sha256 = "0c4hkny4zkknlimc9yi9ljss2cws4zn8lzd8ip9b8mfsm094dlfl"; sha256 = "0c4hkny4zkknlimc9yi9ljss2cws4zn8lzd8ip9b8mfsm094dlfl";
}; };
in rec { in
rec {
auc = pkgs.callPackage ./auc.nix {}; auc = pkgs.callPackage ./auc.nix {};
instaget = wrapScript { instaget = wrapScript {
@@ -32,13 +40,13 @@ in rec {
| ${pkgs.man}/bin/man -l - | ${pkgs.man}/bin/man -l -
''; '';
trans = trans = let
let
script = pkgs.fetchurl { script = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/soimort/translate-shell/gh-pages/trans.awk"; url = "https://raw.githubusercontent.com/soimort/translate-shell/gh-pages/trans.awk";
sha256 = "178r8d27bry1mzd1g8x2svp4w469hwv7nnxnmnsinx974skjx0jb"; sha256 = "178r8d27bry1mzd1g8x2svp4w469hwv7nnxnmnsinx974skjx0jb";
}; };
in pkgs.writers.writeDashBin "trans" '' in
pkgs.writers.writeDashBin "trans" ''
${pkgs.gawk}/bin/gawk -f ${script} -- "$@" ${pkgs.gawk}/bin/gawk -f ${script} -- "$@"
''; '';
@@ -67,7 +75,8 @@ in rec {
script = ./mail-kill.sh; script = ./mail-kill.sh;
packages = [pkgs.notmuch]; packages = [pkgs.notmuch];
}; };
in pkgs.symlinkJoin { in
pkgs.symlinkJoin {
name = "much-scripts"; name = "much-scripts";
paths = [mail-send much-current-query mail-reply mail-kill]; paths = [mail-send much-current-query mail-reply mail-kill];
}; };
@@ -94,14 +103,15 @@ in rec {
${pkgs.xclip}/bin/xclip -selection clipboard -out | ${pkgs.curl}/bin/curl -G http://tts.r/api/tts --data-urlencode 'text@-' | ${pkgs.mpv}/bin/mpv - ${pkgs.xclip}/bin/xclip -selection clipboard -out | ${pkgs.curl}/bin/curl -G http://tts.r/api/tts --data-urlencode 'text@-' | ${pkgs.mpv}/bin/mpv -
''; '';
interdimensional-cable = interdimensional-cable = let
let nimaid-github-io = pkgs.fetchFromGitHub { nimaid-github-io = pkgs.fetchFromGitHub {
owner = "nimaid"; owner = "nimaid";
repo = "nimaid.github.io"; repo = "nimaid.github.io";
rev = "9cb4ede215be6bb01bd2df1ef3e9689cc8c4eb9e"; rev = "9cb4ede215be6bb01bd2df1ef3e9689cc8c4eb9e";
sha256 = "1g47cj5an7xgmhpc09m7qim5j9rspqxvnzfy90cnlvz4pg8hil96"; sha256 = "1g47cj5an7xgmhpc09m7qim5j9rspqxvnzfy90cnlvz4pg8hil96";
}; };
in pkgs.writeShellScriptBin "interdimensional-cable" '' in
pkgs.writeShellScriptBin "interdimensional-cable" ''
export PATH=${lib.makeBinPath [pkgs.mpv pkgs.jq pkgs.gnused]} 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/#') mpv --shuffle --playlist=<(jq -r '.videos[]' ${nimaid-github-io}/tv/interdimensional_database.json | sed 's#^#https://youtu.be/#')
''; '';
@@ -187,13 +197,17 @@ in rec {
}; };
closest = pkgs.writers.writeDashBin "closest" '' closest = pkgs.writers.writeDashBin "closest" ''
${pkgs.writers.writeHaskellBin "closest" { ${
pkgs.writers.writeHaskellBin "closest" {
libraries = with pkgs.haskellPackages; [parallel optparse-applicative edit-distance]; libraries = with pkgs.haskellPackages; [parallel optparse-applicative edit-distance];
ghcArgs = ["-O3" "-threaded"]; ghcArgs = ["-O3" "-threaded"];
} (builtins.readFile ./distance.hs)}/bin/closest +RTS -N4 -RTS --dictionary ${pkgs.fetchurl { } (builtins.readFile ./distance.hs)
}/bin/closest +RTS -N4 -RTS --dictionary ${
pkgs.fetchurl {
url = "https://gist.github.com/MarvinJWendt/2f4f4154b8ae218600eb091a5706b5f4/raw/36b70dd6be330aa61cd4d4cdfda6234dcb0b8784/wordlist-german.txt"; url = "https://gist.github.com/MarvinJWendt/2f4f4154b8ae218600eb091a5706b5f4/raw/36b70dd6be330aa61cd4d4cdfda6234dcb0b8784/wordlist-german.txt";
sha256 = "0vr4lmlckgvj4s8sk502sknq9pf3297rvasj5sqqm05zzbdgpppj"; sha256 = "0vr4lmlckgvj4s8sk502sknq9pf3297rvasj5sqqm05zzbdgpppj";
}} "$@" }
} "$@"
''; '';
horoscope = pkgs.callPackage ./horoscope {}; horoscope = pkgs.callPackage ./horoscope {};
@@ -265,8 +279,7 @@ in rec {
}; };
linkhandler = wrapScript { linkhandler = wrapScript {
packages = packages = [pkgs.utillinux pkgs.mpv pkgs.curl pkgs.gnused pkgs.sxiv pkgs.ts];
[ pkgs.utillinux pkgs.mpv pkgs.curl pkgs.gnused pkgs.sxiv pkgs.ts ];
script = "${voidrice}/.local/bin/linkhandler"; script = "${voidrice}/.local/bin/linkhandler";
name = "linkhandler"; name = "linkhandler";
}; };
@@ -372,13 +385,19 @@ in rec {
unicodmenu = pkgs.callPackage ./unicodmenu.nix {}; unicodmenu = pkgs.callPackage ./unicodmenu.nix {};
mpv-radio = mpv-radio = let
let
streams = import <niveum/lib/streams.nix> { streams = import <niveum/lib/streams.nix> {
di-fm-key = lib.strings.fileContents <secrets/di.fm/key>; di-fm-key = lib.strings.fileContents <secrets/di.fm/key>;
}; };
streams-tsv = pkgs.writeText "streams.tsv" (lib.concatMapStringsSep "\n" ({ desc ? "", stream, station, ... }: "${station}\t${desc}\t${stream}") streams); streams-tsv = pkgs.writeText "streams.tsv" (lib.concatMapStringsSep "\n" ({
in pkgs.writers.writeDashBin "mpv-radio" '' desc ? "",
stream,
station,
...
}: "${station}\t${desc}\t${stream}")
streams);
in
pkgs.writers.writeDashBin "mpv-radio" ''
exec ${pkgs.mpv}/bin/mpv --force-window=yes "$(${pkgs.dmenu}/bin/dmenu -i -l 5 < ${streams-tsv} | ${pkgs.coreutils}/bin/cut -f3)" exec ${pkgs.mpv}/bin/mpv --force-window=yes "$(${pkgs.dmenu}/bin/dmenu -i -l 5 < ${streams-tsv} | ${pkgs.coreutils}/bin/cut -f3)"
''; '';
@@ -428,7 +447,8 @@ in rec {
${pkgs.wget}/bin/wget -q -N https://github.com/Mic92/nix-index-database/releases/latest/download/$filename ${pkgs.wget}/bin/wget -q -N https://github.com/Mic92/nix-index-database/releases/latest/download/$filename
ln -f $filename files ln -f $filename files
''; '';
} // { }
// {
devour = pkgs.callPackage <niveum/packages/devour.nix> {}; devour = pkgs.callPackage <niveum/packages/devour.nix> {};
depp = pkgs.callPackage <niveum/packages/depp.nix> {}; depp = pkgs.callPackage <niveum/packages/depp.nix> {};
text2pdf = pkgs.callPackage <niveum/packages/text2pdf.nix> {}; text2pdf = pkgs.callPackage <niveum/packages/text2pdf.nix> {};

View File

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

View File

@@ -1,4 +1,9 @@
{ writeShellScriptBin, wget, curl, jq }: {
writeShellScriptBin,
wget,
curl,
jq,
}:
writeShellScriptBin "instaget" '' writeShellScriptBin "instaget" ''
for url in "$@"; do for url in "$@"; do
json="$(${curl}/bin/curl -s "$url" \ json="$(${curl}/bin/curl -s "$url" \

View File

@@ -1,5 +1,8 @@
{ writers, lib, xlockmore }: {
let writers,
lib,
xlockmore,
}: let
xlockModes = lib.concatStringsSep "\\n" [ xlockModes = lib.concatStringsSep "\\n" [
# "braid" # "braid"
"galaxy" "galaxy"
@@ -8,7 +11,8 @@ let
"pyro2" "pyro2"
"space" "space"
]; ];
in writers.writeDashBin "k-lock" '' in
writers.writeDashBin "k-lock" ''
MODE=$(printf "${xlockModes}" | shuf -n 1) MODE=$(printf "${xlockModes}" | shuf -n 1)
${xlockmore}/bin/xlock \ ${xlockmore}/bin/xlock \

View File

@@ -1,10 +1,14 @@
# klem < klemm < klemmbrett ~ clipboard # klem < klemm < klemmbrett ~ clipboard
{ pkgs, lib, ... }@args: {
let pkgs,
lib,
...
} @ args: let
cfg = eval.config; cfg = eval.config;
eval = lib.evalModules { eval = lib.evalModules {
modules = [{ modules = [
{
_file = toString ./klem.nix; _file = toString ./klem.nix;
imports = [(args.config or {})]; imports = [(args.config or {})];
options = { options = {
@@ -27,13 +31,15 @@ let
type = lib.types.attrs; type = lib.types.attrs;
}; };
}; };
}]; }
];
}; };
scriptCase = option: script: '' scriptCase = option: script: ''
'${option}') ${toString script} ;; '${option}') ${toString script} ;;
''; '';
in pkgs.writers.writeDashBin "klem" '' in
pkgs.writers.writeDashBin "klem" ''
${pkgs.xclip}/bin/xclip -selection ${cfg.selection} -out \ ${pkgs.xclip}/bin/xclip -selection ${cfg.selection} -out \
| case $(echo "${ | case $(echo "${
lib.concatStringsSep "\n" (lib.attrNames cfg.scripts) lib.concatStringsSep "\n" (lib.attrNames cfg.scripts)

View File

@@ -1,5 +1,7 @@
{ pkgs, lib }: {
let pkgs,
lib,
}: let
streams-tsv = pkgs.fetchurl { streams-tsv = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/jnk22/kodinerds-iptv/master/iptv/kodi/kodi_tv.m3u"; url = "https://raw.githubusercontent.com/jnk22/kodinerds-iptv/master/iptv/kodi/kodi_tv.m3u";
sha256 = "1cw1gmb16vwh6qfw0z3wjjfgn0zg2qplnddqzva5b0xx2g2appla"; sha256 = "1cw1gmb16vwh6qfw0z3wjjfgn0zg2qplnddqzva5b0xx2g2appla";
@@ -8,6 +10,7 @@ let
mv $out.tmp $out mv $out.tmp $out
''; '';
}; };
in pkgs.writers.writeDashBin "mpv-tv" '' in
pkgs.writers.writeDashBin "mpv-tv" ''
exec ${pkgs.mpv}/bin/mpv --force-window=yes "$(${pkgs.dmenu}/bin/dmenu -i -l 5 < ${streams-tsv} | ${pkgs.coreutils}/bin/cut -f2)" exec ${pkgs.mpv}/bin/mpv --force-window=yes "$(${pkgs.dmenu}/bin/dmenu -i -l 5 < ${streams-tsv} | ${pkgs.coreutils}/bin/cut -f2)"
'' ''

View File

@@ -1,4 +1,9 @@
{ lib, fetchFromGitHub, stdenv, fzf }: {
lib,
fetchFromGitHub,
stdenv,
fzf,
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "nav"; name = "nav";
version = "8da22b1"; version = "8da22b1";

View File

@@ -1,5 +1,4 @@
{ pkgs }: {pkgs}: let
let
inherit (pkgs) lib; inherit (pkgs) lib;
playlistAPI = "https://radio.lassul.us"; playlistAPI = "https://radio.lassul.us";

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