diff --git a/flake.lock b/flake.lock index d9afde7..4fc5b50 100644 --- a/flake.lock +++ b/flake.lock @@ -53,11 +53,35 @@ "type": "github" } }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712907244, + "narHash": "sha256-uLNzw3ZRWob9/FfOXUNhlzKNCPWNtWfF4QYoc3Hs1Fw=", + "owner": "pjones", + "repo": "plasma-manager", + "rev": "27014d611e79bba47d5ee12f5790baf121045506", + "type": "github" + }, + "original": { + "owner": "pjones", + "repo": "plasma-manager", + "type": "github" + } + }, "root": { "inputs": { "home-manager": "home-manager", "nixpkgs": "nixpkgs", - "nixpkgs-unstable": "nixpkgs-unstable" + "nixpkgs-unstable": "nixpkgs-unstable", + "plasma-manager": "plasma-manager" } } }, diff --git a/flake.nix b/flake.nix index b1ea611..0aba7e5 100644 --- a/flake.nix +++ b/flake.nix @@ -9,9 +9,14 @@ url = "github:nix-community/home-manager/release-23.11"; inputs.nixpkgs.follows = "nixpkgs"; }; + plasma-manager = { + url = "github:pjones/plasma-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; }; - outputs = { self, nixpkgs, nixpkgs-unstable, home-manager }@inputs : + outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, plasma-manager }@inputs : let system = "x86_64-linux"; overlay-unstable = final: prev: { @@ -30,7 +35,8 @@ home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.jonas = import ./home/jonas.home.nix; + home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager ]; + home-manager.users.jonas = import ./home/jonas/home.nix; } ]; }; @@ -44,7 +50,8 @@ home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.jonas = import ./home/jonas.home.nix; + home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager ]; + home-manager.users.jonas = import ./home/jonas/home.nix; } ]; }; diff --git a/home/jonas.home.nix b/home/jonas/home.nix similarity index 98% rename from home/jonas.home.nix rename to home/jonas/home.nix index 6c654a5..7fb2d6f 100644 --- a/home/jonas.home.nix +++ b/home/jonas/home.nix @@ -1,6 +1,9 @@ { config, pkgs, ... }: { + imports = [ + ./plasma.nix + ]; # Home Manager needs a bit of information about you and the paths it should # manage. diff --git a/home/jonas/plasma.nix b/home/jonas/plasma.nix new file mode 100644 index 0000000..81039d7 --- /dev/null +++ b/home/jonas/plasma.nix @@ -0,0 +1,89 @@ +{ pkgs, ... }: +{ + programs.plasma = { + enable = true; + + # + # Some high-level settings: + # + workspace = { + clickItemTo = "select"; + lookAndFeel = "org.kde.breezedark.desktop"; + cursorTheme = "Bibata-Modern-Ice"; + iconTheme = "Papirus-Dark"; + wallpaper = "${pkgs.libsForQt5.plasma-workspace-wallpapers}/share/wallpapers/Patak/contents/images/1080x1920.png"; + }; + + hotkeys.commands."launch-konsole" = { + name = "Launch Konsole"; + key = "Meta+Alt+K"; + command = "konsole"; + }; + + panels = [ + # Windows-like panel at the bottom + { + location = "bottom"; + widgets = [ + "org.kde.plasma.kickoff" + # We can also configure the widgets. For example if you want to pin + # konsole and dolphin to the task-launcher the following widget will + # have that. + { + name = "org.kde.plasma.icontasks"; + config = { + General.launchers = [ + "applications:org.kde.dolphin.desktop" + "applications:org.kde.konsole.desktop" + ]; + }; + } + "org.kde.plasma.marginsseperator" + "org.kde.plasma.systemtray" + "org.kde.plasma.digitalclock" + ]; + hiding = "autohide"; + } + # Global menu at the top + { + location = "top"; + height = 26; + widgets = [ + "org.kde.plasma.appmenu" + ]; + } + ]; + + + # + # 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".value = false; + "kwinrc"."org.kde.kdecoration2"."ButtonsOnLeft".value = "SF"; + "kwinrc"."Desktops"."Number" = { + value = 8; + # Forces kde to not change this value (even through the settings app). + immutable = true; + }; + }; + }; +} \ No newline at end of file diff --git a/hosts/comfy-station/configuration.nix b/hosts/comfy-station/configuration.nix index 2ea18a5..5fb6805 100644 --- a/hosts/comfy-station/configuration.nix +++ b/hosts/comfy-station/configuration.nix @@ -13,7 +13,13 @@ ../../modules/hardware/printing.nix ../../modules/hardware/sound.nix ../../modules/services/docker.nix + ../../modules/desktop/dm + ../../modules/desktop/de ]; + desktop.dm.name = "sddm"; + desktop.dm.autologin = "jonas"; + desktop.de.plasma.enable = true; + nix.settings.experimental-features = [ "nix-command" "flakes" ];