From 4a0e27488e80935719f3dc41a1c337f94068e450 Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 2 Feb 2023 19:27:00 +0100 Subject: l mail: remove empty newlines --- lass/2configs/mail.nix | 2 -- 1 file changed, 2 deletions(-) (limited to 'lass') diff --git a/lass/2configs/mail.nix b/lass/2configs/mail.nix index f5b2e22b7..85259176b 100644 --- a/lass/2configs/mail.nix +++ b/lass/2configs/mail.nix @@ -92,8 +92,6 @@ let tag-new-mails = pkgs.writeDashBin "nm-tag-init" '' ${pkgs.notmuch}/bin/notmuch new - ${lib.concatMapStringsSep "\n" (i: '' - '') (lib.mapAttrsToList lib.nameValuePair mailboxes)} ${lib.concatMapStringsSep "\n" (i: '' mkdir -p "$HOME/Maildir/.${i.name}/cur" for mail in $(${pkgs.notmuch}/bin/notmuch search --output=files 'tag:inbox and (${lib.concatMapStringsSep " or " (f: "${f}") i.value})'); do -- cgit v1.2.3 From b3ccfd3a789e59f16d2e1ef616cc23e89bab1598 Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 2 Feb 2023 19:27:13 +0100 Subject: l mail: retry muchsync until success --- lass/2configs/mail.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lass') diff --git a/lass/2configs/mail.nix b/lass/2configs/mail.nix index 85259176b..0adef8f8c 100644 --- a/lass/2configs/mail.nix +++ b/lass/2configs/mail.nix @@ -184,7 +184,9 @@ let "unset wait_key \ ${pkgs.writeDash "muchsync" '' set -efu - ${pkgs.muchsync}/bin/muchsync -F lass@green.r + until ${pkgs.muchsync}/bin/muchsync -F lass@green.r; do + sleep 1 + done ''} \ 'run muchsync to green.r' -- cgit v1.2.3 From 2fa9f8601ed3f5c81316b9b780a03d414b4de9b3 Mon Sep 17 00:00:00 2001 From: lassulus Date: Fri, 3 Feb 2023 13:25:44 +0100 Subject: l baseX: flameshot-once -> flameshot --- lass/2configs/baseX.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lass') diff --git a/lass/2configs/baseX.nix b/lass/2configs/baseX.nix index efd6c8a24..79777429a 100644 --- a/lass/2configs/baseX.nix +++ b/lass/2configs/baseX.nix @@ -91,11 +91,11 @@ in { xorg.xhost xsel zathura - flameshot-once + flameshot (pkgs.writeDashBin "screenshot" '' set -efu - ${pkgs.flameshot-once}/bin/flameshot-once + ${pkgs.flameshot}/bin/flameshot gui ${pkgs.klem}/bin/klem '') ]; -- cgit v1.2.3 From 55d3bb391f32f1abe27f1e0f58a8baac82b703cc Mon Sep 17 00:00:00 2001 From: lassulus Date: Sat, 4 Feb 2023 18:46:51 +0100 Subject: l jitsi: more configs for bigger groups --- lass/2configs/jitsi.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'lass') diff --git a/lass/2configs/jitsi.nix b/lass/2configs/jitsi.nix index fa41f6634..2c148dcdd 100644 --- a/lass/2configs/jitsi.nix +++ b/lass/2configs/jitsi.nix @@ -8,6 +8,16 @@ enableWelcomePage = true; requireDisplayName = true; analytics.disabled = true; + startAudioOnly = true; + channelLastN = 4; + stunServers = [ + # - https://www.kuketz-blog.de/jitsi-meet-server-einstellungen-fuer-einen-datenschutzfreundlichen-betrieb/ + { urls = "turn:turn.matrix.org:3478?transport=udp"; } + { urls = "turn:turn.matrix.org:3478?transport=tcp"; } + # - services.coturn: + #{ urls = "turn:turn.${domainName}:3479?transport=udp"; } + #{ urls = "turn:turn.${domainName}:3479?transport=tcp"; } + ]; }; interfaceConfig = { SHOW_JITSI_WATERMARK = false; @@ -17,6 +27,10 @@ }; }; + services.jitsi-videobridge.config = { + org.jitsi.videobridge.TRUST_BWE = false; + }; + krebs.iptables.tables.filter.INPUT.rules = [ { predicate = "-p tcp --dport 4443"; target = "ACCEPT"; } { predicate = "-p udp --dport 10000"; target = "ACCEPT"; } -- cgit v1.2.3 From 2a7501b66ccb71d30dc65f76a0a8d46daa88efe0 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 6 Feb 2023 12:46:49 +0100 Subject: l aergia.r: connect to c-base vpn --- lass/1systems/aergia/config.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'lass') diff --git a/lass/1systems/aergia/config.nix b/lass/1systems/aergia/config.nix index ed5bbcf12..af88a0260 100644 --- a/lass/1systems/aergia/config.nix +++ b/lass/1systems/aergia/config.nix @@ -26,6 +26,7 @@ + ]; system.stateVersion = "22.11"; -- cgit v1.2.3 From 6c982d0487ae438b3766a6cf8a9c96fa2a2398a4 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 6 Feb 2023 12:48:11 +0100 Subject: l print: enable avahi --- lass/2configs/print.nix | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'lass') diff --git a/lass/2configs/print.nix b/lass/2configs/print.nix index c2b3e8377..5769f9b15 100644 --- a/lass/2configs/print.nix +++ b/lass/2configs/print.nix @@ -6,5 +6,19 @@ pkgs.foomatic-filters pkgs.gutenprint ]; + browsing = true; + browsedConf = '' + BrowseDNSSDSubTypes _cups,_print + BrowseLocalProtocols all + BrowseRemoteProtocols all + CreateIPPPrinterQueues All + + BrowseProtocols all + ''; + }; + services.avahi = { + enable = true; + openFirewall = true; + nssmdns = true; }; } -- cgit v1.2.3 From 278e6c354a7f5b19465641144784c5e22a01c4db Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 6 Feb 2023 12:49:09 +0100 Subject: l aergia.r: add more power managment stuff --- lass/1systems/aergia/physical.nix | 49 ++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 6 deletions(-) (limited to 'lass') diff --git a/lass/1systems/aergia/physical.nix b/lass/1systems/aergia/physical.nix index de5f7540e..6200bbfc5 100644 --- a/lass/1systems/aergia/physical.nix +++ b/lass/1systems/aergia/physical.nix @@ -20,15 +20,37 @@ boot.kernelParams = [ # Enable energy savings during sleep "mem_sleep_default=deep" - "initcall_blacklist=acpi_cpufreq_init" + + "amd_pstate=passive" # for ryzenadj -i "iomem=relaxed" ]; - # Enables the amd cpu scaling https://www.kernel.org/doc/html/latest/admin-guide/pm/amd-pstate.html - # On recent AMD CPUs this can be more energy efficient. - boot.kernelModules = [ "amd-pstate" "kvm-amd" ]; + boot.kernelModules = [ + # Enables the amd cpu scaling https://www.kernel.org/doc/html/latest/admin-guide/pm/amd-pstate.html + # On recent AMD CPUs this can be more energy efficient. + "amd-pstate" + "kvm-amd" + + # needed for zenstates + "msr" + + # zenpower + "zenpower" + ]; + + boot.extraModulePackages = [ + (config.boot.kernelPackages.zenpower.overrideAttrs (old: { + src = pkgs.fetchFromGitea { + domain = "git.exozy.me"; + owner = "a"; + repo = "zenpower3"; + rev = "c176fdb0d5bcba6ba2aba99ea36812e40f47751f"; + hash = "sha256-d2WH8Zv7F0phZmEKcDiaak9On+Mo9bAFhMulT/N5FWI="; + }; + })) + ]; # hardware.cpu.amd.updateMicrocode = true; @@ -36,7 +58,16 @@ "amdgpu" ]; - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.availableKernelModules = [ + "nvme" + "thunderbolt" + "xhci_pci" + "usbhid" + ]; + + boot.initrd.kernelModules = [ + "amdgpu" + ]; environment.systemPackages = [ pkgs.vulkan-tools @@ -54,7 +85,13 @@ hardware.video.hidpi.enable = lib.mkDefault true; # corectrl - programs.corectrl.enable = true; + programs.corectrl = { + enable = true; + gpuOverclock = { + enable = true; + ppfeaturemask = "0xffffffff"; + }; + }; users.users.mainUser.extraGroups = [ "corectrl" ]; # use newer ryzenadj -- cgit v1.2.3 From f4c679dd918e23459a590099bcf6c1847afdfb02 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 6 Feb 2023 12:50:00 +0100 Subject: l aergia.r: fix xmodmap not running on startup --- lass/1systems/aergia/physical.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lass') diff --git a/lass/1systems/aergia/physical.nix b/lass/1systems/aergia/physical.nix index 6200bbfc5..93bf2a32e 100644 --- a/lass/1systems/aergia/physical.nix +++ b/lass/1systems/aergia/physical.nix @@ -109,7 +109,7 @@ # keyboard quirks services.xserver.displayManager.sessionCommands = '' - xmodmap -e 'keycode 96 = F12 Insert F12 F12' # rebind shift + F12 to shift + insert + ${pkgs.xorg.xmodmap}/bin/xmodmap -e 'keycode 96 = F12 Insert F12 F12' # rebind shift + F12 to shift + insert ''; services.udev.extraHwdb = /* sh */ '' # disable back buttons -- cgit v1.2.3 From ff76a04ea6b06f79ae33fdbfbd4892b0e89d6106 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 6 Feb 2023 12:50:33 +0100 Subject: l aergia.r: enable microcode updates --- lass/1systems/aergia/physical.nix | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lass') diff --git a/lass/1systems/aergia/physical.nix b/lass/1systems/aergia/physical.nix index 93bf2a32e..44bd53c22 100644 --- a/lass/1systems/aergia/physical.nix +++ b/lass/1systems/aergia/physical.nix @@ -120,4 +120,7 @@ # ignore power key services.logind.extraConfig = "HandlePowerKey=ignore"; + + # update cpu microcode + hardware.cpu.amd.updateMicrocode = true; } -- cgit v1.2.3 From 7eb5804cf7c6f4ee18da4de5e42d0b0df3b849f7 Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 6 Feb 2023 12:51:57 +0100 Subject: l green.r: create ~/.config --- lass/1systems/green/config.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'lass') diff --git a/lass/1systems/green/config.nix b/lass/1systems/green/config.nix index 077f7b3fa..c232be9bd 100644 --- a/lass/1systems/green/config.nix +++ b/lass/1systems/green/config.nix @@ -35,6 +35,7 @@ with import ; systemd.tmpfiles.rules = [ "d /home/lass/.local/share 0700 lass users -" "d /home/lass/.local 0700 lass users -" + "d /home/lass/.config 0700 lass users -" "d /var/state/lass_mail 0700 lass users -" "L+ /home/lass/Maildir - - - - ../../var/state/lass_mail" -- cgit v1.2.3 From fd67132ada8f32c8fde5c0342edc2940926d7abd Mon Sep 17 00:00:00 2001 From: lassulus Date: Mon, 6 Feb 2023 12:58:32 +0100 Subject: l lasspi.r: fix booting with 22.05 --- lass/1systems/lasspi/config.nix | 5 ++--- lass/1systems/lasspi/physical.nix | 21 ++++++++++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) (limited to 'lass') diff --git a/lass/1systems/lasspi/config.nix b/lass/1systems/lasspi/config.nix index 9f823dfc8..d2207627d 100644 --- a/lass/1systems/lasspi/config.nix +++ b/lass/1systems/lasspi/config.nix @@ -1,4 +1,3 @@ -with import ; { config, lib, pkgs, ... }: let in @@ -18,9 +17,9 @@ in }; environment.systemPackages = with pkgs; [ vim - rxvt_unicode.terminfo + rxvt-unicode-unwrapped.terminfo ]; services.openssh.enable = true; - system.stateVersion = "21.05"; + system.stateVersion = "22.05"; } diff --git a/lass/1systems/lasspi/physical.nix b/lass/1systems/lasspi/physical.nix index 868bafad5..07efb5ca5 100644 --- a/lass/1systems/lasspi/physical.nix +++ b/lass/1systems/lasspi/physical.nix @@ -1,15 +1,14 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, modulesPath, ... }: { - # This configuration worked on 09-03-2021 nixos-unstable @ commit 102eb68ceec - # The image used https://hydra.nixos.org/build/134720986 imports = [ + (modulesPath + "/installer/scan/not-detected.nix") ./config.nix ]; boot = { # kernelPackages = pkgs.linuxPackages_rpi4; tmpOnTmpfs = true; - initrd.availableKernelModules = [ "usbhid" "usb_storage" ]; + initrd.availableKernelModules = [ "usbhid" "usb_storage" "xhci_pci" ]; # ttyAMA0 is the serial console broken out to the GPIO kernelParams = [ "8250.nr_uarts=1" @@ -20,19 +19,23 @@ ]; }; - boot.loader.raspberryPi = { - enable = true; - version = 4; - }; + # boot.loader.raspberryPi = { + # enable = true; + # version = 4; + # # uboot.enable = true; + # }; boot.loader.grub.enable = false; + boot.loader.generic-extlinux-compatible.enable = true; # Required for the Wireless firmware hardware.enableRedistributableFirmware = true; + networking.interfaces.eth0.useDHCP = true; + # Assuming this is installed on top of the disk image. fileSystems = { "/" = { - device = "/dev/disk/by-label/NIXOS_SD"; + device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888"; fsType = "ext4"; options = [ "noatime" ]; }; -- cgit v1.2.3 From 5b768d2b0050507037584f3b7f4a5cf90d627c57 Mon Sep 17 00:00:00 2001 From: lassulus Date: Wed, 8 Feb 2023 15:01:37 +0100 Subject: l aergia.r: add suspend to disk --- lass/1systems/aergia/physical.nix | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'lass') diff --git a/lass/1systems/aergia/physical.nix b/lass/1systems/aergia/physical.nix index 44bd53c22..0e5a88aa1 100644 --- a/lass/1systems/aergia/physical.nix +++ b/lass/1systems/aergia/physical.nix @@ -25,6 +25,9 @@ # for ryzenadj -i "iomem=relaxed" + + # suspend + "resume_offset=178345675" ]; boot.kernelModules = [ @@ -119,8 +122,17 @@ ''; # ignore power key - services.logind.extraConfig = "HandlePowerKey=ignore"; # update cpu microcode hardware.cpu.amd.updateMicrocode = true; + + # suspend to disk + swapDevices = [{ + device = "/swapfile"; + }]; + boot.resumeDevice = "/dev/mapper/aergia1"; + services.logind.lidSwitch = "suspend-then-hibernate"; + services.logind.extraConfig = '' + HandlePowerKey=hibernate + ''; } -- cgit v1.2.3 From f62711abe3e627bc4d66a5cc9226ecf87f71feea Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 12 Feb 2023 14:24:43 +0100 Subject: l neoprism.r: add hotdog sync-container --- lass/1systems/neoprism/config.nix | 1 + 1 file changed, 1 insertion(+) (limited to 'lass') diff --git a/lass/1systems/neoprism/config.nix b/lass/1systems/neoprism/config.nix index 7f6be782e..be80e28da 100644 --- a/lass/1systems/neoprism/config.nix +++ b/lass/1systems/neoprism/config.nix @@ -10,6 +10,7 @@ + # other containers -- cgit v1.2.3 From 6820fe02f6666df1d58ef7c94eb5c29e5ff508bf Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 16 Feb 2023 13:58:10 +0100 Subject: l mumble-reminder: prism.r -> orange.r --- lass/1systems/orange/config.nix | 1 + lass/1systems/prism/config.nix | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'lass') diff --git a/lass/1systems/orange/config.nix b/lass/1systems/orange/config.nix index 3bc20878e..5e975dba8 100644 --- a/lass/1systems/orange/config.nix +++ b/lass/1systems/orange/config.nix @@ -5,6 +5,7 @@ with import ; + ]; krebs.build.host = config.krebs.hosts.orange; diff --git a/lass/1systems/prism/config.nix b/lass/1systems/prism/config.nix index bcc8c1a08..f23778eba 100644 --- a/lass/1systems/prism/config.nix +++ b/lass/1systems/prism/config.nix @@ -137,7 +137,6 @@ with import ; - { services.tor = { -- cgit v1.2.3 From 9e059195325e61e38a31a7905b1fe08656f49aba Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 16 Feb 2023 13:58:33 +0100 Subject: l mumble-reminder: move to 17:00 --- lass/2configs/mumble-reminder.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'lass') diff --git a/lass/2configs/mumble-reminder.nix b/lass/2configs/mumble-reminder.nix index fe75a96a6..c4cc60dc5 100644 --- a/lass/2configs/mumble-reminder.nix +++ b/lass/2configs/mumble-reminder.nix @@ -23,7 +23,7 @@ Kois Faulaffen Schraubenziegen - Nachtigalle + Nachtigallen Okapis Stachelschweine Kurzschwanzkängurus @@ -49,7 +49,7 @@ pattern = "^nerv nicht$"; activate = "match"; command = { - filename = pkgs.writeDash "add_remind" '' + filename = pkgs.writeDash "del_remind" '' ${pkgs.gnused}/bin/sed -i "/$_from/d" /var/lib/reaktor2-mumble-reminder/users echo "okok, Ich werde $_from nich mehr errinern" ''; @@ -80,7 +80,7 @@ in { }; systemd.services.mumble-reminder-nixos = { description = "weekly reminder for nixos mumble"; - startAt = "Thu *-*-* 19:00:00 Europe/Berlin"; + startAt = "Thu *-*-* 17:00:00 Europe/Berlin"; serviceConfig = { ExecStart = pkgs.writers.writeDash "mumble_reminder" '' animals=' -- cgit v1.2.3 From 92cfeace5435e09b203a1e4f91eee28bd5d198ce Mon Sep 17 00:00:00 2001 From: lassulus Date: Sun, 19 Feb 2023 10:01:55 +0100 Subject: l aergia.r: add antimicrox for gamepad mouse mode --- lass/1systems/aergia/physical.nix | 1 + lass/2configs/antimicrox/default.nix | 33 +++++ lass/2configs/antimicrox/empty.amgp | 20 +++ lass/2configs/antimicrox/mouse.amgp | 272 +++++++++++++++++++++++++++++++++++ lass/2configs/xmonad.nix | 6 +- 5 files changed, 329 insertions(+), 3 deletions(-) create mode 100644 lass/2configs/antimicrox/default.nix create mode 100644 lass/2configs/antimicrox/empty.amgp create mode 100644 lass/2configs/antimicrox/mouse.amgp (limited to 'lass') diff --git a/lass/1systems/aergia/physical.nix b/lass/1systems/aergia/physical.nix index 0e5a88aa1..0786acbe1 100644 --- a/lass/1systems/aergia/physical.nix +++ b/lass/1systems/aergia/physical.nix @@ -3,6 +3,7 @@ imports = [ ./config.nix (modulesPath + "/installer/scan/not-detected.nix") + ]; disko.devices = import ./disk.nix; diff --git a/lass/2configs/antimicrox/default.nix b/lass/2configs/antimicrox/default.nix new file mode 100644 index 000000000..16f546ce6 --- /dev/null +++ b/lass/2configs/antimicrox/default.nix @@ -0,0 +1,33 @@ +{ config, lib, pkgs, ... }: +{ + systemd.services.antimicrox = { + wantedBy = [ "multi-user.target" ]; + environment = { + DISPLAY = ":0"; + }; + serviceConfig = { + User = config.users.users.mainUser.name; + ExecStartPre = lib.singleton (pkgs.writeDash "init_state" "echo 0 > /tmp/gamepad.state"); + ExecStart = "${pkgs.antimicrox}/bin/antimicrox --no-tray --hidden --profile ${./mouse.amgp}"; + }; + }; + + environment.systemPackages = [ + (pkgs.writers.writeDashBin "gamepad_mouse_disable" '' + echo 1 > /tmp/gamepad.state + ${pkgs.antimicrox}/bin/antimicrox --profile ${./empty.amgp} + '') + (pkgs.writers.writeDashBin "gamepad_mouse_enable" '' + echo 0 > /tmp/gamepad.state + ${pkgs.antimicrox}/bin/antimicrox --profile ${./mouse.amgp} + '') + (pkgs.writers.writeDashBin "gamepad_mouse_toggle" '' + state=$(${pkgs.coreutils}/bin/cat /tmp/gamepad.state) + if [ "$state" = 1 ]; then + /run/current-system/sw/bin/gamepad_mouse_enable + else + /run/current-system/sw/bin/gamepad_mouse_disable + fi + '') + ]; +} diff --git a/lass/2configs/antimicrox/empty.amgp b/lass/2configs/antimicrox/empty.amgp new file mode 100644 index 000000000..0257bfe71 --- /dev/null +++ b/lass/2configs/antimicrox/empty.amgp @@ -0,0 +1,20 @@ + + + + XInput Controller + + 030000005e0400008e020000010100001118654 + + + + + + + + + + R Stick + L Stick + + + diff --git a/lass/2configs/antimicrox/mouse.amgp b/lass/2configs/antimicrox/mouse.amgp new file mode 100644 index 000000000..313e598de --- /dev/null +++ b/lass/2configs/antimicrox/mouse.amgp @@ -0,0 +1,272 @@ + + + + XInput Controller + + 030000005e0400008e020000010100001118654 + + + + + + + + + + Stick 2 + Stick 1 + + + + + 1 + 29501 + 1412 + 90 + + 74 + 74 + 4 + 20 + 3 + easeoutquad + + + 3 + mousemovement + + + + + 74 + 74 + + + 74 + 74 + 4 + 20 + 3 + easeoutquad + + + 2 + mousemovement + + + + + 74 + 74 + + + 74 + 74 + 4 + 20 + 3 + easeoutquad + + + 4 + mousemovement + + + + + 74 + 74 + + + 74 + 74 + 4 + 20 + 3 + easeoutquad + + + 1 + mousemovement + + + + + 74 + 74 + + + + 2578 + 30799 + + linear + + + 6 + mousebutton + + + + + linear + + + linear + + + 5 + mousebutton + + + + + linear + + + linear + + + 7 + mousebutton + + + + + linear + + + linear + + + 4 + mousebutton + + + + + linear + + + + + 2 + 10 + + + 2 + 10 + + + 0x1000017 + keyboard + + + + + 2 + 10 + + + 2 + 10 + + + 0x1000011 + keyboard + + + + + 10 + 10 + + + 0x1000016 + keyboard + + + + + 2 + 10 + + + 2 + 10 + + + 2 + 10 + + + 0x1000010 + keyboard + + + + + + 2000 + positivehalf + + 100 + 100 + + + 100 + 100 + + + 250 + mousespeedmod + + + + + + positivehalf + + + + + + + + + diff --git a/lass/2configs/xmonad.nix b/lass/2configs/xmonad.nix index b506e026d..1789725d1 100644 --- a/lass/2configs/xmonad.nix +++ b/lass/2configs/xmonad.nix @@ -159,14 +159,14 @@ myKeyMap = ${pkgs.clipmenu}/bin/clipmenu ''}") - , ("M4-", windows copyToAll) - - , ("M4-", spawn "${pkgs.nm-dmenu}/bin/nm-dmenu") , ("M4-", spawn "${pkgs.writeDash "paste" '' ${pkgs.coreutils}/bin/sleep 0.4 ${pkgs.xclip}/bin/xclip -o | ${pkgs.xdotool}/bin/xdotool type -f - ''}") + , ("M4-", spawn "/run/current-system/sw/bin/gamepad_mouse_toggle") + , ("M4-", windows copyToAll) + , ("M4-", spawn "${pkgs.nm-dmenu}/bin/nm-dmenu") , ("M4-", spawn "${pkgs.acpilight}/bin/xbacklight -set 1") , ("M4-", spawn "${pkgs.acpilight}/bin/xbacklight -set 10") , ("M4-", spawn "${pkgs.acpilight}/bin/xbacklight -set 33") -- cgit v1.2.3 From 0ea072393307e5cd250b412dd0026bf8f6f1251b Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 21 Feb 2023 07:35:27 +0100 Subject: l browsers: use firefox directly, RIP xjails --- lass/1systems/aergia/config.nix | 5 -- lass/1systems/coaxmetal/config.nix | 6 -- lass/2configs/browsers.nix | 14 ++- lass/2configs/xdg-open.nix | 26 +++--- lass/3modules/browsers.nix | 94 -------------------- lass/3modules/default.nix | 2 - lass/3modules/xjail.nix | 173 ------------------------------------- 7 files changed, 18 insertions(+), 302 deletions(-) delete mode 100644 lass/3modules/browsers.nix delete mode 100644 lass/3modules/xjail.nix (limited to 'lass') diff --git a/lass/1systems/aergia/config.nix b/lass/1systems/aergia/config.nix index af88a0260..6992db4a5 100644 --- a/lass/1systems/aergia/config.nix +++ b/lass/1systems/aergia/config.nix @@ -48,11 +48,6 @@ }; hardware.pulseaudio.package = pkgs.pulseaudioFull; - lass.browser.config = { - fy = { browser = "chromium"; groups = [ "audio" "video" ]; hidden = true; }; - qt = { browser = "qutebrowser"; groups = [ "audio" "video" ]; hidden = true; }; - }; - nix.trustedUsers = [ "root" "lass" ]; # nix.extraOptions = '' diff --git a/lass/1systems/coaxmetal/config.nix b/lass/1systems/coaxmetal/config.nix index 2c88b68cc..1df56f591 100644 --- a/lass/1systems/coaxmetal/config.nix +++ b/lass/1systems/coaxmetal/config.nix @@ -54,12 +54,6 @@ }; hardware.pulseaudio.package = pkgs.pulseaudioFull; - lass.browser.config = { - dc = { browser = "chromium"; groups = [ "audio" "video" ]; hidden = true; }; - ff = { browser = "firefox"; groups = [ "audio" "video" ]; hidden = true; }; - fy = { browser = "chromium"; groups = [ "audio" "video" ]; hidden = true; }; - }; - nix.trustedUsers = [ "root" "lass" ]; services.tor = { diff --git a/lass/2configs/browsers.nix b/lass/2configs/browsers.nix index 00a5d2db0..ea6fb644b 100644 --- a/lass/2configs/browsers.nix +++ b/lass/2configs/browsers.nix @@ -1,12 +1,8 @@ { config, lib, pkgs, ... }: { - lass.browser.config = { - cr = { groups = [ "audio" "video" ]; precedence = 9; }; - }; - programs.chromium = { - enable = true; - extensions = [ - "cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin - ]; - }; + programs.firefox.nativeMessagingHosts.tridactyl = true; + environment.variables.BROWSER = "${pkgs.firefox}/bin/firefox"; + environment.systemPackages = [ + pkgs.firefox + ]; } diff --git a/lass/2configs/xdg-open.nix b/lass/2configs/xdg-open.nix index 88ea7ba59..02c551a2b 100644 --- a/lass/2configs/xdg-open.nix +++ b/lass/2configs/xdg-open.nix @@ -1,12 +1,13 @@ { config, pkgs, lib, ... }: with import ; let xdg-open-wrapper = pkgs.writeDashBin "xdg-open" '' - /run/wrappers/bin/sudo -u lass ${xdg-open} "$@" + exec ${xdg-open}/bin/xdg-open "$@" >> /tmp/xdg-debug.log 2>&1 ''; - xdg-open = pkgs.writeBash "xdg-open" '' - set -e + xdg-open = pkgs.writeBashBin "xdg-open" '' + set -xe FILE="$1" + PATH=/run/current-system/sw/bin mime= case "$FILE" in @@ -35,15 +36,13 @@ case "$mime" in special/mailaddress) - urxvtc --execute vim "$FILE" ;; - ${optionalString (hasAttr "browser" config.lass) '' + alacritty --execute vim "$FILE" ;; text/html) - ${config.lass.browser.select}/bin/browser-select "$FILE" ;; + firefox "$FILE" ;; text/xml) - ${config.lass.browser.select}/bin/browser-select "$FILE" ;; - ''} + firefox "$FILE" ;; text/*) - urxvtc --execute vim "$FILE" ;; + alacritty --execute vim "$FILE" ;; image/*) sxiv "$FILE" ;; application/x-bittorrent) @@ -51,17 +50,18 @@ application/pdf) zathura "$FILE" ;; inode/directory) - sudo -u lass -i urxvtc --execute mc "$FILE" ;; + alacritty --execute mc "$FILE" ;; *) # open dmenu and ask for program to open with - $(dmenu_path | dmenu) "$FILE";; + runner=$(print -rC1 -- ''${(ko)commands} | dmenu) + exec $runner "$FILE";; esac ''; in { environment.systemPackages = [ xdg-open-wrapper ]; security.sudo.extraConfig = '' - cr ALL=(lass) NOPASSWD: ${xdg-open} * - ff ALL=(lass) NOPASSWD: ${xdg-open} * + cr ALL=(lass) NOPASSWD: ${xdg-open}/bin/xdg-open * + ff ALL=(lass) NOPASSWD: ${xdg-open}/bin/xdg-open * ''; } diff --git a/lass/3modules/browsers.nix b/lass/3modules/browsers.nix deleted file mode 100644 index 4171abdb6..000000000 --- a/lass/3modules/browsers.nix +++ /dev/null @@ -1,94 +0,0 @@ -{ config, lib, pkgs, ... }: -with import ; -let - - cfg = config.lass.browser; - - browserScripts = { - brave = "${pkgs.brave}/bin/brave"; - chrome = "${pkgs.google-chrome}/bin/chrome"; - chromium = "${pkgs.ungoogled-chromium}/bin/chromium"; - firefox = "${pkgs.firefox.override { - extraNativeMessagingHosts = [ pkgs.tridactyl-native ]; - }}/bin/firefox"; - qutebrowser = "${pkgs.qutebrowser}/bin/qutebrowser"; - }; - - browser-select = let - sortedPaths = sort (a: b: a.value.precedence > b.value.precedence) - (filter (x: ! x.value.hidden) - (mapAttrsToList (name: value: { inherit name value; }) - cfg.config)); - in if (lib.length sortedPaths) > 1 then - pkgs.writeScriptBin "browser-select" '' - BROWSER=$(echo -e "${concatStringsSep "\\n" (map (getAttr "name") sortedPaths)}" | ${pkgs.dmenu}/bin/dmenu) - case $BROWSER in - ${concatMapStringsSep "\n" (n: '' - ${n.name}) - export BIN=${config.lass.xjail-bins.${n.name}}/bin/${n.name} - ;; - '') (sortedPaths)} - esac - $BIN "$@" - '' - else - let - name = (lib.head sortedPaths).name; - in pkgs.writeScriptBin "browser-select" '' - ${config.lass.xjail-bins.${name}}/bin/${name} "$@" - '' - ; - -in { - options.lass.browser = { - select = mkOption { - type = types.path; - }; - config = mkOption { - type = types.attrsOf (types.submodule ({ config, ... }: { - options = { - name = mkOption { - type = types.str; - default = config._module.args.name; - }; - hidden = mkOption { - type = types.bool; - default = false; - }; - precedence = mkOption { - type = types.int; - default = 0; - }; - user = mkOption { - type = types.str; - default = config._module.args.name; - }; - browser = mkOption { - type = types.enum (attrNames browserScripts); - default = "brave"; - }; - groups = mkOption { - type = types.listOf types.str; - default = []; - }; - }; - })); - default = {}; - }; - }; - - config = (mkIf (cfg.config != {}) { - lass.xjail = mapAttrs' (name: browser: - nameValuePair name { - script = browserScripts.${browser.browser}; - groups = browser.groups; - } - ) cfg.config; - environment.systemPackages = (map (browser: - config.lass.xjail-bins.${browser.name} - ) (attrValues cfg.config)) ++ [ - browser-select - ]; - lass.browser.select = browser-select; - }); -} diff --git a/lass/3modules/default.nix b/lass/3modules/default.nix index 3a0b1306c..0e1a794ca 100644 --- a/lass/3modules/default.nix +++ b/lass/3modules/default.nix @@ -12,8 +12,6 @@ _: ./pyload.nix ./screenlock.nix ./usershadow.nix - ./xjail.nix ./autowifi.nix - ./browsers.nix ]; } diff --git a/lass/3modules/xjail.nix b/lass/3modules/xjail.nix deleted file mode 100644 index 08a28b8e3..000000000 --- a/lass/3modules/xjail.nix +++ /dev/null @@ -1,173 +0,0 @@ -{ config, pkgs, lib, ... }: - -with import ; -{ - options.lass.xjail = mkOption { - type = types.attrsOf (types.submodule ({ config, ...}: { - options = { - name = mkOption { - type = types.str; - default = config._module.args.name; - }; - user = mkOption { - type = types.str; - default = config.name; - }; - groups = mkOption { - type = types.listOf types.str; - default = []; - }; - from = mkOption { - type = types.str; - default = "lass"; - }; - display = mkOption { - type = types.str; - default = toString (genid_uint31 config._module.args.name); - }; - dpi = mkOption { - type = types.int; - default = 90; - }; - extraXephyrArgs = mkOption { - type = types.str; - default = ""; - }; - extraVglrunArgs = mkOption { - type = types.str; - default = ""; - }; - script = mkOption { - type = types.path; - default = pkgs.writeScript "echo_lol" "echo lol"; - }; - wm = mkOption { - #TODO find type - type = types.str; - defaultText = "‹script›"; - default = "${pkgs.writeHaskellPackage "xephyrify-xmonad" { - executables.xmonad = { - extra-depends = [ - "containers" - "unix" - "xmonad" - ]; - text = /* haskell */ '' - module Main where - import XMonad - import Data.Monoid - import System.Posix.Process (executeFile) - import qualified Data.Map as Map - - main :: IO () - main = do - xmonad def - { workspaces = [ "1" ] - , layoutHook = myLayoutHook - , keys = myKeys - , normalBorderColor = "#000000" - , focusedBorderColor = "#000000" - , handleEventHook = myEventHook - } - - myEventHook :: Event -> X All - - myEventHook (ConfigureEvent { ev_event_type = 22 }) = do - spawn "${pkgs.xorg.xrandr}/bin/xrandr >/dev/null 2>&1" - return (All True) - - myEventHook _ = do - return (All True) - - myLayoutHook = Full - myKeys _ = Map.fromList [] - ''; - }; - }}/bin/xmonad"; - }; - }; - })); - default = {}; - }; - - options.lass.xjail-bins = mkOption { - type = types.attrsOf types.path; - }; - - # implementation - config = let - scripts = mapAttrs' (name: cfg: - let - newOrExisting = pkgs.writeDash "${cfg.name}-existing" '' - DISPLAY=:${cfg.display} ${pkgs.xorg.xrandr}/bin/xrandr - if test $? -eq 0; then - echo using existing xephyr - ${sudo_} "$@" - else - echo starting new xephyr - ${xephyr_} "$@" - fi - ''; - xephyr_ = pkgs.writeDash "${cfg.name}-xephyr" '' - ${pkgs.xorg.xorgserver}/bin/Xephyr -br -ac -reset -terminate -resizeable -nolisten local -dpi ${toString cfg.dpi} ${cfg.extraXephyrArgs} :${cfg.display} & - XEPHYR_PID=$! - DISPLAY=:${cfg.display} ${cfg.wm} & - WM_PID=$! - ${sudo_} "$@" - ${pkgs.coreutils}/bin/kill $WM_PID - ${pkgs.coreutils}/bin/kill $XEPHYR_PID - ''; - # TODO fix xephyr which doesn't honor resizes anymore - sudo_ = pkgs.writeDash "${cfg.name}-sudo" '' - #/var/run/wrappers/bin/sudo -u ${cfg.name} -i env DISPLAY=:${cfg.display} ${cfg.script} "$@" - ${pkgs.systemd}/bin/machinectl shell -E DISPLAY=:0 --uid=${cfg.name} .host ${cfg.script} "$@" - ''; - in nameValuePair name { - existing = newOrExisting; - xephyr = xephyr_; - sudo = sudo_; - } - ) config.lass.xjail; - in { - - users.users = mapAttrs' (_: cfg: - nameValuePair cfg.name { - uid = genid_uint31 cfg.name; - home = "/home/${cfg.name}"; - useDefaultShell = true; - createHome = true; - extraGroups = cfg.groups; - isNormalUser = true; - } - ) config.lass.xjail; - - users.groups = mapAttrs' (_: cfg: - nameValuePair cfg.name { - members = [ - cfg.name - cfg.from - ]; - } - ) config.lass.xjail; - - security.polkit.extraConfig = (concatStringsSep "\n" (mapAttrsToList (_: cfg: '' - polkit.addRule(function(action, subject) { - if ( - subject.user == "${cfg.from}" && - action.id == "org.freedesktop.machine1.host-shell" && - action.lookup("user") == "${cfg.user}" && - action.lookup("program") == "${cfg.script}" && - true - ) { - return polkit.Result.YES; - } - }); - '') config.lass.xjail)); - - lass.xjail-bins = mapAttrs' (name: cfg: - nameValuePair name (pkgs.writeScriptBin cfg.name '' - ${scripts.${name}.sudo} "$@" - '') - ) config.lass.xjail; - }; -} -- cgit v1.2.3 From cae7c2673f6ca0d22884543a0f23b24842075acd Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 21 Feb 2023 07:56:25 +0100 Subject: l aergia.r: use better touchscreen support for firefox --- lass/1systems/aergia/physical.nix | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'lass') diff --git a/lass/1systems/aergia/physical.nix b/lass/1systems/aergia/physical.nix index 0786acbe1..023639083 100644 --- a/lass/1systems/aergia/physical.nix +++ b/lass/1systems/aergia/physical.nix @@ -22,6 +22,7 @@ # Enable energy savings during sleep "mem_sleep_default=deep" + # use less power with pstate "amd_pstate=passive" # for ryzenadj -i @@ -136,4 +137,7 @@ services.logind.extraConfig = '' HandlePowerKey=hibernate ''; + + # firefox touchscreen support + environment.sessionVariables.MOZ_USE_XINPUT2 = "1"; } -- cgit v1.2.3 From 5bab00f73d27a96f6ce319040b69e4d83a81e52a Mon Sep 17 00:00:00 2001 From: lassulus Date: Tue, 21 Feb 2023 10:10:53 +0100 Subject: l radio: move to 2/services --- lass/1systems/neoprism/config.nix | 2 +- lass/1systems/radio/config.nix | 2 +- lass/2configs/radio/container-host.nix | 23 -- lass/2configs/radio/controls.html | 83 ------ lass/2configs/radio/default.nix | 328 ------------------------ lass/2configs/radio/news.nix | 106 -------- lass/2configs/radio/radio.liq | 112 -------- lass/2configs/radio/shell.nix | 7 - lass/2configs/radio/weather.nix | 60 ----- lass/2configs/radio/weather_for_ips.py | 48 ---- lass/2configs/services/radio/container-host.nix | 23 ++ lass/2configs/services/radio/controls.html | 83 ++++++ lass/2configs/services/radio/default.nix | 328 ++++++++++++++++++++++++ lass/2configs/services/radio/news.nix | 106 ++++++++ lass/2configs/services/radio/radio.liq | 112 ++++++++ lass/2configs/services/radio/shell.nix | 7 + lass/2configs/services/radio/weather.nix | 60 +++++ lass/2configs/services/radio/weather_for_ips.py | 48 ++++ 18 files changed, 769 insertions(+), 769 deletions(-) delete mode 100644 lass/2configs/radio/container-host.nix delete mode 100644 lass/2configs/radio/controls.html delete mode 100644 lass/2configs/radio/default.nix delete mode 100644 lass/2configs/radio/news.nix delete mode 100644 lass/2configs/radio/radio.liq delete mode 100644 lass/2configs/radio/shell.nix delete mode 100644 lass/2configs/radio/weather.nix delete mode 100644 lass/2configs/radio/weather_for_ips.py create mode 100644 lass/2configs/services/radio/container-host.nix create mode 100644 lass/2configs/services/radio/controls.html create mode 100644 lass/2configs/services/radio/default.nix create mode 100644 lass/2configs/services/radio/news.nix create mode 100644 lass/2configs/services/radio/radio.liq create mode 100644 lass/2configs/services/radio/shell.nix create mode 100644 lass/2configs/services/radio/weather.nix create mode 100644 lass/2configs/services/radio/weather_for_ips.py (limited to 'lass') diff --git a/lass/1systems/neoprism/config.nix b/lass/1systems/neoprism/config.nix index be80e28da..4c9455356 100644 --- a/lass/1systems/neoprism/config.nix +++ b/lass/1systems/neoprism/config.nix @@ -8,7 +8,7 @@ # sync-containers - + diff --git a/lass/1systems/radio/config.nix b/lass/1systems/radio/config.nix index 5e34335d3..00e9bd3fe 100644 --- a/lass/1systems/radio/config.nix +++ b/lass/1systems/radio/config.nix @@ -7,7 +7,7 @@ with import ; - + ]; krebs.build.host = config.krebs.hosts.radio; diff --git a/lass/2configs/radio/container-host.nix b/lass/2configs/radio/container-host.nix deleted file mode 100644 index de0ea9afe..000000000 --- a/lass/2configs/radio/container-host.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, pkgs, ... }: -{ - krebs.sync-containers3.containers.radio = { - sshKey = "${toString }/radio.sync.key"; - }; - containers.radio = { - bindMounts."/var/music" = { - hostPath = "/var/music"; - isReadOnly = false; - }; - }; - krebs.iptables.tables.filter.INPUT.rules = [ - { predicate = "-p tcp --dport 8000"; target = "ACCEPT"; } - ]; - krebs.htgen.radio-redirect = { - port = 8000; - scriptFile = pkgs.writers.writeDash "redir" '' - printf 'HTTP/1.1 301 Moved Permanently\r\n' - printf "Location: http://radio.lassul.us''${Request_URI}\r\n" - printf '\r\n' - ''; - }; -} diff --git a/lass/2configs/radio/controls.html b/lass/2configs/radio/controls.html deleted file mode 100644 index 858dc3656..000000000 --- a/lass/2configs/radio/controls.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - The_Playlist Voting! - - - - - -
- - - -
- Currently Running:
- -
-
-
- -
- - - - diff --git a/lass/2configs/radio/default.nix b/lass/2configs/radio/default.nix deleted file mode 100644 index a511196fd..000000000 --- a/lass/2configs/radio/default.nix +++ /dev/null @@ -1,328 +0,0 @@ -{ config, pkgs, lib, ... }: - -let - name = "radio"; - - music_dir = "/var/music"; - - skip_track = pkgs.writers.writeBashBin "skip_track" '' - set -eu - - # TODO come up with new rating, without moving files - # current_track=$(${pkgs.curl}/bin/curl -fSs http://localhost:8002/current | ${pkgs.jq}/bin/jq -r .filename) - # track_infos=$(${print_current}/bin/print_current) - # skip_count=$(${pkgs.attr}/bin/getfattr -n user.skip_count --only-values "$current_track" || echo 0) - # if [[ "$current_track" =~ .*/the_playlist/music/.* ]] && [ "$skip_count" -le 2 ]; then - # skip_count=$((skip_count+1)) - # ${pkgs.attr}/bin/setfattr -n user.skip_count -v "$skip_count" "$current_track" - # echo skipping: "$track_infos" skip_count: "$skip_count" - # else - # mkdir -p "$music_dir"/the_playlist/.graveyard/ - # mv "$current_track" "$music_dir"/the_playlist/.graveyard/ - # echo killing: "$track_infos" - # fi - ${pkgs.curl}/bin/curl -fSs -X POST http://localhost:8002/skip | - ${pkgs.jq}/bin/jq -r '.filename' - ''; - - good_track = pkgs.writeBashBin "good_track" '' - set -eu - - current_track=$(${pkgs.curl}/bin/curl -fSs http://localhost:8002/current | ${pkgs.jq}/bin/jq -r .filename) - track_infos=$(${print_current}/bin/print_current) - # TODO come up with new rating, without moving files - # if [[ "$current_track" =~ .*/the_playlist/music/.* ]]; then - # ${pkgs.attr}/bin/setfattr -n user.skip_count -v 0 "$current_track" - # else - # mv "$current_track" "$music_dir"/the_playlist/music/ || : - # fi - echo good: "$track_infos" - ''; - - print_current = pkgs.writeDashBin "print_current" '' - file=$(${pkgs.curl}/bin/curl -fSs http://localhost:8002/current | - ${pkgs.jq}/bin/jq -r '.filename' | - ${pkgs.gnused}/bin/sed 's,^${music_dir},,' - ) - link=$(${pkgs.curl}/bin/curl http://localhost:8002/current | - ${pkgs.jq}/bin/jq -r '.filename' | - ${pkgs.gnused}/bin/sed 's@.*\(.\{11\}\)\.ogg@https://youtu.be/\1@' - ) - echo "$file": "$link" - ''; - - set_irc_topic = pkgs.writeDash "set_irc_topic" '' - ${pkgs.curl}/bin/curl -fsS --unix-socket /home/radio/reaktor.sock http://z/ \ - -H content-type:application/json \ - -d "$(${pkgs.jq}/bin/jq -n \ - --arg text "$1" '{ - command:"TOPIC", - params:["#the_playlist",$text] - }' - )" - ''; - - write_to_irc = pkgs.writeDash "write_to_irc" '' - ${pkgs.curl}/bin/curl -fsSv --unix-socket /home/radio/reaktor.sock http://z/ \ - -H content-type:application/json \ - -d "$(${pkgs.jq}/bin/jq -n \ - --arg text "$1" '{ - command:"PRIVMSG", - params:["#the_playlist",$text] - }' - )" - ''; - -in { - imports = [ - ./news.nix - ./weather.nix - ]; - - users.users = { - "${name}" = rec { - inherit name; - createHome = lib.mkForce false; - group = name; - uid = pkgs.stockholm.lib.genid_uint31 name; - description = "radio manager"; - home = "/home/${name}"; - useDefaultShell = true; - openssh.authorizedKeys.keys = with config.krebs.users; [ - lass.pubkey - ]; - }; - }; - - users.groups = { - "radio" = {}; - }; - - krebs.per-user.${name}.packages = with pkgs; [ - good_track - skip_track - print_current - ]; - - services.liquidsoap.streams.radio = ./radio.liq; - systemd.services.radio = { - environment = { - RADIO_PORT = "8002"; - HOOK_TRACK_CHANGE = pkgs.writers.writeDash "on_change" '' - set -xefu - LIMIT=1000 #how many tracks to keep in the history - HISTORY_FILE=/var/lib/radio/recent - - listeners=$(${pkgs.curl}/bin/curl -fSs http://localhost:8000/status-json.xsl | - ${pkgs.jq}/bin/jq '[.icestats.source[].listeners] | add' || echo 0) - echo "$(${pkgs.coreutils}/bin/date -Is)" "$filename" | ${pkgs.coreutils}/bin/tee -a "$HISTORY_FILE" - echo "$(${pkgs.coreutils}/bin/tail -$LIMIT "$HISTORY_FILE")" > "$HISTORY_FILE" - ${set_irc_topic} "playing: $filename listeners: $listeners" - ''; - MUSIC = "${music_dir}/the_playlist"; - ICECAST_HOST = "localhost"; - }; - path = [ - pkgs.yt-dlp - ]; - serviceConfig.User = lib.mkForce "radio"; - }; - - nixpkgs.config.packageOverrides = opkgs: { - icecast = opkgs.icecast.overrideAttrs (old: rec { - version = "2.5-beta3"; - - src = pkgs.fetchurl { - url = "http://downloads.xiph.org/releases/icecast/icecast-${version}.tar.gz"; - sha256 = "sha256-4FDokoA9zBDYj8RAO/kuTHaZ6jZYBLSJZiX/IYFaCW8="; - }; - - buildInputs = old.buildInputs ++ [ pkgs.pkg-config ]; - }); - }; - services.icecast = { - enable = true; - hostname = "radio.lassul.us"; - admin.password = "hackme"; - extraConf = '' - - hackme - admin - hackme - - - - - - - 3 - - ''; - }; - - krebs.iptables = { - tables = { - filter.INPUT.rules = [ - { predicate = "-p tcp --dport 8000"; target = "ACCEPT"; } - { predicate = "-i retiolum -p tcp --dport 8001"; target = "ACCEPT"; } - ]; - }; - }; - - # allow reaktor2 to modify files - systemd.services."reaktor2-the_playlist".serviceConfig.DynamicUser = lib.mkForce false; - - krebs.reaktor2.the_playlist = { - hostname = "irc.hackint.org"; - port = "6697"; - useTLS = true; - nick = "the_playlist"; - username = "radio"; - API.listen = "unix:/home/radio/reaktor.sock"; - plugins = [ - { - plugin = "register"; - config = { - channels = [ - "#the_playlist" - "#krebs" - ]; - }; - } - { - plugin = "system"; - config = { - workdir = config.krebs.reaktor2.the_playlist.stateDir; - hooks.PRIVMSG = [ - { - activate = "match"; - pattern = "^(?:.*\\s)?\\s*the_playlist:\\s*([0-9A-Za-z._][0-9A-Za-z._-]*)(?:\\s+(.*\\S))?\\s*$"; - command = 1; - arguments = [2]; - commands = { - skip.filename = "${skip_track}/bin/skip_track"; - next.filename = "${skip_track}/bin/skip_track"; - bad.filename = "${skip_track}/bin/skip_track"; - - good.filename = "${good_track}/bin/good_track"; - nice.filename = "${good_track}/bin/good_track"; - like.filename = "${good_track}/bin/good_track"; - - current.filename = "${print_current}/bin/print_current"; - wish.filename = pkgs.writeDash "wish" '' - echo "youtube-dl:$1" | ${pkgs.curl}/bin/curl -fSs http://localhost:8002/wish -d @- > /dev/null - ''; - wishlist.filename = pkgs.writeDash "wishlist" '' - ${pkgs.curl}/bin/curl -fSs http://localhost:8002/wish | ${pkgs.jq}/bin/jq -r '.[]' - ''; - suggest.filename = pkgs.writeDash "suggest" '' - echo "$@" >> playlist_suggest - ''; - }; - } - ]; - }; - } - ]; - }; - - krebs.htgen.radio = { - port = 8001; - user = { - name = "radio"; - }; - scriptFile = pkgs.writeDash "radio" '' - case "$Method $Request_URI" in - "POST /skip") - printf 'HTTP/1.1 200 OK\r\n' - printf 'Connection: close\r\n' - printf '\r\n' - msg=$(${skip_track}/bin/skip_track) - ${write_to_irc} "$msg" - echo "$msg" - exit - ;; - "POST /good") - printf 'HTTP/1.1 200 OK\r\n' - printf 'Connection: close\r\n' - printf '\r\n' - msg=$(${good_track}/bin/good_track) - ${write_to_irc} "$msg" - echo "$msg" - exit - ;; - esac - ''; - }; - - networking.firewall.allowedTCPPorts = [ 80 ]; - services.nginx = { - enable = true; - virtualHosts."radio.r" = { - locations."/".extraConfig = '' - # https://github.com/aswild/icecast-notes#core-nginx-config - proxy_pass http://localhost:8000; - # Disable request size limit, very important for uploading large files - client_max_body_size 0; - - # Enable support `Transfer-Encoding: chunked` - chunked_transfer_encoding on; - - # Disable request and response buffering, minimize latency to/from Icecast - proxy_buffering off; - proxy_request_buffering off; - - # Icecast needs HTTP/1.1, not 1.0 or 2 - proxy_http_version 1.1; - - # Forward all original request headers - proxy_pass_request_headers on; - - # Set some standard reverse proxy headers. Icecast server currently ignores these, - # but may support them in a future version so that access logs are more useful. - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - - # get source ip for weather reports - proxy_set_header user-agent "$http_user_agent; client-ip=$remote_addr"; - ''; - locations."= /recent".extraConfig = '' - default_type "text/plain"; - alias /var/lib/radio/recent; - ''; - locations."= /current".extraConfig = '' - proxy_pass http://localhost:8002; - ''; - locations."= /skip".extraConfig = '' - proxy_pass http://localhost:8001; - ''; - locations."= /good".extraConfig = '' - proxy_pass http://localhost:8001; - ''; - locations."= /radio.sh".alias = pkgs.writeScript "radio.sh" '' - #!/bin/sh - trap 'exit 0' EXIT - while sleep 1; do - mpv \ - --cache-secs=0 --demuxer-readahead-secs=0 --untimed --cache-pause=no \ - 'http://radio.lassul.us/radio.ogg' - done - ''; - locations."= /controls".extraConfig = '' - default_type "text/html"; - alias ${./controls.html}; - ''; - extraConfig = '' - add_header 'Access-Control-Allow-Origin' '*'; - add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; - ''; - }; - }; - services.syncthing.declarative.folders."the_playlist" = { - path = "/var/music/the_playlist"; - devices = [ "mors" "phon