From 5116dd160d770084fa9aab42be11b6135187f044 Mon Sep 17 00:00:00 2001 From: Yuri Tatishchev Date: Sat, 31 May 2025 00:29:53 -0700 Subject: [PATCH] WIP: laptop: refactor home manager modules --- home/default.nix | 176 ++--------------------------------- home/fish.nix | 27 ++++++ home/plasma.nix | 61 ++++++++++++ home/starship.nix | 63 +++++++++++++ hosts/Yura-TPX13/default.nix | 1 + 5 files changed, 158 insertions(+), 170 deletions(-) create mode 100644 home/fish.nix create mode 100644 home/plasma.nix create mode 100644 home/starship.nix diff --git a/home/default.nix b/home/default.nix index 7e0772d..f6e50aa 100644 --- a/home/default.nix +++ b/home/default.nix @@ -3,6 +3,12 @@ let username = "cazzzer"; in { + imports = [ + ./fish.nix + ./starship.nix + ./plasma.nix + ]; + # Home Manager needs a bit of information about you and the paths it should # manage. home.username = username; @@ -16,12 +22,6 @@ in SHELL = "fish"; }; - # TODO: remove (replace by bitwarden-desktop) - services.gnome-keyring = { - enable = true; - components = [ "pkcs11" "ssh" ]; - }; - services.darkman = { enable = true; settings = { @@ -36,150 +36,6 @@ in }; }; - programs.fish = { - enable = true; - shellInit = "set fish_greeting"; - shellAliases = { - # Replace ls with exa - ls = "exa -al --color=always --group-directories-first --icons"; # preferred listing - la = "exa -a --color=always --group-directories-first --icons"; # all files and dirs - ll = "exa -l --color=always --group-directories-first --icons"; # long format - lt = "exa -aT --color=always --group-directories-first --icons"; # tree listing - "l." = "exa -a | rg '^\.'"; # show only dotfiles - - # Replace cat with bat - cat = "bat"; - }; - # alias for nix shell with flake packages - functions.add.body = '' - set -x packages 'nixpkgs#'$argv - nix shell $packages - ''; - interactiveShellInit = '' - fastfetch - ''; - }; - - programs.starship = { - enable = true; - enableFishIntegration = true; - settings = { - format = lib.concatStrings [ - "$all" - "$time" - "$cmd_duration" - "$line_break" - "$jobs" - "$status" - "$character" - ]; - username = { - format = " [╭─$user]($style)@"; - style_user = "bold red"; - style_root = "bold red"; - show_always = true; - }; - hostname = { - format = "[$hostname]($style) in "; - style = "bold dimmed red"; - ssh_only = false; - }; - directory = { - style = "purple"; - truncation_length = 0; - truncate_to_repo = true; - truncation_symbol = "repo: "; - }; - git_status = { - style = "white"; - ahead = "⇡\${count}"; - diverged = "⇕⇡\${ahead_count}⇣\${behind_count}"; - behind = "⇣\${count}"; - deleted = "x"; - }; - cmd_duration = { - min_time = 1000; - format = "took [$duration]($style) "; - }; - time = { - format = " 🕙 $time($style) "; - time_format = "%T"; - style = "bright-white"; - disabled = false; - }; - character = { - success_symbol = " [╰─λ](bold red)"; - error_symbol = " [×](bold red)"; - }; - status = { - symbol = "🔴"; - format = "[\\[$symbol$status_common_meaning$status_signal_name$status_maybe_int\\]]($style)"; - map_symbol = true; - disabled = false; - }; - }; - }; - - programs.plasma = { - enable = true; - overrideConfig = true; - # TODO: figure out how to enable tela-circle icon theme if installed in systemPackages - # workspace.iconTheme = if builtins.elem pkgs.tela-circle-icon-theme config.environment.systemPackages then "Tela-circle" else null; - workspace.iconTheme = "Tela-circle"; - fonts = let - defaultFont = { - family = "Noto Sans"; - pointSize = 14; - }; - in { - general = defaultFont; - fixedWidth = defaultFont // { family = "Hack"; }; - small = defaultFont // { pointSize = defaultFont.pointSize - 2; }; - toolbar = defaultFont; - menu = defaultFont; - windowTitle = defaultFont; - }; - input.keyboard.layouts = [ - { layout = "us"; displayName = "us"; } - { layout = "minimak-4"; displayName = "us4"; } - { layout = "ru"; displayName = "ru"; } - ]; - kwin.virtualDesktops.number = 2; - session.sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession"; - 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"; - kwin."Window Maximize" = [ "Meta+F" "Meta+PgUp,Maximize Window" ]; - "KDE Keyboard Layout Switcher"."Switch to Next Keyboard Layout" = "Meta+Space"; - }; - 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; - }; - dolphinrc.General.ShowFullPath = true; - dolphinrc.DetailsMode.PreviewSize.persistent = 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"; - }; - }; - }; - - xdg.configFile = { - "fcitx5/conf/wayland.conf".text = "Allow Overriding System XKB Settings=False"; - }; - # 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. @@ -224,24 +80,4 @@ in # org.gradle.daemon.idletimeout=3600000 # ''; # }; - - # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. These will be explicitly sourced when using a - # shell provided by Home Manager. If you don't want to manage your shell - # through Home Manager then you have to manually source 'hm-session-vars.sh' - # located at either - # - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # /etc/profiles/per-user/cazzzer/etc/profile.d/hm-session-vars.sh - # - # home.sessionVariables = { - # EDITOR = "emacs"; - # }; } diff --git a/home/fish.nix b/home/fish.nix new file mode 100644 index 0000000..70a100b --- /dev/null +++ b/home/fish.nix @@ -0,0 +1,27 @@ +{ config, lib, pkgs, ... }: + +{ + programs.fish = { + enable = true; + shellInit = "set fish_greeting"; + shellAliases = { + # Replace ls with exa + ls = "exa -al --color=always --group-directories-first --icons"; # preferred listing + la = "exa -a --color=always --group-directories-first --icons"; # all files and dirs + ll = "exa -l --color=always --group-directories-first --icons"; # long format + lt = "exa -aT --color=always --group-directories-first --icons"; # tree listing + "l." = "exa -a | rg '^\.'"; # show only dotfiles + + # Replace cat with bat + cat = "bat"; + }; + # alias for nix shell with flake packages + functions.add.body = '' + set -x packages 'nixpkgs#'$argv + nix shell $packages + ''; + interactiveShellInit = '' + fastfetch + ''; + }; +} diff --git a/home/plasma.nix b/home/plasma.nix new file mode 100644 index 0000000..6276f89 --- /dev/null +++ b/home/plasma.nix @@ -0,0 +1,61 @@ +{ config, lib, pkgs, osConfig, ... }: + +{ + programs.plasma = { + enable = true; + overrideConfig = true; + workspace.iconTheme = if builtins.elem pkgs.tela-circle-icon-theme osConfig.environment.systemPackages then "Tela-circle" else null; + fonts = let + defaultFont = { + family = "Noto Sans"; + pointSize = 14; + }; + in { + general = defaultFont; + fixedWidth = defaultFont // { family = "Hack"; }; + small = defaultFont // { pointSize = defaultFont.pointSize - 2; }; + toolbar = defaultFont; + menu = defaultFont; + windowTitle = defaultFont; + }; + input.keyboard.layouts = [ + { layout = "us"; displayName = "us"; } + { layout = "minimak-4"; displayName = "us4"; } + { layout = "ru"; displayName = "ru"; } + ]; + kwin.virtualDesktops.number = 2; + session.sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession"; + 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"; + kwin."Window Maximize" = [ "Meta+F" "Meta+PgUp,Maximize Window" ]; + "KDE Keyboard Layout Switcher"."Switch to Next Keyboard Layout" = "Meta+Space"; + }; + 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; + }; + dolphinrc.General.ShowFullPath = true; + dolphinrc.DetailsMode.PreviewSize.persistent = 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"; + }; + }; + }; + + xdg.configFile = { + "fcitx5/conf/wayland.conf".text = "Allow Overriding System XKB Settings=False"; + }; +} diff --git a/home/starship.nix b/home/starship.nix new file mode 100644 index 0000000..2784035 --- /dev/null +++ b/home/starship.nix @@ -0,0 +1,63 @@ +{ config, lib, pkgs, ... }: + +{ + programs.starship = { + enable = true; + enableFishIntegration = true; + settings = { + format = lib.concatStrings [ + "$all" + "$time" + "$cmd_duration" + "$line_break" + "$jobs" + "$status" + "$character" + ]; + username = { + format = " [╭─$user]($style)@"; + style_user = "bold red"; + style_root = "bold red"; + show_always = true; + }; + hostname = { + format = "[$hostname]($style) in "; + style = "bold dimmed red"; + ssh_only = false; + }; + directory = { + style = "purple"; + truncation_length = 0; + truncate_to_repo = true; + truncation_symbol = "repo: "; + }; + git_status = { + style = "white"; + ahead = "⇡\${count}"; + diverged = "⇕⇡\${ahead_count}⇣\${behind_count}"; + behind = "⇣\${count}"; + deleted = "x"; + }; + cmd_duration = { + min_time = 1000; + format = "took [$duration]($style) "; + }; + time = { + format = " 🕙 $time($style) "; + time_format = "%T"; + style = "bright-white"; + disabled = false; + }; + character = { + success_symbol = " [╰─λ](bold red)"; + error_symbol = " [×](bold red)"; + }; + status = { + symbol = "🔴"; + format = "[\\[$symbol$status_common_meaning$status_signal_name$status_maybe_int\\]]($style)"; + map_symbol = true; + disabled = false; + }; + }; + }; +} diff --git a/hosts/Yura-TPX13/default.nix b/hosts/Yura-TPX13/default.nix index 2c17a1a..1a1ef95 100644 --- a/hosts/Yura-TPX13/default.nix +++ b/hosts/Yura-TPX13/default.nix @@ -62,6 +62,7 @@ # services.gnome.gnome-keyring.enable = true; security.pam.services.sddm.enableGnomeKeyring = true; # security.pam.services.sddm.gnupg.enable = true; + services.fprintd.enable = true; hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = false;