plasma-manager and other changes

This commit is contained in:
Sean Kovacs 2025-11-06 12:33:16 -05:00
commit e0cbd257c4
Signed by: sckova
GPG key ID: 00F325187C68651A
8 changed files with 358 additions and 46 deletions

26
flake.lock generated
View file

@ -92,12 +92,36 @@
"type": "github" "type": "github"
} }
}, },
"plasma-manager": {
"inputs": {
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1762274591,
"narHash": "sha256-Vbhluvk15qwiyNDyPd9tjJh9gxIfUjbKVT79c05Pd3I=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "6296d7100cc84b2ff732b7c103a50c2856974cf6",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "plasma-manager",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"apple-silicon": "apple-silicon", "apple-silicon": "apple-silicon",
"catppuccin": "catppuccin", "catppuccin": "catppuccin",
"home-manager": "home-manager", "home-manager": "home-manager",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs",
"plasma-manager": "plasma-manager"
} }
} }
}, },

View file

@ -14,62 +14,97 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
apple-silicon = { apple-silicon = {
url = "github:nix-community/nixos-apple-silicon"; url = "github:nix-community/nixos-apple-silicon";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = { nixpkgs, catppuccin, home-manager, apple-silicon, ... }: outputs =
{
nixpkgs,
catppuccin,
home-manager,
plasma-manager,
apple-silicon,
...
}:
let let
mkNixosSystem = { name, system, hostModule, extraModules ? [] }: mkNixosSystem =
{
hostname,
system,
extraModules ? [ ],
}:
nixpkgs.lib.nixosSystem { nixpkgs.lib.nixosSystem {
inherit system; inherit system;
specialArgs = { inherit catppuccin; }; specialArgs = { inherit catppuccin; };
modules = [ modules = [
./hosts/all.nix ./hosts/all.nix
hostModule ./hosts/${hostname}.nix
./hardware/${hostname}.nix
catppuccin.nixosModules.catppuccin catppuccin.nixosModules.catppuccin
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
] ++ extraModules; {
home-manager.sharedModules = [ plasma-manager.homeModules.plasma-manager ];
}
]
++ extraModules;
}; };
mkHomeConfig = { user, system }: mkHomeConfig =
{
user,
hostname,
system,
}:
home-manager.lib.homeManagerConfiguration { home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs { inherit system; }; pkgs = import nixpkgs { inherit system; };
home.username = user;
home.homeDirectory = "/home/${user}";
modules = [ modules = [
./home/all.nix ./home/all.nix
./home/${hostname}.nix
catppuccin.homeModules.catppuccin catppuccin.homeModules.catppuccin
home-manager.homeModules.home-manager
plasma-manager.homeModules.plasma-manager
]; ];
}; };
in in
{ {
nixosConfigurations = { nixosConfigurations = {
peach = mkNixosSystem { peach = mkNixosSystem {
name = "peach"; hostname = "peach";
system = "aarch64-linux"; system = "aarch64-linux";
hostModule = ./hosts/peach.nix;
extraModules = [ extraModules = [
./hardware/peach.nix
apple-silicon.nixosModules.default apple-silicon.nixosModules.default
{ nixpkgs.overlays = [ apple-silicon.overlays.apple-silicon-overlay ]; } { nixpkgs.overlays = [ apple-silicon.overlays.apple-silicon-overlay ]; }
]; ];
}; };
alien = mkNixosSystem { alien = mkNixosSystem {
name = "alien"; hostname = "alien";
system = "x86_64-linux"; system = "x86_64-linux";
hostModule = ./hosts/alien.nix;
extraModules = [
./hardware/alien.nix
];
}; };
}; };
homeConfigurations = { homeConfigurations = {
peach = mkHomeConfig { user = "sckova"; system = "aarch64-linux"; }; peach = mkHomeConfig {
alien = mkHomeConfig { user = "sckova"; system = "x86_64-linux"; }; user = "sckova";
hostname = "peach";
system = "aarch64-linux";
};
alien = mkHomeConfig {
user = "sckova";
hostname = "alien";
system = "x86_64-linux";
};
}; };
}; };
} }

