From 22e7081e1bbacb216ec35286cfdb33606f6a1555 Mon Sep 17 00:00:00 2001 From: Remy Moll Date: Thu, 16 Jan 2025 21:26:48 +0100 Subject: [PATCH] try hyprland instead --- hosts/spectre-x360-2018/default.nix | 2 +- modules/home-manager/backup.nix | 34 ++++++---- .../home-manager/hyprland-customization.nix | 65 +++++++++++++++++++ modules/nixos/hyprland.nix | 15 +++++ modules/nixos/nvidia.nix | 15 ++--- users/remy.nix | 45 ++++++------- 6 files changed, 132 insertions(+), 44 deletions(-) create mode 100644 modules/home-manager/hyprland-customization.nix create mode 100644 modules/nixos/hyprland.nix diff --git a/hosts/spectre-x360-2018/default.nix b/hosts/spectre-x360-2018/default.nix index 5a887b2..05cac3b 100644 --- a/hosts/spectre-x360-2018/default.nix +++ b/hosts/spectre-x360-2018/default.nix @@ -5,7 +5,7 @@ ./configuration.nix ./hardware-configuration.nix ../../modules/nixos/flatpak.nix - ../../modules/nixos/gdm.nix + ../../modules/nixos/hyprland.nix ../../modules/nixos/monitoring.nix ../../modules/nixos/nvidia.nix ../../modules/nixos/pipewire.nix diff --git a/modules/home-manager/backup.nix b/modules/home-manager/backup.nix index fb1d7ab..dfebe68 100644 --- a/modules/home-manager/backup.nix +++ b/modules/home-manager/backup.nix @@ -1,17 +1,25 @@ {pkgs, ...}: { - # Add a udev rule that launches a backup using restic when a specific USB device (the backup drive) is plugged in + # Add a udev rule that launches a backup using restic when a specific USB device (the backup drive) is plugged in - environment.systemPackages = with pkgs; [ - restic - ]; - services.udev.packages = [ - (pkgs.writeTextFile { - name = "bakc"; - text = '' - SUBSYSTEMS=="usb", ATTRS{idVendor}=="3297", ATTRS{idProduct}=="1969", MODE="0666", TAG+="uaccess", SYMLINK+="stm32_dfu", GROUP="plugdev" - ''; - destination = "/etc/udev/rules.d/50-zsa.rules"; - }) - ]; + environment.systemPackages = with pkgs; [ + restic + ]; + + # the udev rule: + services.udev.extraRules = '' + ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_LABEL}=="backup-restic", TAG+="systemd", ENV{SYSTEMD_WANTS}="backup-restic.service" + ''; + + # the systemd service: + systemd.services.backup-restic = { + description = "Backup using restic (triggered when USB drive is plugged in)"; + after = [ "local-fs.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "oneshot"; + # TODO: adapt command + ExecStart = "${pkgs.restic}/bin/restic backup /home/username"; + }; + }; } \ No newline at end of file diff --git a/modules/home-manager/hyprland-customization.nix b/modules/home-manager/hyprland-customization.nix new file mode 100644 index 0000000..c345a89 --- /dev/null +++ b/modules/home-manager/hyprland-customization.nix @@ -0,0 +1,65 @@ +{pkgs, ...}: +{ + wayland.windowManager.hyprland.enable = true; + programs.kitty.enable = true; + + wayland.windowManager.hyprland.settings = { + "$mod" = "SUPER"; + bind = + [ + "$mod, F, exec, firefox" + "$mod, enter, exec, anyrun" + "$mod, shift, enter, exec, kitty" + "$mod, shift, q, kill" + "$mod, s, exec, code" + ]; + }; + wayland.windowManager.hyprland.plugins = [ + inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprbars + inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprmenu + # Touch gestures: https://github.com/horriblename/hyprgrass + inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprgrass + # Virtual desktops: https://github.com/levnikmyskin/hyprland-virtual-desktops + inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprland-virtual-desktops + ]; + + + # Use anyrun + programs.anyrun = { + enable = true; + config = { + x = { fraction = 0.5; }; + y = { fraction = 0.3; }; + width = { fraction = 0.3; }; + hideIcons = false; + ignoreExclusiveZones = false; + layer = "overlay"; + hidePluginInfo = false; + closeOnClick = false; + showResultsImmediately = false; + maxEntries = null; + + plugins = [ + # An array of all the plugins you want, which either can be paths to the .so files, or their packages + inputs.anyrun.packages.${pkgs.system}.applications + inputs.anyrun.packages.${pkgs.system}.symbols + ]; + }; + + # Inline comments are supported for language injection into + # multi-line strings with Treesitter! (Depends on your editor) + # extraCss = /*css */ '' + # .some_class { + # background: red; + # } + # ''; + + extraConfigFiles."some-plugin.ron".text = '' + Config( + // for any other plugin + // this file will be put in ~/.config/anyrun/some-plugin.ron + // refer to docs of xdg.configFile for available options + ) + ''; + }; +} diff --git a/modules/nixos/hyprland.nix b/modules/nixos/hyprland.nix new file mode 100644 index 0000000..07c39ac --- /dev/null +++ b/modules/nixos/hyprland.nix @@ -0,0 +1,15 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + programs.uwsm.enable = true; + + programs.hyprland = { + enable = true; + withUWSM = true; + }; + +} diff --git a/modules/nixos/nvidia.nix b/modules/nixos/nvidia.nix index e9b8a44..b0d0635 100644 --- a/modules/nixos/nvidia.nix +++ b/modules/nixos/nvidia.nix @@ -17,19 +17,18 @@ enable = true; }; hardware.nvidia = { - prime = { - nvidiaBusId = "PCI:1:0:0"; - intelBusId = "PCI:0:2:0"; - - }; + # prime = { + # nvidiaBusId = "PCI:1:0:0"; + # intelBusId = "PCI:0:2:0"; + # }; modesetting.enable = true; - powerManagement.enable = false; + powerManagement.enable = true; powerManagement.finegrained = false; open = false; nvidiaSettings = false; package = config.boot.kernelPackages.nvidiaPackages.mkDriver { - version = "565.77"; # latest + version = "565.77"; sha256_64bit = "sha256-CnqnQsRrzzTXZpgkAtF7PbH9s7wbiTRNcM0SPByzFHw="; sha256_aarch64 = "sha256-LSAYUnhfnK3rcuPe1dixOwAujSof19kNOfdRHE7bToE="; openSha256 = "sha256-Fxo0t61KQDs71YA8u7arY+503wkAc1foaa51vi2Pl5I="; @@ -37,7 +36,7 @@ persistencedSha256 = "sha256-wnDjC099D8d9NJSp9D0CbsL+vfHXyJFYYgU3CwcqKww="; }; }; - + # overwrite the blacklists set previously boot.extraModprobeConfig = ""; boot.blacklistedKernelModules = []; services.udev.extraRules = ""; diff --git a/users/remy.nix b/users/remy.nix index 6592b1b..0da3267 100644 --- a/users/remy.nix +++ b/users/remy.nix @@ -6,7 +6,8 @@ with lib.hm.gvariant; ../modules/home-manager/code.nix ../modules/home-manager/fish.nix ../modules/home-manager/flatpaks.nix - ../modules/home-manager/gnome-shell-customization.nix + ../modules/home-manager/hyprland-customization.nix + # ../modules/home-manager/gnome-shell-customization.nix ../modules/home-manager/keepassxc.nix ../modules/home-manager/obsidian.nix ../modules/home-manager/owncloud-client.nix @@ -32,28 +33,28 @@ with lib.hm.gvariant; }; - ## Gnome keyboard and mouse settings - dconf.settings = { - # set the keyboard layout to german - "org/gnome/desktop/input-sources" = { - current = mkUint32 0; - sources = [ (mkTuple [ "xkb" "de" ]) (mkTuple [ "xkb" "ch" ]) (mkTuple [ "xkb" "us" ]) ]; - xkb-options = [ "lv3:ralt_switch" ]; - }; + # ## Gnome keyboard and mouse settings + # dconf.settings = { + # # set the keyboard layout to german + # "org/gnome/desktop/input-sources" = { + # current = mkUint32 0; + # sources = [ (mkTuple [ "xkb" "de" ]) (mkTuple [ "xkb" "ch" ]) (mkTuple [ "xkb" "us" ]) ]; + # xkb-options = [ "lv3:ralt_switch" ]; + # }; - "org/gnome/desktop/peripherals/keyboard" = { - numlock-state = true; - }; + # "org/gnome/desktop/peripherals/keyboard" = { + # numlock-state = true; + # }; - "org/gnome/desktop/peripherals/mouse" = { - natural-scroll = false; - speed = 0.20851063829787231; - }; + # "org/gnome/desktop/peripherals/mouse" = { + # natural-scroll = false; + # speed = 0.20851063829787231; + # }; - "org/gnome/desktop/peripherals/touchpad" = { - tap-to-click = true; - two-finger-scrolling-enabled = true; - speed = 0.16872427983539096; - }; - }; + # "org/gnome/desktop/peripherals/touchpad" = { + # tap-to-click = true; + # two-finger-scrolling-enabled = true; + # speed = 0.16872427983539096; + # }; + # }; }