diff --git a/flake.lock b/flake.lock index 6b8ba3a..8e6bf8f 100644 --- a/flake.lock +++ b/flake.lock @@ -76,11 +76,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1720244366, - "narHash": "sha256-WrDV0FPMVd2Sq9hkR5LNHudS3OSMmUrs90JUTN+MXpA=", + "lastModified": 1719838683, + "narHash": "sha256-Zw9rQjHz1ilNIimEXFeVa1ERNRBF8DoXDhLAZq5B4pE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "49ee0e94463abada1de470c9c07bfc12b36dcf40", + "rev": "d032c1a6dfad4eedec7e35e91986becc699d7d69", "type": "github" }, "original": { @@ -91,11 +91,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1720031269, - "narHash": "sha256-rwz8NJZV+387rnWpTYcXaRNvzUSnnF9aHONoJIYmiUQ=", + "lastModified": 1719848872, + "narHash": "sha256-H3+EC5cYuq+gQW8y0lSrrDZfH71LB4DAf+TDFyvwCNA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9f4128e00b0ae8ec65918efeba59db998750ead6", + "rev": "00d80d13810dbfea8ab4ed1009b09100cca86ba8", "type": "github" }, "original": { diff --git a/systems/PC-Fixe/configuration.nix b/systems/PC-Fixe/configuration.nix index 9abe4af..06a816c 100644 --- a/systems/PC-Fixe/configuration.nix +++ b/systems/PC-Fixe/configuration.nix @@ -29,6 +29,9 @@ boot.tmp.useTmpfs = false; boot.supportedFilesystems = [ "zfs" ]; + virtualisation.virtualbox.host.enable = true; + # virtualisation.virtualbox.host.enableExtensionPack = true; + # virtualisation.anbox.enable = true; virtualisation.podman.enable = true; services.zfs = { @@ -59,6 +62,21 @@ # Logitech G920 hardware.usb-modeswitch.enable = true; + # hardware.pulseaudio.extraConfig = '' + # load-module module-null-sink sink_name=mic_denoised_out rate=48000 + # load-module module-ladspa-sink sink_name=mic_raw_in sink_master=mic_denoised_out label=noise_suppressor_mono plugin=${pkgs.rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so control=50 + # load-module module-loopback source=alsa_input.pci-0000_09_00.4.analog-stereo sink=mic_raw_in channels=1 source_dont_move=true sink_dont_move=true + + # load-module module-echo-cancel source_name=hd_mic source_master=mic_denoised_out.monitor sink_master=alsa_output.pci-0000_09_00.4.analog-stereo + + # set-default-source hd_mic + # ''; + + # hardware.pulseaudio.configFile = pkgs.runCommand "default.pa" {} '' + # sed '/module-switch-on-port-available$/d' \ + # ${pkgs.pulseaudio}/etc/pulse/default.pa > $out + # ''; + services.udev.packages = with pkgs; [ usb-modeswitch-data # Logitech G920 ]; @@ -67,6 +85,8 @@ ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0664", GROUP="dialout" ''; + security.pki.certificateFiles = [ ./codemasters.pem ]; + networking.hostName = "paul-fixe"; networking.hostId = "3a1f739e"; @@ -84,6 +104,11 @@ networking.firewall.enable = false; + services.xserver.displayManager.autoLogin = { + enable = true; + user = "paul"; + }; + users.users.paul = { isNormalUser = true; extraGroups = [ "wheel" "networkmanager" "wireshark" "input" "dialout" "libvirtd" "vboxusers" ]; @@ -100,11 +125,164 @@ X11Forwarding = true; }; + # security.pki.certificates = [ + # '' + # -----BEGIN CERTIFICATE----- + # MIIDoTCCAomgAwIBAgIGDorvJrq1MA0GCSqGSIb3DQEBCwUAMCgxEjAQBgNVBAMM + # CW1pdG1wcm94eTESMBAGA1UECgwJbWl0bXByb3h5MB4XDTIwMDgzMDE5MjA1NloX + # DTIzMDkwMTE5MjA1NlowKDESMBAGA1UEAwwJbWl0bXByb3h5MRIwEAYDVQQKDAlt + # aXRtcHJveHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCsUHB2if9A + # L5ytR9VrZncwDdx3J6ZdA2+wZQe9EjtX5ax1r55bbQBoJmN2HqZCSA3vdvMzr42W + # Jx0ksNhNocEGvER2dTUIqkUKeeYQIRCc5CD9T5IpUVVKm3aeJo+FATmuzg4m23MZ + # a9Up4nCdUJwufSqzv0ZWvEHERWtRXPYRZ2t+vKqnCS+dOQ3NsGWvC+12i7kNMKyy + # 0ylFBY/BZfaH/kMVzUijAnNQPWpW3T/Wqpx7z+IXZ+ccCQ1U1N26FXhSMa/+DenW + # fo27QVNOu5cIIpAYmTl6+Oek0XLSH8oFLdjeVtBJuHFA1iAfmqPv4yJDKbSgg/d8 + # Jb46BE2ZyW6RAgMBAAGjgdAwgc0wDwYDVR0TAQH/BAUwAwEB/zARBglghkgBhvhC + # AQEEBAMCAgQweAYDVR0lBHEwbwYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcD + # BAYIKwYBBQUHAwgGCisGAQQBgjcCARUGCisGAQQBgjcCARYGCisGAQQBgjcKAwEG + # CisGAQQBgjcKAwMGCisGAQQBgjcKAwQGCWCGSAGG+EIEATAOBgNVHQ8BAf8EBAMC + # AQYwHQYDVR0OBBYEFEiFqrQtFmTV66rlQ9SCqp7ohrtsMA0GCSqGSIb3DQEBCwUA + # A4IBAQBfH5xpxt4mCdnjiISaMeEcKuur2kfVbQEKNceDeKLZJfcwEkMtAr0LeyMV + # 1hkExtvyU0JPmgyzU7Le4UHEB8pwyyD3kYx7vBtxjVSXAbK1YKgDllPmXtlJGmA/ + # SMuxnwkUXwMeZBxmu8LR1SOQiMX+aZvYbQIjigduXOC/ZSHYtJbh+RmrvHFEBu7L + # zZx8DzJKOmlfo9gohNIW1ucRM6B4B5yy5plqurGlkFPHlRqGoWkJPI4oB+cobzMh + # QidzHgk4Set3bqIuYAsqtHGxdTtnGooagQBUWt0CxmGdmonofzinsAAasKprcBl6 + # QaNGz7o/LfHprXvCM1mHjbVVbZN2 + # -----END CERTIFICATE----- + # '' + # ]; + + # services.wakeonlan.interfaces = [ { interface = "eno1"; method = "magicpacket"; } ]; + + services.nginx = { + enable = true; + recommendedGzipSettings = true; + recommendedOptimisation = true; + package = pkgs.nginx.override { + modules = with pkgs.nginxModules; [ rtmp ]; + }; + virtualHosts."stream.nyanlout.re" = { + locations."/" = { + root = "/var/www/hls/"; + extraConfig = '' + add_header Cache-Control no-cache; + add_header Access-Control-Allow-Origin *; + ''; + }; + default = true; + }; + appendConfig = let + rootLocation = config.services.nginx.virtualHosts."stream.nyanlout.re".locations."/".root; + in '' + rtmp { + server { + listen 1935; + + application live { + live on; + interleave on; + exec_push ${pkgs.ffmpeg}/bin/ffmpeg -i rtmp://localhost/$app/$name -async 1 -vsync -1 + -c:v libx264 -c:a aac -b:v 256k -b:a 96k -vf "scale=480:trunc(ow/a/2)*2" -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost/show/$name_low + -c:v libx264 -c:a aac -b:v 768k -b:a 96k -vf "scale=720:trunc(ow/a/2)*2" -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost/show/$name_mid + -c:v libx264 -c:a aac -b:v 1024k -b:a 128k -vf "scale=960:trunc(ow/a/2)*2" -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost/show/$name_high + -c:v libx264 -c:a aac -b:v 1920k -b:a 128k -vf "scale=1280:trunc(ow/a/2)*2" -tune zerolatency -preset veryfast -crf 23 -f flv rtmp://localhost/show/$name_hd720 + -c copy -f flv rtmp://localhost/show/$name_src 2>>${rootLocation}/ffmpeg-$name.log; + } + + application show { + live on; + hls on; + + hls_path ${rootLocation}; + hls_fragment 5; + hls_playlist_length 10; + hls_nested on; + + hls_variant _low BANDWIDTH=352000; # Low bitrate, sub-SD resolution + hls_variant _mid BANDWIDTH=448000; # Medium bitrate, SD resolution + hls_variant _high BANDWIDTH=1152000; # High bitrate, higher-than-SD resolution + hls_variant _hd720 BANDWIDTH=2048000; # High bitrate, HD 720p resolution + hls_variant _src BANDWIDTH=8192000; # Source bitrate, source resolution + } + } + } + ''; + }; + + services.xserver.deviceSection = '' + Option "metamodes" "DP-4: 3440x1440_144 +0+0 {AllowGSYNCCompatible=On}" + ''; + services.printing.enable = true; services.printing.drivers = [ pkgs.hplip ]; - systemd.services = { - zfs-replication.serviceConfig.StateDirectory = "zfs-replication"; + systemd = let + DP4Config = "--output DP-4 --mode 3440x1440 --rate 144"; + HDMIConfig = "--output HDMI-0 --auto --left-of DP-4"; + in { + services = { + wol = { + description = "Wake-on-LAN"; + wantedBy = [ "multi-user.target" ]; + requires = [ "network.target" ]; + after = [ "network.target" ]; + script = '' + ${pkgs.ethtool}/sbin/ethtool -s eno1 wol g + ''; + serviceConfig.Type = "oneshot"; + }; + nginx.serviceConfig.ReadWritePaths = "/var/www/hls"; + zfs-replication.serviceConfig.StateDirectory = "zfs-replication"; + }; + user.services = { + "enableTV" = { + description = "Enable TV output"; + script = '' + ${pkgs.xorg.xrandr}/bin/xrandr ${DP4Config} --primary + /run/current-system/sw/bin/nvidia-settings --assign CurrentMetaMode="DP-4: 3440x1440_144 { AllowGSYNCCompatible=On }" + ${pkgs.xorg.xrandr}/bin/xrandr ${HDMIConfig} + ${pkgs.pipewire}/bin/pw-cli s 43 Profile '{ index: 1 }' + ''; + conflicts = ["CSMode.service"]; + serviceConfig.Type = "oneshot"; + }; + "primaryTV" = { + description = "Set TV output as primary"; + script = '' + ${pkgs.xorg.xrandr}/bin/xrandr ${DP4Config} + /run/current-system/sw/bin/nvidia-settings --assign CurrentMetaMode="DP-4: 3440x1440_144 { AllowGSYNCCompatible=On }" + ${pkgs.xorg.xrandr}/bin/xrandr ${HDMIConfig} --primary + ${pkgs.pipewire}/bin/pw-cli s 43 Profile '{ index: 1 }' + ''; + conflicts = ["CSMode.service"]; + serviceConfig.Type = "oneshot"; + }; + "FreeSyncMode" = { + description = "Enable FreeSync screen only"; + script = '' + ${pkgs.xorg.xrandr}/bin/xrandr ${DP4Config} + /run/current-system/sw/bin/nvidia-settings --assign CurrentMetaMode="DP-4: 3440x1440_144 { AllowGSYNCCompatible=On }" + ${pkgs.xorg.xrandr}/bin/xrandr --output HDMI-0 --off + ''; + conflicts = ["CSMode.service"]; + serviceConfig.Type = "oneshot"; + }; + "CSMode" = { + description = "Enable 4:3 black bars"; + script = '' + ${pkgs.xorg.xrandr}/bin/xrandr ${DP4Config} --primary + /run/current-system/sw/bin/nvidia-settings --assign CurrentMetaMode="DP-4: 3440x1440_144 { ViewPortIn=3440x1440, ViewPortOut=1920x1440+760+0, AllowGSYNCCompatible=On }" + ${pkgs.xorg.xrandr}/bin/xrandr --output HDMI-0 --off + ''; + preStop = '' + /run/current-system/sw/bin/nvidia-settings --assign CurrentMetaMode="DP-4: 3440x1440_144 { ViewPortIn=3440x1440, ViewPortOut=3440x1440+0+0, AllowGSYNCCompatible=On }" + ''; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + }; + }; }; system.stateVersion = "20.03"; diff --git a/systems/PC-Fixe/hardware-configuration.nix b/systems/PC-Fixe/hardware-configuration.nix index 9277cce..1547b63 100644 --- a/systems/PC-Fixe/hardware-configuration.nix +++ b/systems/PC-Fixe/hardware-configuration.nix @@ -11,10 +11,6 @@ services.xserver.videoDrivers = [ "nvidia" ]; hardware.cpu.amd.updateMicrocode = true; - hardware.nvidia = { - modesetting.enable = true; - nvidiaSettings = false; - }; fileSystems."/" = { device = "rpool/root/nixos"; diff --git a/systems/common-gui.nix b/systems/common-gui.nix index 2edf12d..909737d 100644 --- a/systems/common-gui.nix +++ b/systems/common-gui.nix @@ -14,6 +14,8 @@ betaflight-configurator + # electrum + # electron-cash ledger-live-desktop monero-gui @@ -35,7 +37,7 @@ ark kate kmail - kdePackages.kdeconnect-kde + plasma5Packages.kdeconnect-kde okular yakuake konversation @@ -48,6 +50,8 @@ inherit (texlive) scheme-small titling collection-langfrench cm-super; }) + libsForQt5.breeze-gtk + libreoffice gimp @@ -72,6 +76,12 @@ programs.steam.enable = true; + # hardware = { + # pulseaudio.enable = true; + # }; + + # sound.enable = true; + security.rtkit.enable = true; services.pipewire = { @@ -97,14 +107,12 @@ }; services = { - desktopManager.plasma6.enable = true; - displayManager = { - autoLogin.user = "paul"; - sddm = { - enable = true; - wayland.enable = true; - autoLogin.relogin = true; - }; + xserver = { + enable = true; + layout = "fr"; + exportConfiguration = true; + displayManager.sddm.enable = true; + desktopManager.plasma5.enable = true; }; udev.packages = with pkgs; [ ledger-udev-rules ]; pcscd.enable = true;