23
home/alien.nix Normal file
View file

@ -0,0 +1,23 @@
{ config, pkgs, ... }:
{
catppuccin = {
accent = "mocha";
flavor = "blue";
};
programs.plasma = {
workspace = {
# lookAndFeel = "Catppuccin-Mocha-Blue";
colorScheme = "CatppuccinMochaBlue";
cursor.theme = "catppuccin-mocha-blue-cursors";
splashScreen.theme = "Catpppuccin-Mocha-Blue";
};
configFile = {
kdeglobals.KDE = {
DefaultDarkLookAndFeel = "Catppuccin-Mocha-Blue";
DefaultLightLookAndFeel = "Catppuccin-Latte-Blue";
};
};
}

View file

@ -1,11 +1,6 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
# Home Manager needs a bit of information about you and the
# paths it should manage.
home.username = "sckova";
home.homeDirectory = "/home/sckova";
home.packages = with pkgs; [ home.packages = with pkgs; [
vesktop vesktop
fish fish
@ -24,19 +19,137 @@
fzf fzf
wl-clipboard wl-clipboard
openmw openmw
nixfmt-rfc-style
kde-rounded-corners kde-rounded-corners
kdePackages.partitionmanager kdePackages.partitionmanager
colloid-icon-theme
(catppuccin-kde.override {
flavour = [
"latte"
"mocha"
];
accents = [
"peach"
"blue"
];
})
]; ];
catppuccin = { catppuccin = {
enable = true; enable = true;
flavor = "mocha"; cursors = {
enable = true;
accent = "dark";
};
firefox = { firefox = {
force = true; force = true;
}; };
}; };
programs.plasma = {
enable = true;
overrideConfig = true;
session = {
sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession";
};
workspace = {
iconTheme = "Colloid-Dark";
windowDecorations = {
library = "org.kde.breeze";
theme = "Breeze";
};
cursor.size = 24;
};
configFile = {
kwinrc.Desktops.Number = 3;
# kdeglobals.KDE.AutomaticLookAndFeel = true;
kwinrc.Round-Corners.ActiveOutlinePalette = 3;
kwinrc.Round-Corners.ActiveOutlineUseCustom = false;
kwinrc.Round-Corners.ActiveOutlineUsePalette = true;
kwinrc.Round-Corners.ActiveSecondOutlinePalette = 3;
kwinrc.Round-Corners.ActiveSecondOutlineUseCustom = false;
kwinrc.Round-Corners.ActiveSecondOutlineUsePalette = true;
kwinrc.Round-Corners.InactiveOutlinePalette = 2;
kwinrc.Round-Corners.InactiveOutlineUseCustom = false;
kwinrc.Round-Corners.InactiveOutlineUsePalette = true;
kwinrc.Round-Corners.InactiveSecondOutlinePalette = 2;
kwinrc.Round-Corners.InactiveSecondOutlineUseCustom = false;
kwinrc.Round-Corners.InactiveSecondOutlineUsePalette = true;
};
panels = [
# Windows-like panel at the bottom
{
location = "bottom";
height = 40;
hiding = "dodgewindows";
lengthMode = "fit";
floating = true;
alignment = "left";
widgets = [
# 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:firefox.desktop"
"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.activitypager"
"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.
{
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"
];
};
}
{
digitalClock = {
calendar.firstDayOfWeek = "sunday";
time.format = "12h";
};
}
];
}
];
};
# This value determines the Home Manager release that your # This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage # configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards # when a new Home Manager release introduces backwards

98
home/peach.nix Normal file
View file

@ -0,0 +1,98 @@
{ config, pkgs, ... }:
{
catppuccin = {
accent = "peach";
flavor = "mocha";
};
programs.plasma = {
workspace = {
# lookAndFeel = "Catppuccin-Mocha-Peach";
colorScheme = "CatppuccinMochaPeach";
cursor.theme = "catppuccin-mocha-peach-cursors";
splashScreen.theme = "Catpppuccin-Mocha-Peach";
};
configFile = {
kdeglobals.KDE = {
DefaultDarkLookAndFeel = "Catppuccin-Mocha-Peach";
DefaultLightLookAndFeel = "Catppuccin-Latte-Peach";
};
};
panels = [
# Application name, Global menu and Song information and playback controls at the top
{
location = "top";
height = 37;
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;
};
};
};
}
];
}
];
};
}

