diff --git a/flake.nix b/flake.nix index b7aebd3..6fb25d0 100755 --- a/flake.nix +++ b/flake.nix @@ -84,17 +84,13 @@ system = "aarch64-linux"; modules = [ ./hosts/callisto - # ./modules/nixos/gaming.nix - ./modules/nixos/audio.nix - ./modules/nixos/networking.nix - ./modules/common/fonts.nix + ./modules/nixos/audio + ./modules/nixos/networking + ./modules/common/fonts apple-silicon.nixosModules.apple-silicon-support - catppuccin.nixosModules.catppuccin - lix-module.nixosModules.default - home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; @@ -102,11 +98,10 @@ home-manager.backupFileExtension = "backup"; home-manager.users.youwen = { imports = [ - ./users/youwen/linux/linux-home.nix - ./users/youwen/linux/desktop.nix - ./users/youwen/linux/programs.nix - ./users/youwen/common/core.nix - ./users/youwen/linux/catppuccin.nix + ./users/youwen/common + ./users/youwen/linux/laptop + ./users/youwen/linux/packages/aarch-64 + inputs.catppuccin.homeManagerModules.catppuccin ]; }; diff --git a/modules/common/fonts.nix b/modules/common/fonts/default.nix similarity index 100% rename from modules/common/fonts.nix rename to modules/common/fonts/default.nix diff --git a/modules/nixos/audio.nix b/modules/nixos/audio/default.nix similarity index 100% rename from modules/nixos/audio.nix rename to modules/nixos/audio/default.nix diff --git a/modules/nixos/gaming.nix b/modules/nixos/gaming/default.nix similarity index 100% rename from modules/nixos/gaming.nix rename to modules/nixos/gaming/default.nix diff --git a/modules/nixos/networking.nix b/modules/nixos/networking/default.nix similarity index 100% rename from modules/nixos/networking.nix rename to modules/nixos/networking/default.nix diff --git a/modules/nixos/nvidia.nix b/modules/nixos/nvidia/default.nix similarity index 100% rename from modules/nixos/nvidia.nix rename to modules/nixos/nvidia/default.nix diff --git a/modules/nixos/secureboot.nix b/modules/nixos/secureboot/default.nix similarity index 100% rename from modules/nixos/secureboot.nix rename to modules/nixos/secureboot/default.nix diff --git a/users/youwen/common/default.nix b/users/youwen/common/default.nix new file mode 100644 index 0000000..3f1ae7b --- /dev/null +++ b/users/youwen/common/default.nix @@ -0,0 +1,3 @@ +{ + imports = [ ./core.nix ]; +} diff --git a/users/youwen/linux/common-desktop-environment.nix b/users/youwen/linux/common-desktop-environment.nix new file mode 100755 index 0000000..a2eb3e3 --- /dev/null +++ b/users/youwen/linux/common-desktop-environment.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: { + # Audio effects and EQ tool + services.easyeffects.enable = true; + services.easyeffects.package = pkgs.easyeffects; + + # Notification daemon + services.dunst = { + enable = true; + catppuccin.enable = true; + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + size = "32x32"; + }; + }; + + # Currently non-functional + programs.wlogout.enable = true; + programs.rofi = { + enable = true; + package = pkgs.rofi-wayland; + theme = "gruvbox-dark"; + }; +} diff --git a/users/youwen/linux/desktop.nix b/users/youwen/linux/desktop.nix deleted file mode 100755 index 2839ea3..0000000 --- a/users/youwen/linux/desktop.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ pkgs, ... }: { - wayland.windowManager.hyprland = import ./hyprland-conf.nix; - - # Audio effects and EQ tool - services.easyeffects.enable = true; - services.easyeffects.package = pkgs.easyeffects; - - # Notification daemon - services.dunst = { - enable = true; - catppuccin.enable = true; - iconTheme = { - name = "Papirus-Dark"; - package = pkgs.papirus-icon-theme; - size = "32x32"; - }; - }; - - # Currently non-functional - programs.wlogout.enable = true; - - gtk = { - enable = true; - catppuccin.enable = true; - cursorTheme = { - name = "Bibata-Modern-Ice"; - size = 26; - }; - iconTheme = { name = "Papirus-Dark"; }; - }; - - qt = { - enable = true; - platformTheme.name = "qtct"; - style.name = "kvantum"; - }; - - xdg.configFile = { - "Kvantum/kvantum.kvconfig".text = '' - [General] - theme=GraphiteNordDark - ''; - - "Kvantum/GraphiteNord".source = - "${pkgs.graphite-kde-theme}/share/Kvantum/GraphiteNord"; - }; - - programs.rofi = { - enable = true; - package = pkgs.rofi-wayland; - theme = "gruvbox-dark"; - }; - - programs.waybar = import ./waybar/waybar-conf.nix; -} diff --git a/users/youwen/linux/desktop/default.nix b/users/youwen/linux/desktop/default.nix new file mode 100644 index 0000000..7ce9639 --- /dev/null +++ b/users/youwen/linux/desktop/default.nix @@ -0,0 +1,4 @@ +{ + imports = [ ../theming ../home.nix ../programs ../hyprland/desktop ../common-desktop-environment.nix ]; +} + diff --git a/users/youwen/linux/linux-home.nix b/users/youwen/linux/home.nix similarity index 58% rename from users/youwen/linux/linux-home.nix rename to users/youwen/linux/home.nix index dcb7ab0..1b5f7ed 100755 --- a/users/youwen/linux/linux-home.nix +++ b/users/youwen/linux/home.nix @@ -25,63 +25,6 @@ source = ../../../wallpapers; recursive = true; }; - - # Packages that should be installed to the user profile. - home.packages = with pkgs; [ - neofetch - - # archives - zip - xz - unzip - p7zip - - # utils - nurl # helps fetch git data for nixpkgs - - # nix related - # - # it provides the command `nom` works just like `nix` - # with more details log output - nix-output-monitor - - # system tools - pciutils # lspci - usbutils # lsusb - - # desktop utils - wl-clipboard - grim - slurp - swappy - pavucontrol - swww - waypaper - - # desktop apps - dolphin - # bitwarden-desktop - thunderbird - # spotify - vesktop - signal-desktop - # modrinth-app - # lutris - # wine - - # dev tools - nodePackages_latest.pnpm - rustfmt - rust-analyzer - - # desktop ricing - bibata-cursors - libsForQt5.qtstyleplugin-kvantum - libsForQt5.qt5ct - papirus-icon-theme - libsForQt5.qt5ct - ]; - # This value determines the home Manager release that your # configuration is compatible with. This helps avoid breakage # when a new home Manager release introduces backwards diff --git a/users/youwen/linux/hyprland-conf.nix b/users/youwen/linux/hyprland-conf.nix deleted file mode 100755 index 3e746fb..0000000 --- a/users/youwen/linux/hyprland-conf.nix +++ /dev/null @@ -1,208 +0,0 @@ -{ - enable = true; - settings = { - exec-once = [ "waypaper --restore" ]; - "$mod" = "SUPER"; - "$Left" = "Y"; - "$Right" = "O"; - "$Up" = "I"; - "$Down" = "U"; - env = [ - "HYPRCURSOR_THEME,Bibata-Modern-Ice" - "HYPRCURSOR_SIZE,26" - "XCURSOR_THEME,Bibata-Modern-Ice" - "XCURSOR_SIZE,26" - ]; - bind = [ - # Application Keybinds - "$mod, F, exec, librewolf" - "$mod, T, exec, kitty" - "$mod, E, exec, dolphin" - "$mod, R, exec, pavucontrol" - - # Window actions - "$mod, Q, killactive" - "$mod, W, togglefloating" - "$mod, J, togglesplit" - "$mod, Return, fullscreen" - - # Move around - "$mod, $Left, movefocus, l" - "$mod, $Right, movefocus, r" - "$mod, $Up, movefocus, u" - "$mod, $Down, movefocus, d" - - "$mod, 1, workspace, 1" - "$mod, 2, workspace, 2" - "$mod, 3, workspace, 3" - "$mod, 4, workspace, 4" - "$mod, 5, workspace, 5" - "$mod, 6, workspace, 6" - "$mod, 7, workspace, 7" - "$mod, 8, workspace, 8" - "$mod, 9, workspace, 9" - "$mod, 0, workspace, 10" - - "$mod, S, togglespecialworkspace" - - # Move windows around - "$mod+Shift+Ctrl, $Left, movewindow, l" - "$mod+Shift+Ctrl, $Right, movewindow, r" - "$mod+Shift+Ctrl, $Up, movewindow, u" - "$mod+Shift+Ctrl, $Down, movewindow, d" - - "$mod+Ctrl+Alt, $Right, movetoworkspace, r+1" - "$mod+Ctrl+Alt, $Left, movetoworkspace, r-1" - - "$mod+Ctrl, $Right, workspace, r+1" - "$mod+Ctrl, $Left, workspace, r-1" - - "$mod+Alt, S, movetoworkspacesilent, special" - - # Utilities - "$mod, Space, exec, pkill -x rofi || rofi -show drun" # Run rofi - - ''$mod, P, exec, grim -g "$(slurp)" - | swappy -f -'' # Screenshot - - "$mod, Backspace, exec, wlogout" # Screenshot - ]; - bindm = [ - "$mod, mouse:272, movewindow" - "$mod, mouse:273, resizewindow" - "$mod, Z, movewindow" - "$mod, X, resizewindow" - ]; - windowrulev2 = [ - "opacity 0.90 0.90,class:^(librewolf)$" - "opacity 0.90 0.90,class:^(Brave-browser)$" - "opacity 0.80 0.80,class:^(Steam)$" - "opacity 0.80 0.80,class:^(steam)$" - "opacity 0.80 0.80,class:^(steamwebhelper)$" - "opacity 0.80 0.80,class:^(Spotify)$" - "opacity 0.80 0.80,initialTitle:^(Spotify Premium)$" - "opacity 0.80 0.80,initialTitle:^(Spotify Free)$" - "opacity 0.80 0.80,class:^(code-oss)$" - "opacity 0.80 0.80,class:^(Code)$" - "opacity 0.80 0.80,class:^(code-url-handler)$" - "opacity 0.80 0.80,class:^(code-insiders-url-handler)$" - "opacity 0.80 0.80,class:^(kitty)$" - "opacity 0.80 0.80,class:^(org.kde.dolphin)$" - "opacity 0.80 0.80,class:^(org.kde.ark)$" - "opacity 0.80 0.80,class:^(nwg-look)$" - "opacity 0.80 0.80,class:^(qt5ct)$" - "opacity 0.80 0.80,class:^(qt6ct)$" - "opacity 0.80 0.80,class:^(kvantummanager)$" - - "opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk" - "opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk" - "opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk" - "opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt" - "opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk" - "opacity 0.80 0.80,class:^(discord)$ # Discord-Electron" - "opacity 0.80 0.80,class:^(vesktop)$ # Vesktop-Electron" - "opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron" - "opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk" - "opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt" - "opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk" - "opacity 0.80 0.80,class:^(signal)$ # Signal-Gtk" - "opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk" - "opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk" - "opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk" - "opacity 0.80 0.80,class:^(lutris)$ # Lutris game launcher" - - "opacity 0.80 0.70,class:^(pavucontrol)$" - "opacity 0.80 0.70,class:^(blueman-manager)$" - "opacity 0.80 0.70,class:^(nm-applet)$" - "opacity 0.80 0.70,class:^(nm-connection-editor)$" - "opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$" - - "float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$" - "float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$" - "float,title:^(Picture-in-Picture)$" - "float,class:^(librewolf)$,title:^(Library)$" - "float,class:^(vlc)$" - "float,class:^(kvantummanager)$" - "float,class:^(qt5ct)$" - "float,class:^(qt6ct)$" - "float,class:^(nwg-look)$" - "float,class:^(org.kde.ark)$" - "float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk" - "float,class:^(app.drey.Warp)$ # Warp-Gtk" - "float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt" - "float,class:^(yad)$ # Protontricks-Gtk" - "float,class:^(eog)$ # Imageviewer-Gtk" - "float,class:^(io.github.alainm23.planify)$ # planify-Gtk" - "float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk" - "float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk" - "float,class:^(pavucontrol)$" - "float,class:^(blueman-manager)$" - "float,class:^(nm-applet)$" - "float,class:^(nm-connection-editor)$" - "float,class:^(org.kde.polkit-kde-authentication-agent-1)$" - "opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.gtk)$" - "opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.hyprland)$" - ]; - layerrule = [ - "blur,rofi" - "ignorezero,rofi" - "blur,notifications" - "ignorezero,notifications" - "blur,swaync-notification-window" - "ignorezero,swaync-notification-window" - "blur,swaync-control-center" - "ignorezero,swaync-control-center" - "blur,logout_dialog" - ]; - monitor = - [ "DP-1,2560x1440@165,1920x0,auto" "HDMI-A-1,1920x1080@60,0x0,1" ]; - dwindle = { - pseudotile = "yes"; - preserve_split = "yes"; - }; - animations = { - enabled = "yes"; - bezier = [ - "wind, 0.05, 0.9, 0.1, 1.05" - "winIn, 0.1, 1.1, 0.1, 1.1" - "winOut, 0.3, -0.3, 0, 1" - "liner, 1, 1, 1, 1" - ]; - animation = [ - "windows, 1, 6, wind, slide" - "windowsIn, 1, 6, winIn, slide" - "windowsOut, 1, 5, winOut, slide" - "windowsMove, 1, 5, wind, slide" - "border, 1, 1, liner" - "borderangle, 1, 30, liner, loop" - "fade, 1, 10, default" - "workspaces, 1, 5, wind" - ]; - }; - general = { - gaps_in = "3"; - gaps_out = "8"; - border_size = "2"; - # - # the dot is a hyprland name, not nix syntax, so we escape it - "col.active_border" = "rgba(ca9ee6ff) rgba(f2d5cfff) 45deg"; - "col.inactive_border" = "rgba(b4befecc) rgba(6c7086cc) 45deg"; - layout = "dwindle"; - resize_on_border = "true"; - sensitivity = "0.5"; - }; - decoration = { - rounding = "10"; - drop_shadow = "false"; - dim_special = "0.3"; - blur = { - enabled = "yes"; - size = "6"; - passes = "3"; - new_optimizations = "on"; - ignore_opacity = "on"; - xray = "false"; - special = true; - }; - }; - }; -} diff --git a/users/youwen/linux/hyprland/common.nix b/users/youwen/linux/hyprland/common.nix new file mode 100644 index 0000000..480ad9f --- /dev/null +++ b/users/youwen/linux/hyprland/common.nix @@ -0,0 +1,210 @@ +{ + wayland.windowManager.hyprland = { + enable = true; + settings = { + exec-once = [ "waypaper --restore" ]; + "$mod" = "SUPER"; + "$Left" = "Y"; + "$Right" = "O"; + "$Up" = "I"; + "$Down" = "U"; + env = [ + "HYPRCURSOR_THEME,Bibata-Modern-Ice" + "HYPRCURSOR_SIZE,26" + "XCURSOR_THEME,Bibata-Modern-Ice" + "XCURSOR_SIZE,26" + ]; + bind = [ + # Application Keybinds + "$mod, F, exec, librewolf" + "$mod, T, exec, kitty" + "$mod, E, exec, dolphin" + "$mod, R, exec, pavucontrol" + + # Window actions + "$mod, Q, killactive" + "$mod, W, togglefloating" + "$mod, J, togglesplit" + "$mod, Return, fullscreen" + + # Move around + "$mod, $Left, movefocus, l" + "$mod, $Right, movefocus, r" + "$mod, $Up, movefocus, u" + "$mod, $Down, movefocus, d" + + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + + "$mod, S, togglespecialworkspace" + + # Move windows around + "$mod+Shift+Ctrl, $Left, movewindow, l" + "$mod+Shift+Ctrl, $Right, movewindow, r" + "$mod+Shift+Ctrl, $Up, movewindow, u" + "$mod+Shift+Ctrl, $Down, movewindow, d" + + "$mod+Ctrl+Alt, $Right, movetoworkspace, r+1" + "$mod+Ctrl+Alt, $Left, movetoworkspace, r-1" + + "$mod+Ctrl, $Right, workspace, r+1" + "$mod+Ctrl, $Left, workspace, r-1" + + "$mod+Alt, S, movetoworkspacesilent, special" + + # Utilities + "$mod, Space, exec, pkill -x rofi || rofi -show drun" # Run rofi + + ''$mod, P, exec, grim -g "$(slurp)" - | swappy -f -'' # Screenshot + + "$mod, Backspace, exec, wlogout" # Screenshot + ]; + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + "$mod, Z, movewindow" + "$mod, X, resizewindow" + ]; + windowrulev2 = [ + "opacity 0.90 0.90,class:^(librewolf)$" + "opacity 0.90 0.90,class:^(Brave-browser)$" + "opacity 0.80 0.80,class:^(Steam)$" + "opacity 0.80 0.80,class:^(steam)$" + "opacity 0.80 0.80,class:^(steamwebhelper)$" + "opacity 0.80 0.80,class:^(Spotify)$" + "opacity 0.80 0.80,initialTitle:^(Spotify Premium)$" + "opacity 0.80 0.80,initialTitle:^(Spotify Free)$" + "opacity 0.80 0.80,class:^(code-oss)$" + "opacity 0.80 0.80,class:^(Code)$" + "opacity 0.80 0.80,class:^(code-url-handler)$" + "opacity 0.80 0.80,class:^(code-insiders-url-handler)$" + "opacity 0.80 0.80,class:^(kitty)$" + "opacity 0.80 0.80,class:^(org.kde.dolphin)$" + "opacity 0.80 0.80,class:^(org.kde.ark)$" + "opacity 0.80 0.80,class:^(nwg-look)$" + "opacity 0.80 0.80,class:^(qt5ct)$" + "opacity 0.80 0.80,class:^(qt6ct)$" + "opacity 0.80 0.80,class:^(kvantummanager)$" + + "opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk" + "opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk" + "opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk" + "opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt" + "opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk" + "opacity 0.80 0.80,class:^(discord)$ # Discord-Electron" + "opacity 0.80 0.80,class:^(vesktop)$ # Vesktop-Electron" + "opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron" + "opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk" + "opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt" + "opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk" + "opacity 0.80 0.80,class:^(signal)$ # Signal-Gtk" + "opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk" + "opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk" + "opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk" + "opacity 0.80 0.80,class:^(lutris)$ # Lutris game launcher" + + "opacity 0.80 0.70,class:^(pavucontrol)$" + "opacity 0.80 0.70,class:^(blueman-manager)$" + "opacity 0.80 0.70,class:^(nm-applet)$" + "opacity 0.80 0.70,class:^(nm-connection-editor)$" + "opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$" + + "float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$" + "float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$" + "float,title:^(Picture-in-Picture)$" + "float,class:^(librewolf)$,title:^(Library)$" + "float,class:^(vlc)$" + "float,class:^(kvantummanager)$" + "float,class:^(qt5ct)$" + "float,class:^(qt6ct)$" + "float,class:^(nwg-look)$" + "float,class:^(org.kde.ark)$" + "float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk" + "float,class:^(app.drey.Warp)$ # Warp-Gtk" + "float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt" + "float,class:^(yad)$ # Protontricks-Gtk" + "float,class:^(eog)$ # Imageviewer-Gtk" + "float,class:^(io.github.alainm23.planify)$ # planify-Gtk" + "float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk" + "float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk" + "float,class:^(pavucontrol)$" + "float,class:^(blueman-manager)$" + "float,class:^(nm-applet)$" + "float,class:^(nm-connection-editor)$" + "float,class:^(org.kde.polkit-kde-authentication-agent-1)$" + "opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.gtk)$" + "opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.hyprland)$" + ]; + layerrule = [ + "blur,rofi" + "ignorezero,rofi" + "blur,notifications" + "ignorezero,notifications" + "blur,swaync-notification-window" + "ignorezero,swaync-notification-window" + "blur,swaync-control-center" + "ignorezero,swaync-control-center" + "blur,logout_dialog" + ]; + monitor = + [ "DP-1,2560x1440@165,1920x0,auto" "HDMI-A-1,1920x1080@60,0x0,1" ]; + dwindle = { + pseudotile = "yes"; + preserve_split = "yes"; + }; + animations = { + enabled = "yes"; + bezier = [ + "wind, 0.05, 0.9, 0.1, 1.05" + "winIn, 0.1, 1.1, 0.1, 1.1" + "winOut, 0.3, -0.3, 0, 1" + "liner, 1, 1, 1, 1" + ]; + animation = [ + "windows, 1, 6, wind, slide" + "windowsIn, 1, 6, winIn, slide" + "windowsOut, 1, 5, winOut, slide" + "windowsMove, 1, 5, wind, slide" + "border, 1, 1, liner" + "borderangle, 1, 30, liner, loop" + "fade, 1, 10, default" + "workspaces, 1, 5, wind" + ]; + }; + general = { + gaps_in = "3"; + gaps_out = "8"; + border_size = "2"; + # + # the dot is a hyprland name, not nix syntax, so we escape it + "col.active_border" = "rgba(ca9ee6ff) rgba(f2d5cfff) 45deg"; + "col.inactive_border" = "rgba(b4befecc) rgba(6c7086cc) 45deg"; + layout = "dwindle"; + resize_on_border = "true"; + sensitivity = "0.5"; + }; + decoration = { + rounding = "10"; + drop_shadow = "false"; + dim_special = "0.3"; + blur = { + enabled = "yes"; + size = "6"; + passes = "3"; + new_optimizations = "on"; + ignore_opacity = "on"; + xray = "false"; + special = true; + }; + }; + }; + }; +} diff --git a/users/youwen/linux/hyprland/desktop/default.nix b/users/youwen/linux/hyprland/desktop/default.nix new file mode 100644 index 0000000..e73aa12 --- /dev/null +++ b/users/youwen/linux/hyprland/desktop/default.nix @@ -0,0 +1,3 @@ +{ + imports = [ ../common.nix ./desktop-only.nix ]; +} diff --git a/users/youwen/linux/hyprland/desktop/desktop-only.nix b/users/youwen/linux/hyprland/desktop/desktop-only.nix new file mode 100644 index 0000000..ffcd441 --- /dev/null +++ b/users/youwen/linux/hyprland/desktop/desktop-only.nix @@ -0,0 +1 @@ +{ } diff --git a/users/youwen/linux/hyprland/laptop/default.nix b/users/youwen/linux/hyprland/laptop/default.nix new file mode 100644 index 0000000..2cf459b --- /dev/null +++ b/users/youwen/linux/hyprland/laptop/default.nix @@ -0,0 +1,3 @@ +{ + imports = [ ../common.nix ./laptop-only.nix ]; +} diff --git a/users/youwen/linux/hyprland/laptop/laptop-only.nix b/users/youwen/linux/hyprland/laptop/laptop-only.nix new file mode 100644 index 0000000..ffcd441 --- /dev/null +++ b/users/youwen/linux/hyprland/laptop/laptop-only.nix @@ -0,0 +1 @@ +{ } diff --git a/users/youwen/linux/laptop/default.nix b/users/youwen/linux/laptop/default.nix new file mode 100644 index 0000000..0213217 --- /dev/null +++ b/users/youwen/linux/laptop/default.nix @@ -0,0 +1,4 @@ +{ + imports = [ ../theming ../home.nix ../programs ../hyprland/laptop ../common-desktop-environment.nix ]; +} + diff --git a/users/youwen/linux/packages/aarch-64/default.nix b/users/youwen/linux/packages/aarch-64/default.nix new file mode 100644 index 0000000..3d4450b --- /dev/null +++ b/users/youwen/linux/packages/aarch-64/default.nix @@ -0,0 +1,3 @@ +{ pkgs, ... }: +let createCommon = import ../common-packages.nix; +in { home.packages = ((createCommon pkgs) ++ [ ]); } diff --git a/users/youwen/linux/packages/common-packages.nix b/users/youwen/linux/packages/common-packages.nix new file mode 100644 index 0000000..909218b --- /dev/null +++ b/users/youwen/linux/packages/common-packages.nix @@ -0,0 +1,49 @@ +pkgs: with pkgs; [ + neofetch + + # archives + zip + xz + unzip + p7zip + + # utils + nurl # helps fetch git data for nixpkgs + + # nix related + # + # it provides the command `nom` works just like `nix` + # with more details log output + nix-output-monitor + + # system tools + pciutils # lspci + usbutils # lsusb + + # desktop utils + wl-clipboard + grim + slurp + swappy + pavucontrol + swww + waypaper + + # desktop apps + dolphin + thunderbird + vesktop + signal-desktop + + # dev tools + nodePackages_latest.pnpm + rustfmt + rust-analyzer + + # desktop ricing + bibata-cursors + libsForQt5.qtstyleplugin-kvantum + libsForQt5.qt5ct + papirus-icon-theme + libsForQt5.qt5ct +] diff --git a/users/youwen/linux/packages/x86_64/default.nix b/users/youwen/linux/packages/x86_64/default.nix new file mode 100644 index 0000000..0b5a666 --- /dev/null +++ b/users/youwen/linux/packages/x86_64/default.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: +let createCommon = import ../common-packages.nix; +in { home.packages = ((createCommon pkgs) ++ with pkgs; [ + spotify + bitwarden-desktop + modrinth-app + lutris + wine +]); +} diff --git a/users/youwen/linux/programs.nix b/users/youwen/linux/programs/default.nix old mode 100755 new mode 100644 similarity index 100% rename from users/youwen/linux/programs.nix rename to users/youwen/linux/programs/default.nix diff --git a/users/youwen/linux/catppuccin.nix b/users/youwen/linux/theming/catppuccin.nix similarity index 100% rename from users/youwen/linux/catppuccin.nix rename to users/youwen/linux/theming/catppuccin.nix diff --git a/users/youwen/linux/theming/default.nix b/users/youwen/linux/theming/default.nix new file mode 100644 index 0000000..5b4c81d --- /dev/null +++ b/users/youwen/linux/theming/default.nix @@ -0,0 +1,31 @@ +{ pkgs, ... }: +{ + imports = [ ./catppuccin.nix ]; + + gtk = { + enable = true; + catppuccin.enable = true; + cursorTheme = { + name = "Bibata-Modern-Ice"; + size = 26; + }; + iconTheme = { name = "Papirus-Dark"; }; + }; + + qt = { + enable = true; + platformTheme.name = "qtct"; + style.name = "kvantum"; + }; + + xdg.configFile = { + "Kvantum/kvantum.kvconfig".text = '' + [General] + theme=GraphiteNordDark + ''; + + "Kvantum/GraphiteNord".source = + "${pkgs.graphite-kde-theme}/share/Kvantum/GraphiteNord"; + }; + +} diff --git a/users/youwen/linux/waybar/default.nix b/users/youwen/linux/waybar/default.nix new file mode 100644 index 0000000..4eaad5c --- /dev/null +++ b/users/youwen/linux/waybar/default.nix @@ -0,0 +1,3 @@ +{ + programs.waybar = import ./waybar-conf.nix; +}