diff --git a/flake.lock b/flake.lock index 666ac71..953b233 100644 --- a/flake.lock +++ b/flake.lock @@ -19,6 +19,39 @@ "type": "github" } }, + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772292445, + "narHash": "sha256-4F1Q7U313TKUDDovCC96m/Za4wZcJ3yqtu4eSrj8lk8=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "1dbbba659c1cef0b0202ce92cadfe13bae550e8f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -100,6 +133,22 @@ "type": "github" } }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" @@ -176,6 +225,28 @@ "type": "github" } }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -196,6 +267,327 @@ "type": "github" } }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1770511807, + "narHash": "sha256-suKmSbSk34uPOJDTg/GbPrKEJutzK08vj0VoTvAFBCA=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "7c75487edd43a71b61adb01cae8326d277aab683", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "hyprwire": "hyprwire", + "nixpkgs": [ + "nixpkgs-unstable" + ], + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1773082851, + "narHash": "sha256-xeeeJ1gt4SoskgHW67PVX5p7cDlZFSyX5n4eUSPjxT8=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "e32eeb1d454b029a24ca71f410896bf52839085d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-guiutils": { + "inputs": { + "aquamarine": [ + "hyprland", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1767023960, + "narHash": "sha256-R2HgtVS1G3KSIKAQ77aOZ+Q0HituOmPgXW9nBNkpp3Q=", + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "rev": "c2e906261142f5dd1ee0bfc44abba23e2754c660", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1765214753, + "narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1771866172, + "narHash": "sha256-fYFoXhQLrm1rD8vSFKQBOEX4OGCuJdLt1amKfHd5GAw=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "0b219224910e7642eb0ed49f0db5ec3d008e3e41", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprtoolkit": { + "inputs": { + "aquamarine": [ + "hyprland", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprland-guiutils", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-guiutils", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprland-guiutils", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "hyprland-guiutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-guiutils", + "systems" + ] + }, + "locked": { + "lastModified": 1764592794, + "narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=", + "owner": "hyprwm", + "repo": "hyprtoolkit", + "rev": "5cfe0743f0e608e1462972303778d8a0859ee63e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprtoolkit", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1771271487, + "narHash": "sha256-41gEiUS0Pyw3L/ge1l8MXn61cK14VAhgWB/JV8s/oNI=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "340a792e3b3d482c4ae5f66d27a9096bdee6d76d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1770501770, + "narHash": "sha256-NWRM6+YxTRv+bT9yvlhhJ2iLae1B1pNH3mAL5wi2rlQ=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "0bd8b6cde9ec27d48aad9e5b4deefb3746909d40", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "hyprwire": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1771606233, + "narHash": "sha256-F3PLUqQ/TwgR70U+UeOqJnihJZ2EuunzojYC4g5xHr0=", + "owner": "hyprwm", + "repo": "hyprwire", + "rev": "06c7f1f8c4194786c8400653c4efc49dc14c0f3a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwire", + "type": "github" + } + }, "niri": { "inputs": { "niri-stable": "niri-stable", @@ -264,7 +656,7 @@ "inputs": { "cachyos-kernel": "cachyos-kernel", "cachyos-kernel-patches": "cachyos-kernel-patches", - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "flake-parts": "flake-parts", "nixpkgs": "nixpkgs_2" }, @@ -368,7 +760,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems" + "systems": "systems_2" }, "locked": { "lastModified": 1772402258, @@ -464,11 +856,58 @@ "type": "gitlab" } }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772361940, + "narHash": "sha256-B1Cz+ydL1iaOnGlwOFld/C8lBECPtzhiy/pP93/CuyY=", + "owner": "nix-community", + "repo": "plasma-manager", + "rev": "a4b33606111c9c5dcd10009042bb710307174f51", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "plasma-manager", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1772024342, + "narHash": "sha256-+eXlIc4/7dE6EcPs9a2DaSY3fTA9AE526hGqkNID3Wg=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "6e34e97ed9788b17796ee43ccdbaf871a5c2b476", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "apple-silicon": "apple-silicon", "base16": "base16", "home-manager": "home-manager", + "hyprland": "hyprland", "niri": "niri", "niri-blur": "niri-blur", "nix-cachyos-kernel": "nix-cachyos-kernel", @@ -481,10 +920,26 @@ "noctalia": "noctalia", "nur": "nur", "openmw": "openmw", + "plasma-manager": "plasma-manager", "tt-schemes": "tt-schemes" } }, "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_2": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -516,6 +971,47 @@ "type": "github" } }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1761431178, + "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + }, "xwayland-satellite-stable": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index e7d4f3b..43c12fd 100644 --- a/flake.nix +++ b/flake.nix @@ -22,6 +22,12 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + plasma-manager = { + url = "github:nix-community/plasma-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; + niri = { url = "github:sckova/niri-flake/feat/blur"; inputs.nixpkgs.follows = "nixpkgs-unstable"; @@ -34,6 +40,11 @@ flake = false; }; + hyprland = { + url = "github:hyprwm/Hyprland"; + inputs.nixpkgs.follows = "nixpkgs-unstable"; + }; + noctalia = { url = "github:noctalia-dev/noctalia-shell"; inputs.nixpkgs.follows = "nixpkgs"; @@ -64,7 +75,9 @@ base16, tt-schemes, home-manager, + plasma-manager, niri, + hyprland, noctalia, nur, nixvim, @@ -108,6 +121,7 @@ config = pkgConfig; overlays = [ niri.overlays.niri + hyprland.overlays.default noctalia.overlays.default nur.overlays.default (final: prev: { @@ -192,6 +206,7 @@ ./home/apps ./home/games ./home/hosts/${hostname} + # ./home/kde ./home/services ./home/terminal ./home/tiling @@ -205,6 +220,7 @@ scheme = "${tt-schemes}/base24/${config.colors.scheme}.yaml"; } ) + plasma-manager.homeModules.plasma-manager noctalia.homeModules.default nixvim.homeModules.nixvim ]; @@ -241,6 +257,7 @@ ./home ./home/hosts/${hostname}.nix home-manager.homeModules.home-manager + plasma-manager.homeModules.plasma-manager niri.homeModules.default noctalia.homeModules.noctalia nixvim.homeModules.nixvim diff --git a/home/apps/firefox.nix b/home/apps/firefox.nix index 38250db..368894f 100644 --- a/home/apps/firefox.nix +++ b/home/apps/firefox.nix @@ -104,6 +104,7 @@ "uBlock0@raymondhill.net".installation_mode = "allowed"; "gdpr@cavi.au.dk".installation_mode = "allowed"; "{5cce4ab5-3d47-41b9-af5e-8203eea05245}".installation_mode = "allowed"; + "plasma-browser-integration@kde.org".installation_mode = "allowed"; "jid1-MnnxcxisBPnSXQ@jetpack".installation_mode = "allowed"; "firefoxpwa@filips.si".installation_mode = "allowed"; "sponsorBlocker@ajay.app".installation_mode = "allowed"; @@ -141,6 +142,7 @@ force = true; packages = with pkgs.nur.repos.rycee.firefox-addons; [ ublock-origin + plasma-integration stylus violentmonkey consent-o-matic @@ -226,6 +228,7 @@ "jid1-mnnxcxisbpnsxq_jetpack-browser-action" "gdpr_cavi_au_dk-browser-action" "firefoxpwa_filips_si-browser-action" + "plasma-browser-integration_kde_org-browser-action" "canvasblocker_kkapsner_de-browser-action" "_5cce4ab5-3d47-41b9-af5e-8203eea05245_-browser-action" "_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action" @@ -249,6 +252,7 @@ seen = [ "gdpr_cavi_au_dk-browser-action" "firefoxpwa_filips_si-browser-action" + "plasma-browser-integration_kde_org-browser-action" "jid1-mnnxcxisbpnsxq_jetpack-browser-action" "canvasblocker_kkapsner_de-browser-action" "_5cce4ab5-3d47-41b9-af5e-8203eea05245_-browser-action" diff --git a/home/hosts/peach/default.nix b/home/hosts/peach/default.nix index 9820702..dee4f54 100644 --- a/home/hosts/peach/default.nix +++ b/home/hosts/peach/default.nix @@ -36,5 +36,25 @@ y = 1440; }; }; + + plasma = lib.mkDefault { + input.touchpads = [ + { + name = "Apple MTP multi-touch"; + vendorId = "05ac"; + productId = "0352"; + disableWhileTyping = false; + enable = true; + tapToClick = false; + naturalScroll = true; + accelerationProfile = "default"; + } + ]; + + shortcuts = { + # this is really annoying on apple laptops + org_kde_powerdevil.Sleep = [ ]; + }; + }; }; } diff --git a/home/hosts/vm-generic/default.nix b/home/hosts/vm-generic/default.nix index 6572e4a..e5488aa 100644 --- a/home/hosts/vm-generic/default.nix +++ b/home/hosts/vm-generic/default.nix @@ -8,4 +8,101 @@ scheme = "catppuccin-mocha"; accent = "base0B"; }; + + home.packages = with pkgs; [ ]; + + programs.plasma = { + panels = [ + # Application name, Global menu and Song information and playback controls at the top + { + location = "top"; + height = 37; + floating = false; + widgets = [ + { + applicationTitleBar = { + behavior = { + activeTaskSource = "activeTask"; + }; + layout = { + elements = [ "windowTitle" ]; + horizontalAlignment = "right"; + showDisabledElements = "deactivated"; + verticalAlignment = "center"; + }; + overrideForMaximized.enable = false; + windowTitle = { + font = { + bold = false; + fit = "fixedSize"; + size = 10; + }; + hideEmptyTitle = true; + margins = { + bottom = 5; + left = 10; + right = 0; + top = 5; + }; + source = "appName"; + }; + }; + } + "org.kde.plasma.appmenu" + "org.kde.plasma.panelspacer" + { + plasmusicToolbar = { + panelIcon = { + albumCover = { + useAsIcon = false; + radius = 8; + }; + icon = ""; + }; + playbackSource = "auto"; + musicControls.showPlaybackControls = false; + songText = { + displayInSeparateLines = true; + maximumWidth = 320; + scrolling = { + behavior = "alwaysScroll"; + speed = 3; + }; + }; + }; + } + "org.kde.plasma.marginsseparator" + { + systemTray.items = { + shown = [ + "org.kde.plasma.battery" + "org.kde.plasma.bluetooth" + "org.kde.plasma.networkmanagement" + "org.kde.plasma.brightness" + "org.kde.plasma.volume" + ]; + hidden = [ + "org.kde.plasma.clipboard" + "org.kde.plasma.manage-inputmethod" + "org.kde.plasma.cameraindicator" + "org.kde.plasma.keyboardlayout" + "org.kde.plasma.devicenotifier" + "org.kde.plasma.notifications" + "org.kde.plasma.weather" + "org.kde.plasma.printmanager" + "org.kde.plasma.keyboardindicator" + "org.kde.plasma.mediacontroller" + ]; + }; + } + { + digitalClock = { + calendar.firstDayOfWeek = "sunday"; + time.format = "12h"; + }; + } + ]; + } + ]; + }; } diff --git a/home/kde/default.nix b/home/kde/default.nix new file mode 100644 index 0000000..59153a0 --- /dev/null +++ b/home/kde/default.nix @@ -0,0 +1,225 @@ +{ + config, + pkgs, + lib, + ... +}: +{ + programs.ghostwriter = { + enable = true; + font = { + family = config.userOptions.fontSans.name; + pointSize = config.userOptions.fontSans.size; + }; + }; + + programs.kate = { + enable = true; + editor = { + font = { + family = config.userOptions.fontMono.name; + pointSize = config.userOptions.fontMono.size; + }; + }; + }; + + programs.plasma = lib.mkDefault { + enable = true; + session = { + sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession"; + }; + + workspace = { + wallpaperPictureOfTheDay.provider = "bing"; + wallpaperFillMode = "preserveAspectCrop"; + }; + + kscreenlocker = { + appearance.wallpaperPictureOfTheDay.provider = "bing"; + }; + + window-rules = [ + { + description = "Global Changes"; + match = { + window-class = { + value = ""; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + opacityactive = { + value = 100; + apply = "force"; + }; + opacityinactive = { + value = 100; + apply = "force"; + }; + }; + } + { + description = "OpenMW"; + match = { + window-class = { + value = "openmw"; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + noborder = { + value = true; + apply = "force"; + }; + maximizehoriz = { + value = true; + apply = "force"; + }; + maximizevert = { + value = true; + apply = "force"; + }; + desktops = { + value = "Desktop_4"; + apply = "force"; + }; + }; + } + { + description = "Minecraft"; + match = { + window-class = { + value = "Minecraft*"; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + noborder = { + value = true; + apply = "initially"; + }; + maximizehoriz = { + value = true; + apply = "initially"; + }; + maximizevert = { + value = true; + apply = "initially"; + }; + desktops = { + value = "Desktop_4"; + apply = "initially"; + }; + }; + } + { + description = "Picture-in-Picture"; + match = { + window-class = { + value = ""; + type = "substring"; + }; + title = { + value = "(?i)picture[- ]in[- ]picture"; + type = "regex"; + }; + }; + apply = { + above = { + value = true; + apply = "force"; + }; + desktops = { + value = "\\0"; + apply = "force"; + }; + }; + } + { + description = "Steam (Distrobox)"; + match = { + window-class = { + value = "steamwebhelper"; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + desktopfile = { + value = "distrobox-steam"; + apply = "force"; + }; + }; + } + ]; + + kwin = { + nightLight = { + enable = true; + mode = "location"; + # Atlanta + location.latitude = "33.7501"; + location.longitude = "-84.3885"; + temperature.day = 6000; + temperature.night = 3500; + transitionTime = 60; + }; + virtualDesktops = { + names = [ + "1" + "2" + "3" + "4" + ]; + rows = 1; + }; + effects = { + # desktopSwitching = { + # animation = "slide"; + # navigationWrapping = true; + # }; + minimization = { + animation = "magiclamp"; + duration = 500; + }; + shakeCursor.enable = true; + snapHelper.enable = true; + }; + }; + + configFile = { + # KDE has an automatic light-dark that CURRENTLY + # isn't supported by plasma-manager. + # kdeglobals.KDE.AutomaticLookAndFeel = true; + # DefaultDarkLookAndFeel = "Catppuccin-Flavor-Accent"; + # DefaultLightLookAndFeel = "Catppuccin-Flavor-Accent"; + kwinrc.Round-Corners.ActiveOutlinePalette = 2; + kwinrc.Round-Corners.ActiveOutlineUseCustom = false; + kwinrc.Round-Corners.ActiveOutlineUsePalette = true; + kwinrc.Round-Corners.ActiveSecondOutlinePalette = 2; + kwinrc.Round-Corners.ActiveSecondOutlineUseCustom = false; + kwinrc.Round-Corners.ActiveSecondOutlineUsePalette = true; + kwinrc.Round-Corners.InactiveOutlinePalette = 3; + kwinrc.Round-Corners.InactiveOutlineUseCustom = false; + kwinrc.Round-Corners.InactiveOutlineUsePalette = true; + kwinrc.Round-Corners.InactiveSecondOutlinePalette = 3; + kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false; + kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true; + plasmaparc.General.AudioFeedback = false; + kdeglobals.Sounds.Enable = false; + kwinrc.Plugins.forceblurEnabled = false; + kwinrc.Effect-blurplus.BlurDecorations = true; + kwinrc.Effect-blurplus.BlurMatching = false; + kwinrc.Effect-blurplus.BlurMenus = true; + kwinrc.Effect-blurplus.BlurNonMatching = true; + kwinrc.Effect-blurplus.TopCornerRadius = 10; + kwinrc.Effect-blurplus.BottomCornerRadius = 10; + kwinrc.Effect-blurplus.NoiseStrength = 6; + kwinrc.Effect-blurplus.RefractionStrength = 10; + ksplashrc.KSplash.Engine = "KSplashQML"; + }; + }; +} diff --git a/home/services/default.nix b/home/services/default.nix index d3e47b8..ed05a05 100644 --- a/home/services/default.nix +++ b/home/services/default.nix @@ -11,8 +11,10 @@ ]; home.packages = with pkgs; [ + # kde and kde theming adwaita-icon-theme morewaita-icon-theme + # kde-rounded-corners ]; home.file = { diff --git a/home/terminal/fish.nix b/home/terminal/fish.nix index 733a01c..494b516 100644 --- a/home/terminal/fish.nix +++ b/home/terminal/fish.nix @@ -32,6 +32,10 @@ description = "Wrapper for nix-shell that runs fish by default"; body = builtins.readFile ./fish_functions/nix-shell.fish; }; + logout = { + description = "Log out of KDE Plasma"; + body = builtins.readFile ./fish_functions/logout.fish; + }; }; }; diff --git a/home/terminal/fish_functions/logout.fish b/home/terminal/fish_functions/logout.fish new file mode 100644 index 0000000..9dcc3e0 --- /dev/null +++ b/home/terminal/fish_functions/logout.fish @@ -0,0 +1,5 @@ +if status is-login + builtin exit +else + /run/current-system/sw/bin/qdbus org.kde.Shutdown /Shutdown org.kde.Shutdown.logout +end diff --git a/home/tiling/default.nix b/home/tiling/default.nix index 5e127c3..91ec144 100644 --- a/home/tiling/default.nix +++ b/home/tiling/default.nix @@ -1,6 +1,7 @@ { pkgs, config, ... }: { imports = [ + # ./hyprland.nix ./niri.nix ./noctalia.nix ./wallpaper.nix diff --git a/home/tiling/hyprland.nix b/home/tiling/hyprland.nix new file mode 100644 index 0000000..1788ab3 --- /dev/null +++ b/home/tiling/hyprland.nix @@ -0,0 +1,299 @@ +{ + config, + ... +}: +{ + wayland.windowManager.hyprland = with config.scheme; { + enable = true; + + settings = { + # ----------------------------------------------------- + # Environment Variables & Debug + # ----------------------------------------------------- + env = [ + "QT_QPA_PLATFORM,wayland" + "QT_QPA_PLATFORMTHEME,qt6ct" + "DISPLAY,:0" + "XCURSOR_THEME,${config.userOptions.cursor.name}" + "XCURSOR_SIZE,${toString config.userOptions.cursor.size}" + ]; + + debug = { + disable_scale_checks = true; + }; + + # ----------------------------------------------------- + # Monitors (Outputs) + # ----------------------------------------------------- + monitor = [ + "eDP-1, 3024x1964@120.000, 0x0, 1.5" + "HDMI-A-1, 3840x2160@144.000, 0x0, 1.5" + "DP-1, 3840x2160@143.999, 0x0, 1.5" + ]; + + # ----------------------------------------------------- + # Autostart + # ----------------------------------------------------- + exec-once = [ ]; # systemd is based sorry + + # ----------------------------------------------------- + # Input + # ----------------------------------------------------- + input = { + kb_layout = "us"; + numlock_by_default = false; + repeat_delay = 600; + repeat_rate = 25; + + follow_mouse = 1; + + touchpad = { + natural_scroll = true; + tap-to-click = false; + drag_lock = false; + }; + }; + + device = [ + { + name = "epic-mouse-v1"; + accel_profile = "adaptive"; + natural_scroll = false; + } + ]; + + # ----------------------------------------------------- + # General & Layout + # ----------------------------------------------------- + general = { + gaps_in = 2; + gaps_out = 4; + border_size = 2; + + "col.active_border" = "rgba(${config.scheme.${config.colors.accent}}E6)"; + "col.inactive_border" = "rgba(${base01}E6)"; + + layout = "dwindle"; + }; + + scrolling = { + column_width = 0.5; + follow_focus = true; + explicit_column_widths = "0.333,0.5,0.667"; + direction = "right"; + }; + + # ----------------------------------------------------- + # Decoration (0.54 Syntax) + # ----------------------------------------------------- + decoration = { + rounding = 8; + + active_opacity = 0.90; + inactive_opacity = 0.90; + fullscreen_opacity = 1.0; + + blur = { + enabled = true; + size = 3; + passes = 2; + noise = 0.05; + contrast = 1.0; + }; + + # Shadows now live in their own dedicated block + shadow = { + enabled = true; + range = 10; + render_power = 3; + color = "rgba(${base11}BF)"; + }; + }; + + # ----------------------------------------------------- + # Misc Settings + # ----------------------------------------------------- + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + }; + + # ----------------------------------------------------- + # Window Rules (0.54 Block Syntax) + # ----------------------------------------------------- + windowrule = [ + { + name = "games-openmw"; + "match:class" = "^(openmw)$"; + opacity = "1.0 1.0"; + maximize = "on"; + } + { + name = "games-minecraft"; + "match:class" = "^(Minecraft)$"; + opacity = "1.0 1.0"; + maximize = "on"; + } + { + name = "media-mpv"; + "match:class" = "^(mpv)$"; + opacity = "1.0 1.0"; + } + { + name = "media-pip"; + "match:class" = "^(firefox)$"; + "match:title" = "^(Picture-in-Picture)$"; + opacity = "1.0 1.0"; + float = "on"; + } + { + name = "terminal-fastfetch"; + "match:class" = "^(kitty)$"; + "match:title" = "^(fastfetch)$"; + float = "on"; + size = "960 480"; + center = "on"; + } + ]; + + # ----------------------------------------------------- + # Layer Rules (0.54 Block Syntax) + # ----------------------------------------------------- + layerrule = [ + { + name = "bar-blur"; + "match:namespace" = "^(noctalia-bar-content-.*)$"; + blur = "on"; + ignore_alpha = "0"; + } + { + name = "launcher-blur"; + "match:namespace" = "^(launcher)$"; + blur = "on"; + ignore_alpha = "0"; + } + ]; + + # ----------------------------------------------------- + # Keybindings + # ----------------------------------------------------- + "$mod" = "SUPER"; + + bind = [ + "$mod, T, exec, kitty" + "$mod SHIFT, T, exec, kitty --title fastfetch sh -c 'fastfetch; sleep 10'" + "$mod, Space, exec, fuzzel" + ", XF86Search, exec, fuzzel" + + "$mod, M, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ", XF86AudioPrev, exec, playerctl previous" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioNext, exec, playerctl next" + + "$mod, Q, killactive," + "$mod SHIFT, E, exit," + "CTRL ALT, Delete, exit," + "$mod, V, togglefloating," + "$mod SHIFT, F, fullscreen, 1" + "$mod CTRL SHIFT, F, fullscreen, 0" + "$mod, W, togglegroup," + + "$mod SHIFT, left, focusmonitor, l" + "$mod SHIFT, down, focusmonitor, d" + "$mod SHIFT, up, focusmonitor, u" + "$mod SHIFT, right, focusmonitor, r" + "$mod SHIFT, H, focusmonitor, l" + "$mod SHIFT, J, focusmonitor, d" + "$mod SHIFT, K, focusmonitor, u" + "$mod SHIFT, L, focusmonitor, r" + + "$mod SHIFT CTRL, left, movewindow, mon:l" + "$mod SHIFT CTRL, down, movewindow, mon:d" + "$mod SHIFT CTRL, up, movewindow, mon:u" + "$mod SHIFT CTRL, right, movewindow, mon:r" + + "$mod, Page_Down, workspace, e+1" + "$mod, Page_Up, workspace, e-1" + "$mod, U, workspace, e+1" + "$mod, I, workspace, e-1" + "$mod, mouse_down, workspace, e+1" + "$mod, mouse_up, workspace, e-1" + + "$mod CTRL, Page_Down, movetoworkspace, e+1" + "$mod CTRL, Page_Up, movetoworkspace, e-1" + "$mod CTRL, U, movetoworkspace, e+1" + "$mod CTRL, I, movetoworkspace, e-1" + + "$mod SHIFT, S, exec, grim -g \"$(slurp)\" ~/Pictures/Screenshots/$(date +'%%a %%b %%e %%Y @%%l:%%M %%p').png" + "CTRL SHIFT, S, exec, grim ~/Pictures/Screenshots/$(date +'%%a %%b %%e %%Y @%%l:%%M %%p').png" + + "$mod SHIFT, P, dpms, off" + ", XF86Sleep, dpms, off" + ] + ++ (builtins.concatLists ( + builtins.attrValues ( + builtins.mapAttrs + (key: dir: [ + "$mod, ${key}, movefocus, ${dir}" + "$mod CTRL, ${key}, movewindow, ${dir}" + ]) + { + left = "l"; + right = "r"; + up = "u"; + down = "d"; + H = "l"; + L = "r"; + K = "u"; + J = "d"; + } + ) + )) + ++ (builtins.concatLists ( + builtins.genList ( + x: + let + ws = + let + c = (x + 1) / 10; + in + builtins.toString (x + 1 - (c * 10)); + in + [ + "$mod, ${ws}, workspace, ${ws}" + "$mod CTRL, ${ws}, movetoworkspace, ${ws}" + ] + ) 9 + )); + + binde = [ + ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+" + ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-" + "SHIFT, XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.01+" + "SHIFT, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.01-" + + ", MouseForward, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+" + ", MouseBack, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-" + "SHIFT, MouseForward, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.01+" + "SHIFT, MouseBack, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.01-" + + ", XF86MonBrightnessUp, exec, noctalia-shell ipc call brightness increase" + ", XF86MonBrightnessDown, exec, noctalia-shell ipc call brightness decrease" + "SHIFT, XF86MonBrightnessUp, exec, brightnessctl --class=backlight set +1%" + "SHIFT, XF86MonBrightnessDown, exec, brightnessctl --class=backlight set 1%-" + + "$mod, equal, resizeactive, 40 0" + "$mod, minus, resizeactive, -40 0" + "$mod SHIFT, equal, resizeactive, 0 40" + "$mod SHIFT, minus, resizeactive, 0 -40" + ]; + + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + }; + }; +} diff --git a/system/default.nix b/system/default.nix index 6567f0f..2734930 100755 --- a/system/default.nix +++ b/system/default.nix @@ -93,6 +93,12 @@ } ]; }; + # hyprland = { + # enable = true; + # package = pkgs.hyprland; + # portalPackage = pkgs.xdg-desktop-portal-hyprland; + # withUWSM = true; + # }; }; services = {