View file

@ -1,15 +1,14 @@
{ config, pkgs, lib, catppuccin, ... }: { { config, pkgs, lib, catppuccin, ... }: {
networking.hostName = "alien"; networking.hostName = "alien";
catppuccin = { catppuccin.accent = "blue";
accent = "lavender";
};
home-manager.users.sckova = { home-manager.users.sckova = {
imports = [ catppuccin.homeModules.catppuccin ]; imports = [ catppuccin.homeModules.catppuccin ];
}; };
boot.kernelPackages = pkgs.linuxPackages; boot.kernelPackages = pkgs.linuxPackages;
boot.loader.systemd-boot.consoleMode = "max";
programs = { programs = {
gamescope = { gamescope = {
@ -32,8 +31,8 @@
modesetting.enable = true; modesetting.enable = true;
powerManagement.enable = false; powerManagement.enable = false;
nvidiaSettings = false; nvidiaSettings = false;
open = true; open = false;
# package = pkgs.linuxPackages.nvidiaPackages.stable; package = pkgs.linuxPackages.nvidiaPackages.stable;
}; };
} }

View file

@ -2,20 +2,34 @@
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{ config, lib, pkgs, ... }: {
config,
lib,
pkgs,
...
}:
{ {
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [
"nix-command"
"flakes"
];
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.sckova = { home-manager.users.sckova = {
imports = [ imports = [
../home/all.nix ../home/all.nix
../home/${config.networking.hostName}.nix
]; ];
}; };
boot = { boot = {
plymouth = {
enable = true;
};
loader = { loader = {
timeout = 3; timeout = 3;
systemd-boot = { systemd-boot = {
@ -40,6 +54,11 @@
initrd.verbose = false; initrd.verbose = false;
}; };
catppuccin = {
enable = true;
flavor = "mocha";
};
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
time.timeZone = "America/New_York"; time.timeZone = "America/New_York";
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
@ -72,7 +91,7 @@
enable = true; enable = true;
useRoutingFeatures = "client"; useRoutingFeatures = "client";
}; };
}; };
services.printing.enable = true; services.printing.enable = true;
@ -86,20 +105,24 @@
users.users.sckova = { users.users.sckova = {
isNormalUser = true; isNormalUser = true;
description = "Sean Kovacs"; description = "Sean Kovacs";
extraGroups = [ "networkmanager" "wheel" ]; extraGroups = [
packages = with pkgs; []; "networkmanager"
"wheel"
];
packages = with pkgs; [ ];
hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0"; hashedPassword = "$6$bvwRUFaJNMpH8rm3$FGDWFN6tBScJ/2DynAjnlZE8JRfyADN78d6c4GawxpAjyNLNE/AjQzMA09tLRqpKX7WnN5PIUZLAm2bT9/RbG0";
}; };
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
programs.bash = { programs.bash = {
interactiveShellInit = '' interactiveShellInit = ''
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]] if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
then then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION="" shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi fi
''; '';
}; };
programs.firefox.enable = true; programs.firefox.enable = true;
@ -142,4 +165,3 @@
system.stateVersion = "25.05"; # Did you read the comment? system.stateVersion = "25.05"; # Did you read the comment?
} }

View file

@ -1,9 +1,7 @@
{ config, pkgs, lib, catppuccin, ... }: { { config, pkgs, lib, catppuccin, ... }: {
networking.hostName = "peach"; networking.hostName = "peach";
catppuccin = { catppuccin.accent = "peach";
accent = "peach";
};
home-manager.users.sckova = { home-manager.users.sckova = {
imports = [ catppuccin.homeModules.catppuccin ]; imports = [ catppuccin.homeModules.catppuccin ];