diff --git a/flake.lock b/flake.lock index 75dc121..783f880 100644 --- a/flake.lock +++ b/flake.lock @@ -90,11 +90,11 @@ }, "crane": { "locked": { - "lastModified": 1750266157, - "narHash": "sha256-tL42YoNg9y30u7zAqtoGDNdTyXTi8EALDeCB13FtbQA=", + "lastModified": 1751562746, + "narHash": "sha256-smpugNIkmDeicNz301Ll1bD7nFOty97T79m4GUMUczA=", "owner": "ipetkov", "repo": "crane", - "rev": "e37c943371b73ed87faf33f7583860f81f1d5a48", + "rev": "aed2020fd3dc26e1e857d4107a5a67a33ab6c1fd", "type": "github" }, "original": { @@ -110,11 +110,11 @@ ] }, "locked": { - "lastModified": 1752113600, - "narHash": "sha256-7LYDxKxZgBQ8LZUuolAQ8UkIB+jb4A2UmiR+kzY9CLI=", + "lastModified": 1752541678, + "narHash": "sha256-dyhGzkld6jPqnT/UfGV2oqe7tYn7hppAqFvF3GZTyXY=", "owner": "nix-community", "repo": "disko", - "rev": "79264292b7e3482e5702932949de9cbb69fedf6d", + "rev": "2bf3421f7fed5c84d9392b62dcb9d76ef09796a7", "type": "github" }, "original": { @@ -179,11 +179,11 @@ ] }, "locked": { - "lastModified": 1749398372, - "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=", + "lastModified": 1751413152, + "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569", + "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", "type": "github" }, "original": { @@ -338,11 +338,11 @@ ] }, "locked": { - "lastModified": 1752246954, - "narHash": "sha256-c1Rq5Hc4WZLKj1RkmjLFCcX4QHBwrL+DIZNMEHno7DU=", + "lastModified": 1752603129, + "narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=", "owner": "nix-community", "repo": "home-manager", - "rev": "e90b28967cacc64de7fb8742314ed0d7d12f47c6", + "rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b", "type": "github" }, "original": { @@ -363,11 +363,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1751381593, - "narHash": "sha256-js1XwtJpYhvQrrTaVzViybpztkHJVZ63aXOlFAcTENM=", + "lastModified": 1752673703, + "narHash": "sha256-9Cc0YqL9ZUpaybJsrRJfXex91QlPmQNqpTLgw/KvJGA=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "f4eb75540307c2b33521322c04b7fea74e48a66f", + "rev": "5a776450d904b7ccd377c2a759703152b2553e98", "type": "github" }, "original": { @@ -421,11 +421,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1752078530, - "narHash": "sha256-TrRmlYdhWcadWvBpDjB9Xlry4uT4ZUIO46d+o5tjtCQ=", + "lastModified": 1752659960, + "narHash": "sha256-AP/Gds8b1hhU50prgLjYSv5qpy9D8E6Xre/r/gb3K8M=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "d231d92313192d4d0c78d6ef04167fed9dee87cf", + "rev": "8e3f7bbada0cf637d23de4200c6e1a5a157de9cc", "type": "github" }, "original": { @@ -454,11 +454,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1750791124, - "narHash": "sha256-F5iVU/hjoSHSSe0gllxm0PcAaseEtGNanYK5Ha3k2Tg=", + "lastModified": 1752656275, + "narHash": "sha256-tTRMyGxqHF5IkYcnvHbwCgRBRUBhvRapxtuUfrN/8Ic=", "owner": "YaLTeR", "repo": "niri", - "rev": "37458d94b288945f6cfbd3c5c233f634d59f246c", + "rev": "7b065f8618f63b7cf761ebe05a2cebd556113a6c", "type": "github" }, "original": { @@ -501,11 +501,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1752249803, - "narHash": "sha256-mTFVVMvxP2w8oWjYEQJyZOYMTF0ElSO0lqitvsWM89E=", + "lastModified": 1752681971, + "narHash": "sha256-ciJicjJDu9ajnAuUqGhTK57igsCF+ofCbdpmBbIj8u4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "41eb75c7167ba7d9e511158140c45e177e8dc173", + "rev": "ca573e60c6173cb20d6466b21cc2541d91abad90", "type": "github" }, "original": { @@ -517,11 +517,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1751943650, - "narHash": "sha256-7orTnNqkGGru8Je6Un6mq1T8YVVU/O5kyW4+f9C1mZQ=", + "lastModified": 1752436162, + "narHash": "sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "88983d4b665fb491861005137ce2b11a9f89f203", + "rev": "dfcd5b901dbab46c9c6e80b265648481aafb01f8", "type": "github" }, "original": { @@ -533,11 +533,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1751943650, - "narHash": "sha256-7orTnNqkGGru8Je6Un6mq1T8YVVU/O5kyW4+f9C1mZQ=", + "lastModified": 1752436162, + "narHash": "sha256-Kt1UIPi7kZqkSc5HVj6UY5YLHHEzPBkgpNUByuyxtlw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "88983d4b665fb491861005137ce2b11a9f89f203", + "rev": "dfcd5b901dbab46c9c6e80b265648481aafb01f8", "type": "github" }, "original": { @@ -549,11 +549,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1751984180, - "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", + "lastModified": 1752480373, + "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", + "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08", "type": "github" }, "original": { @@ -565,11 +565,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1751984180, - "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", + "lastModified": 1752480373, + "narHash": "sha256-JHQbm+OcGp32wAsXTE/FLYGNpb+4GLi5oTvCxwSoBOA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", + "rev": "62e0f05ede1da0d54515d4ea8ce9c733f12d9f08", "type": "github" }, "original": { @@ -585,11 +585,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1752248434, - "narHash": "sha256-ud6xU5FlZSdi9RSPNIt+NWdZ3MmFGfQj4VoC7AQF+I0=", + "lastModified": 1752681032, + "narHash": "sha256-fIg1Is15tmAfFTwY7hcrLPhYpwoSKg8to6Z7GHzDLsg=", "owner": "nix-community", "repo": "NUR", - "rev": "db699ccf4981f144e5200406f717a72e6751a0e2", + "rev": "94dad3767581f59690021eb4f459c457e3205eb6", "type": "github" }, "original": { @@ -634,11 +634,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1752180730, - "narHash": "sha256-aSmib/P5DWXrpOdwFOo+lxuupUlNTGUDsLVSxJwWfUg=", + "lastModified": 1752672660, + "narHash": "sha256-tuJDd2ZPvK+A1PmX0DdZgmxOHCePMkPNDCW+CMQGlic=", "owner": "notashelf", "repo": "nvf", - "rev": "8ea010d7e3bf00c2a1f24d52da88afaed87d96f5", + "rev": "08bbe925325f4a1fc6f888212963e5588d8ed4eb", "type": "github" }, "original": { @@ -647,6 +647,29 @@ "type": "github" } }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1748196248, + "narHash": "sha256-1iHjsH6/5UOerJEoZKE+Gx1BgAoge/YcnUsOA4wQ/BU=", + "owner": "nix-community", + "repo": "plasma-manager", + "rev": "b7697abe89967839b273a863a3805345ea54ab56", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "plasma-manager", + "type": "github" + } + }, "pre-commit-hooks-nix": { "inputs": { "flake-compat": [ @@ -687,6 +710,7 @@ "nixpkgs-stable": "nixpkgs-stable_2", "nur": "nur", "nvf": "nvf", + "plasma-manager": "plasma-manager", "satisfactory-server": "satisfactory-server", "stylix": "stylix" } @@ -699,11 +723,11 @@ ] }, "locked": { - "lastModified": 1751165203, - "narHash": "sha256-3QhlpAk2yn+ExwvRLtaixWsVW1q3OX3KXXe0l8VMLl4=", + "lastModified": 1751769931, + "narHash": "sha256-QR2Rp/41NkA5YxcpvZEKD1S2QE1Pb9U415aK8M/4tJc=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "90f547b90e73d3c6025e66c5b742d6db51c418c3", + "rev": "3ac4f630e375177ea8317e22f5c804156de177e8", "type": "github" }, "original": { @@ -775,11 +799,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1752250117, - "narHash": "sha256-zCPV1a8w9hRn5ukOQwaAggA3X5cMmVsZVBYo8wLfLuU=", + "lastModified": 1752673382, + "narHash": "sha256-GxyHdgZqn6LJVsN9H6kTwMAu703wVaoequXP7f14NJk=", "owner": "nix-community", "repo": "stylix", - "rev": "0da583a359fd911d5cbfd2c789424b888b777a4b", + "rev": "8c854fe383fda20e8befefc31ecf248988a40bcc", "type": "github" }, "original": { @@ -919,11 +943,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1751228685, - "narHash": "sha256-MENtauGBhJ+kDeFaawvWGXaFG3Il6qQzjaP0RmtfM0k=", + "lastModified": 1752338000, + "narHash": "sha256-Fxlp/yKtynug0jyuauAmvZU2SzHCfwlwWf85j+IvQ0U=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "557ebeb616e03d5e4a8049862bbbd1f02c6f020b", + "rev": "ba78881a68182ce338041846164cbfed0d70935c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 719f88c..1ff9f92 100644 --- a/flake.nix +++ b/flake.nix @@ -55,6 +55,12 @@ url = "github:sodiboo/niri-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; + + plasma-manager = { + url = "github:nix-community/plasma-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; }; outputs = @@ -137,6 +143,7 @@ modules = genericModules ++ [ inputs.disko.nixosModules.disko inputs.satisfactory-server.nixosModules.satisfactory + inputs.niri.nixosModules.niri ./hosts/biggerpi/configuration.nix ./modules/satisfactory-server.nix ]; @@ -156,6 +163,7 @@ inputs.nix-flatpak.homeManagerModules.nix-flatpak inputs.niri.homeModules.niri inputs.niri.homeModules.stylix + inputs.plasma-manager.homeManagerModules.plasma-manager ]; }; # set formatter, using nixfmt-tree here diff --git a/home-manager/home.nix b/home-manager/home.nix index 7eb571b..e8ee01b 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -22,6 +22,7 @@ ./zellij.nix ./obs-studio.nix ./packages.nix + ./plasma.nix ]; home.stateVersion = "24.05"; diff --git a/home-manager/niri.nix b/home-manager/niri.nix index b1e705e..85e85bd 100644 --- a/home-manager/niri.nix +++ b/home-manager/niri.nix @@ -1,6 +1,31 @@ {...}: { programs.niri = { enable = true; - + settings = { + outputs = { + "eDP-2" = { + position = { + x = 0; + y = 0; + }; + }; + # "lenovo-1" = { + # position = { + # x = -960; + # y = -1080; + # }; + # }; + # "lenovo-2" = { + # position = { + # x = 960; + # y = 1080; + # }; + # }; + }; + binds = { + "Mod+1".action.spawn = "alacritty"; + "Mod+1".hotkey-overlay.hidden = false; + }; + }; }; } diff --git a/home-manager/packages.nix b/home-manager/packages.nix index 6e1c4a2..447b211 100644 --- a/home-manager/packages.nix +++ b/home-manager/packages.nix @@ -14,7 +14,7 @@ stable.jetbrains.idea-community # IDE telegram-desktop # Telegram messenger client pavucontrol # Useful audio control GUI - stable.prismlauncher # Minecraft launcher + prismlauncher # Minecraft launcher bat # cat but with syntax highlighting bc # terminal calculator wget # download files @@ -27,7 +27,7 @@ unzip # lets you unzip files vlc # media player vial # gui for qmk stuff - qmk # qmk configurator + stable.qmk # qmk configurator wl-clipboard # command-line copy/paste lutris # game launcher tenacity # small DAW diff --git a/home-manager/plasma.nix b/home-manager/plasma.nix new file mode 100644 index 0000000..ca6b172 --- /dev/null +++ b/home-manager/plasma.nix @@ -0,0 +1,280 @@ +{ pkgs, ... }: +{ + programs.plasma = { + enable = true; + + hotkeys.commands."launch-konsole" = { + name = "Launch Konsole"; + key = "Meta+Alt+K"; + command = "konsole"; + }; + + fonts = { + general = { + family = "JetBrains Mono"; + pointSize = 12; + }; + }; + + desktop.widgets = [ + { + plasmusicToolbar = { + position = { + horizontal = 51; + vertical = 100; + }; + size = { + width = 250; + height = 250; + }; + }; + } + ]; + + panels = [ + # Windows-like panel at the bottom + { + location = "bottom"; + widgets = [ + # We can configure the widgets by adding the name and config + # attributes. For example to add the the kickoff widget and set the + # icon to "nix-snowflake-white" use the below configuration. This will + # add the "icon" key to the "General" group for the widget in + # ~/.config/plasma-org.kde.plasma.desktop-appletsrc. + { + name = "org.kde.plasma.kickoff"; + config = { + General = { + icon = "nix-snowflake-white"; + alphaSort = true; + }; + }; + } + # Or you can configure the widgets by adding the widget-specific options for it. + # See modules/widgets for supported widgets and options for these widgets. + # For example: + { + kickoff = { + sortAlphabetically = true; + icon = "nix-snowflake-white"; + }; + } + # Adding configuration to the widgets can also for example be used to + # pin apps to the task-manager, which this example illustrates by + # pinning dolphin and konsole to the task-manager by default with widget-specific options. + { + iconTasks = { + launchers = [ + "applications:org.kde.dolphin.desktop" + "applications:org.kde.konsole.desktop" + ]; + }; + } + # Or you can do it manually, for example: + { + name = "org.kde.plasma.icontasks"; + config = { + General = { + launchers = [ + "applications:org.kde.dolphin.desktop" + "applications:org.kde.konsole.desktop" + ]; + }; + }; + } + # If no configuration is needed, specifying only the name of the + # widget will add them with the default configuration. + "org.kde.plasma.marginsseparator" + # If you need configuration for your widget, instead of specifying the + # the keys and values directly using the config attribute as shown + # above, plasma-manager also provides some higher-level interfaces for + # configuring the widgets. See modules/widgets for supported widgets + # and options for these widgets. The widgets below shows two examples + # of usage, one where we add a digital clock, setting 12h time and + # first day of the week to Sunday and another adding a systray with + # some modifications in which entries to show. + { + digitalClock = { + calendar.firstDayOfWeek = "sunday"; + time.format = "12h"; + }; + } + { + systemTray.items = { + # We explicitly show bluetooth and battery + shown = [ + "org.kde.plasma.battery" + "org.kde.plasma.bluetooth" + ]; + # And explicitly hide networkmanagement and volume + hidden = [ + "org.kde.plasma.networkmanagement" + "org.kde.plasma.volume" + ]; + }; + } + ]; + hiding = "none"; + } + # Application name, Global menu and Song information and playback controls at the top + { + location = "top"; + height = 26; + widgets = [ + { + applicationTitleBar = { + behavior = { + activeTaskSource = "activeTask"; + }; + layout = { + elements = [ "windowTitle" ]; + horizontalAlignment = "left"; + showDisabledElements = "deactivated"; + verticalAlignment = "center"; + }; + overrideForMaximized.enable = false; + titleReplacements = [ + { + type = "regexp"; + originalTitle = "^Brave Web Browser$"; + newTitle = "Brave"; + } + { + type = "regexp"; + originalTitle = ''\\bDolphin\\b''; + newTitle = "File manager"; + } + ]; + windowTitle = { + font = { + bold = false; + fit = "fixedSize"; + size = 12; + }; + hideEmptyTitle = true; + margins = { + bottom = 0; + left = 10; + right = 5; + top = 0; + }; + source = "appName"; + }; + }; + } + "org.kde.plasma.appmenu" + "org.kde.plasma.panelspacer" + { + plasmusicToolbar = { + panelIcon = { + albumCover = { + useAsIcon = false; + radius = 8; + }; + icon = "view-media-track"; + }; + playbackSource = "auto"; + musicControls.showPlaybackControls = true; + songText = { + displayInSeparateLines = true; + maximumWidth = 640; + scrolling = { + behavior = "alwaysScroll"; + speed = 3; + }; + }; + }; + } + ]; + } + ]; + + window-rules = [ + { + description = "Dolphin"; + match = { + window-class = { + value = "dolphin"; + type = "substring"; + }; + window-types = [ "normal" ]; + }; + apply = { + noborder = { + value = true; + apply = "force"; + }; + # `apply` defaults to "apply-initially" + maximizehoriz = true; + maximizevert = true; + }; + } + ]; + + powerdevil = { + AC = { + powerButtonAction = "lockScreen"; + autoSuspend = { + action = "shutDown"; + idleTimeout = 1000; + }; + turnOffDisplay = { + idleTimeout = 1000; + idleTimeoutWhenLocked = "immediately"; + }; + }; + battery = { + powerButtonAction = "sleep"; + whenSleepingEnter = "standbyThenHibernate"; + }; + lowBattery = { + whenLaptopLidClosed = "hibernate"; + }; + }; + + kwin = { + edgeBarrier = 0; # Disables the edge-barriers introduced in plasma 6.1 + cornerBarrier = false; + + scripts.polonium.enable = true; + }; + + kscreenlocker = { + lockOnResume = true; + timeout = 10; + }; + + # + # Some mid-level settings: + # + shortcuts = { + ksmserver = { + "Lock Session" = [ + "Screensaver" + "Meta+Ctrl+Alt+L" + ]; + }; + + kwin = { + "Expose" = "Meta+,"; + "Switch Window Down" = "Meta+J"; + "Switch Window Left" = "Meta+H"; + "Switch Window Right" = "Meta+L"; + "Switch Window Up" = "Meta+K"; + }; + }; + + # + # Some low-level settings: + # + configFile = { + baloofilerc."Basic Settings"."Indexing-Enabled" = false; + kwinrc."org.kde.kdecoration2".ButtonsOnLeft = "SF"; + kwinrc.Desktops.Number = { + value = 8; + # Forces kde to not change this value (even through the settings app). + immutable = true; + }; + }; + }; +} diff --git a/home-manager/zellij.nix b/home-manager/zellij.nix index b8714c0..77af09c 100644 --- a/home-manager/zellij.nix +++ b/home-manager/zellij.nix @@ -2,7 +2,5 @@ { programs.zellij = { enable = true; - exitShellOnExit = true; - attachExistingSession = true; }; } diff --git a/hosts/gabbielaptop/configuration.nix b/hosts/gabbielaptop/configuration.nix index b088324..574dcd6 100644 --- a/hosts/gabbielaptop/configuration.nix +++ b/hosts/gabbielaptop/configuration.nix @@ -85,6 +85,12 @@ # Enable the Hyprland WM functionality for NixOS (xdg portals etc.) programs.hyprland.enable = true; + # Enable plasma 6 + services.desktopManager.plasma6.enable = true; + + # Enable niri + programs.niri.enable = true; + # Enable fwupd for BIOS updates services.fwupd.enable = true; diff --git a/modules/waydroid.nix b/modules/waydroid.nix index 00ff0d9..3e8838b 100644 --- a/modules/waydroid.nix +++ b/modules/waydroid.nix @@ -1,3 +1,5 @@ { - virtualisation.waydroid.enable = true; + virtualisation.waydroid = { + enable = true; + }; }