From 919f5d17e4d42d5e2c7cddb93fdbffb0a45e500c Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Fri, 26 Apr 2024 10:25:17 +0200 Subject: [PATCH] attempt lilypond and ddc --- common/firefox.nix | 6 ++-- common/graphics/qt.nix | 18 +++++++---- common/graphics/sway.nix | 4 +-- common/laptop_hardware.nix | 52 ++++++++++++++++++++++++++++--- common/printing.nix | 1 + common/toolchains.nix | 1 + configuration.nix | 1 + flake.lock | 48 ++++++++++++++-------------- flake.nix | 2 +- modules/default.ly | 16 ++++++++++ modules/lilypond.nix | 64 ++++++++++++++++++++++++++++++++++++++ modules/users.nix | 16 +++++++++- overlays/ddc_patch.nix | 11 +++++++ overlays/default.nix | 8 ++--- sway/default.nix | 2 +- 15 files changed, 203 insertions(+), 47 deletions(-) create mode 100644 modules/default.ly create mode 100644 modules/lilypond.nix create mode 100644 overlays/ddc_patch.nix diff --git a/common/firefox.nix b/common/firefox.nix index a1101c2..e468ba3 100644 --- a/common/firefox.nix +++ b/common/firefox.nix @@ -48,16 +48,14 @@ in OverrideFirstRunPage = ""; OverridePostUpdatePage = ""; DontCheckDefaultBrowser = true; - Preferences = lib.mkMerge ([{ + Preferences = { "pdfjs.enableScripting" = false; "media.hardware-video-decoding.enabled" = true; "media.ffmpeg.vaapi.enabled" = true; "media.rdd-ffmpeg.enabled" = true; "media.navigator.mediadatadecoder_vpx_enabled" = true; - }] - ++ lib.optional cfg.sway.enable { "browser.tabs.inTitlebar" = 0; } - ); + } // lib.optionalAttrs cfg.sway.enable { "browser.tabs.inTitlebar" = 0; }; }; }; }; diff --git a/common/graphics/qt.nix b/common/graphics/qt.nix index cbed45a..3e53aba 100644 --- a/common/graphics/qt.nix +++ b/common/graphics/qt.nix @@ -6,22 +6,28 @@ in config = with cfg; lib.mkIf (enable && graphical) { qt = { enable = true; - style = "kvantum"; + style = "breeze"; platformTheme = "qt5ct"; }; - environment.systemPackages = with pkgs; [ - libsForQt5.qtstyleplugin-kvantum - catppuccin-kvantum + environment.systemPackages = with pkgs; with kdePackages; [ + # qtstyleplugin-kvantum + # catppuccin-kvantum catppuccin-sddm-corners libsForQt5.qtgraphicaleffects - catppuccin-kvantum + # catppuccin-kvantum kdePackages.audiocd-kio xcb-util-cursor qt6ct - libsForQt5.dolphin + dolphin papirus-icon-theme + qtwayland + libsForQt5.kirigami2 kdePackages.kirigami + breeze-icons + libsForQt5.breeze-qt5 + breeze + okular ]; # environment.etc."kvantum".source = "${pkgs.catppuccin-kvantum}/share/Kvantum"; diff --git a/common/graphics/sway.nix b/common/graphics/sway.nix index 1eeb8d7..5a98268 100644 --- a/common/graphics/sway.nix +++ b/common/graphics/sway.nix @@ -146,8 +146,8 @@ in export QT_WAYLAND_DISABLE_WINDOWDECORATION="1" export _JAVA_AWT_WM_NONREPARENTING=1 export MOZ_ENABLE_WAYLAND=1 - export WLR_RENDERER=vulkan - export DRI_PRIME=1 + # export WLR_RENDERER=vulkan + # export DRI_PRIME=1 export NIXOS_OZONE_WL=1 ''; }; diff --git a/common/laptop_hardware.nix b/common/laptop_hardware.nix index 3be13df..c553930 100644 --- a/common/laptop_hardware.nix +++ b/common/laptop_hardware.nix @@ -11,14 +11,40 @@ in pciutils usbutils powertop + ddcutil # tlpui + ] ++ lib.optionals graphical [ + ddcui ]; - services.ddccontrol.enable = true; + # services.ddccontrol.enable = true; powerManagement.scsiLinkPolicy = lib.mkIf (!config.services.tlp.enable) "min_power"; hardware.i2c.enable = true; services.xserver.libinput.enable = true; - powerManagement.cpuFreqGovernor = lib.mkDefault "performance"; + powerManagement.cpuFreqGovernor = lib.mkDefault "normal"; + + services.udev.extraRules = '' + SUBSYSTEM=="i2c-dev", ACTION=="add",\ + ATTR{name}=="NVIDIA i2c adapter*",\ + TAG+="ddcci",\ + TAG+="systemd",\ + ENV{SYSTEMD_WANTS}+="ddcci@$kernel.service" + ''; + + systemd.services."ddcci@" = { + scriptArgs = "%i"; + script = '' + sleep 20 + echo Trying to attach ddcci to $1 + i=0 + id=$(echo $1 | cut -d "-" -f 2) + if ${pkgs.ddcutil}/bin/ddcutil getvcp 10 -b $id; then + echo ddcci 0x37 > /sys/bus/i2c/devices/$1/new_device + fi + ''; + serviceConfig.Type = "oneshot"; + }; + boot = { kernelParams = [ @@ -30,8 +56,26 @@ in "mmio_stale_data=full,nosmt" "pcie_aspm=off" ]; # "vfio-pci.ids=10de:1aeb,10de:2191,10de:1aed,10de:1aec" ]; - kernelModules = [ "kvm-intel" "vfio_pci" "vfio_iommu_type1" "vfio" "i2c-dev" ]; - blacklistedKernelModules = [ "i2c_nvidia_gpu" ]; + extraModulePackages = [ + (config.boot.kernelPackages.ddcci-driver.overrideAttrs + (old: { + patches = [ + (pkgs.fetchpatch { + url = "https://gitlab.com/Sweenu/ddcci-driver-linux/-/commit/7f851f5fb8fbcd7b3a93aaedff90b27124e17a7e.patch"; + hash = "sha256-Y1ktYaJTd9DtT/mwDqtjt/YasW9cVm0wI43wsQhl7Bg="; + }) + ]; + })) + ]; + kernelModules = [ + "kvm-intel" + "vfio_pci" + "vfio_iommu_type1" + "vfio" + "ddcci_backlight" + "i2c-dev" + ]; + # blacklistedKernelModules = [ "i2c_nvidia_gpu" ]; }; services.power-profiles-daemon.enable = false; diff --git a/common/printing.nix b/common/printing.nix index eafc950..91087d4 100644 --- a/common/printing.nix +++ b/common/printing.nix @@ -17,6 +17,7 @@ in environment.systemPackages = with pkgs; (lib.optionals cfg.graphical [ kdePackages.skanpage + # libsForQt5.skanpage ]); }; diff --git a/common/toolchains.nix b/common/toolchains.nix index 3921306..d4501c4 100644 --- a/common/toolchains.nix +++ b/common/toolchains.nix @@ -29,6 +29,7 @@ in wget tree file + pypy3 util-linux visualvm ffmpeg-full diff --git a/configuration.nix b/configuration.nix index fba1bf3..936f158 100644 --- a/configuration.nix +++ b/configuration.nix @@ -5,6 +5,7 @@ # Include the results of the hardware scan. ./modules/fonts.nix ./modules/tabletdriver.nix + ./modules/lilypond.nix ./sway ]; diff --git a/flake.lock b/flake.lock index 9ef67fc..cf07479 100644 --- a/flake.lock +++ b/flake.lock @@ -78,11 +78,11 @@ "yafas": "yafas" }, "locked": { - "lastModified": 1713554347, - "narHash": "sha256-Li6DK5JqKesOhTBwSoqxWzOxUR0pcPxE/L7vVyEsZpM=", + "lastModified": 1713731828, + "narHash": "sha256-htFugddDpE7ziY/MdxKxD40+JejADwCkN6Ln5D8a0oY=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "72c35184e8260a612b00977d0bb26d63cb385cb0", + "rev": "60b608762452d4c17ce620cb1075078827f22108", "type": "github" }, "original": { @@ -364,11 +364,11 @@ ] }, "locked": { - "lastModified": 1713524465, - "narHash": "sha256-T1ZUTzBv5QHjus49MpKk/KJ8LEyJI1g+2NhwUhRT6bY=", + "lastModified": 1713682182, + "narHash": "sha256-2RSqVmQMFmn6OjQ21SXnWC+HuSeqDLWLftRv/ZhEDZE=", "owner": "nix-community", "repo": "home-manager", - "rev": "b1a5b3d6a524c80c7dd20888bff227d52adf5f03", + "rev": "4cec20dbf5c0a716115745ae32531e34816ecbbe", "type": "github" }, "original": { @@ -386,11 +386,11 @@ ] }, "locked": { - "lastModified": 1713333160, - "narHash": "sha256-iz4Uz3vykqsZwIY2hxEMfRrc1DvBgxHVCfSxppuj40s=", + "lastModified": 1713606448, + "narHash": "sha256-JMKo6uoAcUip9N10a3r1T2IoLz+pUStwIFrsVW/R4MA=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "d3ce25a385ec7ed899ffb282d1e54ccb4ac9ef0d", + "rev": "96cbbcd3712a0cb7f128c54b21ec2af0950d88d0", "type": "github" }, "original": { @@ -412,11 +412,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1713499612, - "narHash": "sha256-IpvUlRDZkBXstPGwB1HDQWHwsUCUGybViAqD6G6siLc=", + "lastModified": 1713647546, + "narHash": "sha256-oiLxCGkICL2LXHZV6hhm3858JC/+6oANV5guVaRM6Wg=", "owner": "martinvonz", "repo": "jj", - "rev": "449fc423b864e5b83043b93f80114a793b05a9f2", + "rev": "77eaf67f96c6ea438e2dd1a5636f34b6a321e6be", "type": "github" }, "original": { @@ -449,11 +449,11 @@ ] }, "locked": { - "lastModified": 1713523626, - "narHash": "sha256-BJX9d+IXZsmfiOyZv3n3ujom/q5iEvisxNTtoZ8MYRk=", + "lastModified": 1713620717, + "narHash": "sha256-YuYowUw5ecPa78bhT72zY2b99wn68mO3vVkop8hnb8M=", "owner": "YaLTeR", "repo": "niri", - "rev": "b98b95883def5cd726c1e96a006f9cd7498d1730", + "rev": "6a80078259ca3e3854b0748a15e98c7293d0822a", "type": "github" }, "original": { @@ -485,11 +485,11 @@ ] }, "locked": { - "lastModified": 1713173715, - "narHash": "sha256-l2pXDP1VMx/Jy4/G09Gh6xKSJ+vAXnUKlBtFRN6NEZs=", + "lastModified": 1713748476, + "narHash": "sha256-FB+tCte2nOOLI7i3YvHFZZsFWDjaq+f5nn4wxt6akTQ=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "32843d6cbb0dc010e077930b3b34ff7fd318be41", + "rev": "5dba7fd39730e14f3c54787df23c533dc98e1e0f", "type": "github" }, "original": { @@ -544,11 +544,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1713537308, - "narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5c24cf2f0a12ad855f444c30b2421d044120c66f", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { @@ -594,11 +594,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1713344939, - "narHash": "sha256-jpHkAt0sG2/J7ueKnG7VvLLkBYUMQbXQ2L8OBpVG53s=", + "lastModified": 1713725259, + "narHash": "sha256-9ZR/Rbx5/Z/JZf5ehVNMoz/s5xjpP0a22tL6qNvLt5E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e402c3eb6d88384ca6c52ef1c53e61bdc9b84ddd", + "rev": "a5e4bbcb4780c63c79c87d29ea409abf097de3f7", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 7502c7a..64a34a1 100644 --- a/flake.nix +++ b/flake.nix @@ -42,6 +42,7 @@ inherit system; specialArgs = { inherit inputs system stable; }; modules = [ + (import ./overlays) agenix.nixosModules.default chaotic.nixosModules.default nix-gaming.nixosModules.pipewireLowLatency @@ -51,7 +52,6 @@ ./modules/users.nix ./modules/system-packages.nix ./modules/kvm.nix - ./overlays { environment.systemPackages = [ agenix.packages.${system}.default ]; } ]; }; diff --git a/modules/default.ly b/modules/default.ly new file mode 100644 index 0000000..ba1961b --- /dev/null +++ b/modules/default.ly @@ -0,0 +1,16 @@ +\version "@version@" +\include "english.ly" + +\score { + \new Staff { + \key c \major + \numericTimeSignature + \time 4/4 + 16 8. + %% Here: the tie on the D's looks funny + %% Too tall? Left-hand endpoint is not aligned with the B tie? + ~ + 8 [ ] + } +} + diff --git a/modules/lilypond.nix b/modules/lilypond.nix new file mode 100644 index 0000000..4e8b507 --- /dev/null +++ b/modules/lilypond.nix @@ -0,0 +1,64 @@ +{ lib, config, pkgs, ... }: +let + cfg = config.grimmShared; + lily-pkg = pkgs.lilypond-with-fonts; + defaultPond = pkgs.substituteAll { + src = ./default.ly; + version = lib.getVersion lily-pkg; + }; +in +{ + programs.neovim = { + enable = true; + configure = { + + packages.myVimPackage = with pkgs.vimPlugins; { + # loaded on launch + start = [ + nvim-lilypond-suite + ]; + }; + }; + }; + + environment.systemPackages = with pkgs; [ + lily-pkg + ] ++ lib.optionals (cfg.sway.enable) [ + zathura + (with lib; writeShellScriptBin "lilypond-edit" '' + if [ "$1" == "" ] || [ $# -gt 1 ]; then + echo "useage: lilypond-edit [file-path]" + exit 0 + fi + if ! test -f "$1"; then + touch "$1" + cat ${defaultPond} > "$1" + fi + if ! test -f "$1"; then + echo "could not create file: $1" + exit 0 + fi + pdf_path=$(echo "$1" | sed -E "s/(\.ly)?$//") + generate_cmd="lilypond --pdf -o $pdf_path -s $1" + editor_pid=$(${getExe alacritty} --command ${getExe neovim} -c "autocmd BufWritePost * :silent !$generate_cmd" $1 &> /dev/null & echo $!) + $generate_cmd + + swaymsg [pid="$editor_pid"] focus + swaymsg splith + viewer_pid=$(${getExe zathura} "$pdf_path.pdf" &> /dev/null & echo $!) + sleep 1 + swaymsg [pid="$editor_pid"] focus + + echo "viewer pid is: $viewer_pid" + echo "editor pid is: $editor_pid" + + while ps -p $viewer_pid > /dev/null && ps -p $editor_pid > /dev/null; do + sleep .1 + done + + kill $viewer_pid &> /dev/null + kill $editor_pid &> /dev/null + '') + ]; + +} diff --git a/modules/users.nix b/modules/users.nix index a62e6ed..5e5ab2e 100644 --- a/modules/users.nix +++ b/modules/users.nix @@ -3,7 +3,21 @@ isNormalUser = true; # shell = pkgs.xonsh; description = "grimmauld"; - extraGroups = [ "networkmanager" "kvm" "wheel" "input" "video" "lp" "scanner" "libvirt" "libvirt-qemu" "libvirtd" "pipewire" "gamemode" ]; + extraGroups = [ + "networkmanager" + "kvm" + "wheel" + "input" + "video" + "lp" + "scanner" + "libvirt" + "libvirt-qemu" + "libvirtd" + "pipewire" + "gamemode" + "i2c" + ]; syncPaths = [ { remote = "3d"; } diff --git a/overlays/ddc_patch.nix b/overlays/ddc_patch.nix new file mode 100644 index 0000000..3625ad7 --- /dev/null +++ b/overlays/ddc_patch.nix @@ -0,0 +1,11 @@ +{ final, prev, ... }: { + ddcci-driver = prev.ddcci-driver.overrideAttrs + (old: { + patches = [ + (prev.fetchpatch { + url = "https://gitlab.com/Sweenu/ddcci-driver-linux/-/commit/7f851f5fb8fbcd7b3a93aaedff90b27124e17a7e.patch"; + hash = "sha256-Y1ktYaJTd9DtT/mwDqtjt/YasW9cVm0wI43wsQhl7Bg="; + }) + ]; + }); +} diff --git a/overlays/default.nix b/overlays/default.nix index a17adc0..4a2b231 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,6 +1,6 @@ { lib, config, ... }: { - nixpkgs.overlays = map (f: (final: prev: (import f { inherit final prev lib config;}))) - [ - ./wlr_flicker.nix - ]; + nixpkgs.overlays = map (f: (final: prev: (import f { inherit final prev lib config; }))) + [ + ./wlr_flicker.nix + ]; } diff --git a/sway/default.nix b/sway/default.nix index 62dd491..4d08a1e 100644 --- a/sway/default.nix +++ b/sway/default.nix @@ -146,7 +146,7 @@ "lxqt-policykit-agent" "otd-daemon" swaynotificationcenter - (pkgs.writeShellScriptBin "rmenu-cache-clear" "rm -r $HOME/.cache/rmenu") # invalidate rmenu cache on sway restart + # (pkgs.writeShellScriptBin "rmenu-cache-clear" "rm -r $HOME/.cache/rmenu") # invalidate rmenu cache on sway restart "dbus-update-activation-environment" ]; extraConfig = ''