diff --git a/flake.lock b/flake.lock index 8dfe8a8..7fb24b0 100755 --- a/flake.lock +++ b/flake.lock @@ -52,11 +52,35 @@ "type": "github" } }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767662275, + "narHash": "sha256-d5Q1GmQ+sW1Bt8cgDE0vOihzLaswsm8cSdg8124EqXE=", + "owner": "nix-community", + "repo": "plasma-manager", + "rev": "51816be33a1ff0d4b22427de83222d5bfa96d30e", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "plasma-manager", + "type": "github" + } + }, "root": { "inputs": { "home-manager": "home-manager", "impermanence": "impermanence", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "plasma-manager": "plasma-manager" } } }, diff --git a/flake.nix b/flake.nix index ff4e681..12502b0 100755 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; impermanence.url = "github:nix-community/impermanence"; + plasma-manager = { + url = "github:nix-community/plasma-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; # nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.6.0"; }; @@ -21,6 +26,7 @@ nixpkgs, home-manager, impermanence, + plasma-manager, # nix-flatpak, }@inputs: let @@ -43,6 +49,7 @@ home-manager.useUserPackages = true; home-manager.users.laythe = import ./machines/homepc/home.nix; + home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager ]; } ]; }; @@ -58,7 +65,8 @@ home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.laythe = import ./machines/homepc/home.nix; + home-manager.users.laythe = import ./machines/workstation/home.nix; + home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager ]; } ]; }; diff --git a/machines/workstation/hardware-configuration.nix b/machines/workstation/hardware-configuration.nix index b6f2738..5b2d711 100755 --- a/machines/workstation/hardware-configuration.nix +++ b/machines/workstation/hardware-configuration.nix @@ -29,11 +29,11 @@ options = [ "compress=zstd" "subvol=root" ]; }; - fileSystems."/home" = { - device = "/dev/disk/by-label/BUTTER"; - fsType = "btrfs"; - options = [ "compress=zstd" "subvol=home" ]; - }; + # fileSystems."/home" = { + # device = "/dev/disk/by-label/BUTTER"; + # fsType = "btrfs"; + # options = [ "compress=zstd" "subvol=home" ]; + # }; fileSystems."/nix" = { # device = "/dev/disk/by-uuid/3c89fa92-1d43-4c48-b228-e2725fa70ee9"; diff --git a/machines/workstation/home.nix b/machines/workstation/home.nix index b9f3cc3..7428e0d 100755 --- a/machines/workstation/home.nix +++ b/machines/workstation/home.nix @@ -1,4 +1,11 @@ -{config, pkgs, lib, inputs, outputs, ...}: +{ + config, + pkgs, + lib, + inputs, + outputs, + ... +}: { # These both are probably always going to be the same, but I'll keep them local just in case:tm: home.username = "laythe"; @@ -6,9 +13,10 @@ imports = [ ../../home/default.nix + ../../modules/kde/home.nix ]; - home.stateVersion = "25.11"; + home.stateVersion = "24.11"; programs.home-manager.enable = true; } diff --git a/modules/kde/default.nix b/modules/kde/default.nix index 7499abd..b6eb566 100755 --- a/modules/kde/default.nix +++ b/modules/kde/default.nix @@ -12,4 +12,5 @@ kdePackages.kate # kdePackages.kdeconnect-kde ]; + services.automatic-timezoned.enable = true; } diff --git a/modules/kde/home.nix b/modules/kde/home.nix new file mode 100644 index 0000000..fdaf3ac --- /dev/null +++ b/modules/kde/home.nix @@ -0,0 +1,96 @@ +{ pkgs, ... }: +{ + progrmams.plasma = { + workspace = { + lookAndFeel = "org.kde.breezedark.desktop"; + }; + 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 = "monday"; + time.format = "12h"; + }; + } + { + systemTray.items = { + # We explicitly show bluetooth and battery + shown = [ + "org.kde.plasma.battery" + "org.kde.plasma.networkmanagement" + "org.kde.plasma.volume" + ]; + # And explicitly hide networkmanagement and volume + hidden = [ + # "org.kde.plasma.networkmanagement" + # "org.kde.plasma.volume" + "org.kde.plasma.bluetooth" + ]; + }; + } + ]; + hiding = "none"; + } + ]; + }; +}