diff --git a/flake.lock b/flake.lock index 74a0925..baf0000 100644 --- a/flake.lock +++ b/flake.lock @@ -72,11 +72,35 @@ "type": "github" } }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1739557722, + "narHash": "sha256-XikzLpPUDYiNyJ4w2SfRShdbSkIgE3btYdxCGInmtc4=", + "owner": "nix-community", + "repo": "plasma-manager", + "rev": "1f3e1f38dedbbb8aad77e184fb54ec518e2d9522", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "plasma-manager", + "type": "github" + } + }, "root": { "inputs": { "home-manager": "home-manager", "nixos-generators": "nixos-generators", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "plasma-manager": "plasma-manager" } } }, diff --git a/flake.nix b/flake.nix index a4459d7..0109d59 100644 --- a/flake.nix +++ b/flake.nix @@ -9,13 +9,18 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; + plasma-manager = { + url = "github:nix-community/plasma-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; nixos-generators = { url = "github:nix-community/nixos-generators"; inputs.nixpkgs.follows = "nixpkgs"; }; }; - outputs = { self, nixpkgs, home-manager, nixos-generators }: { + outputs = { self, nixpkgs, home-manager, plasma-manager, nixos-generators }: { nixosConfigurations = { Yura-PC = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; @@ -28,8 +33,9 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.cazzzer = import ./home; + home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager ]; + home-manager.users.cazzzer = import ./home; # Optionally, use home-manager.extraSpecialArgs to pass # arguments to home.nix } diff --git a/home/default.nix b/home/default.nix index f59106b..1716a19 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,11 +1,78 @@ { config, pkgs, ... }: - +let + defaultFont = { + family = "Noto Sans"; + pointSize = 13; + }; +in { # Home Manager needs a bit of information about you and the paths it should # manage. home.username = "cazzzer"; home.homeDirectory = "/home/cazzzer"; + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; + + home.sessionVariables = { + EDITOR = "micro"; + SHELL = "fish"; + }; + + services.darkman = { + enable = true; + settings = { + lat = 37.3387; + lng = -121.8853; + }; + lightModeScripts = { + plasma-color = "plasma-apply-colorscheme BreezeLight"; + }; + darkModeScripts = { + plasma-color = "plasma-apply-colorscheme BreezeDark"; + }; + }; + + programs.plasma = { + enable = true; + overrideConfig = true; + workspace.iconTheme = "Tela-circle"; + fonts = { + general = defaultFont; + fixedWidth = defaultFont // { family = "Hack"; }; + small = defaultFont // { pointSize = defaultFont.pointSize - 2; }; + toolbar = defaultFont; + menu = defaultFont; + windowTitle = defaultFont; + }; + input.keyboard.layouts = [ { layout = "minimak-4"; displayName = "us4"; } ]; + kwin.virtualDesktops.number = 2; + shortcuts = { + # kmix.mic_mute = "ScrollLock"; + kmix.mic_mute = ["Microphone Mute" "ScrollLock" "Meta+Volume Mute,Microphone Mute" "Meta+Volume Mute,Mute Microphone"]; + plasmashell.show-barcode = "Meta+M"; + }; + hotkeys.commands."launch-konsole" = { + name = "Launch Konsole"; + key = "Meta+Alt+C"; + command = "konsole"; + }; + configFile = { + kdeglobals.KDE.AnimationDurationFactor = 0.5; + kdeglobals.General.accentColorFromWallpaper = true; + kwinrc.Wayland.InputMethod = { + value = "org.fcitx.Fcitx5.desktop"; + shellExpand = true; + }; + kactivitymanagerdrc = { + activities."809dc779-bf5b-49e6-8e3f-cbe283cb05b6" = "Default"; + activities."b34a506d-ac4f-4797-8c08-6ef45bc49341" = "Fun"; + activities-icons."809dc779-bf5b-49e6-8e3f-cbe283cb05b6" = "keyboard"; + activities-icons."b34a506d-ac4f-4797-8c08-6ef45bc49341" = "preferences-desktop-gaming"; + }; + }; + }; + # This value determines the Home Manager release that your configuration is # compatible with. This helps avoid breakage when a new Home Manager release # introduces backwards incompatible changes. @@ -17,7 +84,7 @@ # The home.packages option allows you to install Nix packages into your # environment. - home.packages = [ + # home.packages = [ # # Adds the 'hello' command to your environment. It prints a friendly # # "Hello, world!" when run. # pkgs.hello @@ -34,11 +101,11 @@ # (pkgs.writeShellScriptBin "my-hello" '' # echo "Hello, ${config.home.username}!" # '') - ]; + # ]; # Home Manager is pretty good at managing dotfiles. The primary way to manage # plain files is through 'home.file'. - home.file = { + # home.file = { # # Building this configuration will create a copy of 'dotfiles/screenrc' in # # the Nix store. Activating the configuration will then make '~/.screenrc' a # # symlink to the Nix store copy. @@ -49,9 +116,7 @@ # org.gradle.console=verbose # org.gradle.daemon.idletimeout=3600000 # ''; - - ".config/hi".text = "hello"; - }; + # }; # Home Manager can also manage your environment variables through # 'home.sessionVariables'. These will be explicitly sourced when using a @@ -69,10 +134,7 @@ # # /etc/profiles/per-user/cazzzer/etc/profile.d/hm-session-vars.sh # - home.sessionVariables = { + # home.sessionVariables = { # EDITOR = "emacs"; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; + # }; }