From 791bc419b6dac7c70951981ef6b34cdf85828470 Mon Sep 17 00:00:00 2001 From: adikro Date: Sat, 20 Dec 2025 03:14:45 +0100 Subject: absolutely massive rewrite, made (almost) everything modular with changes to come --- hm/conf/clip.nix | 32 ++++++++++++ hm/conf/conf.nix | 9 ++++ hm/conf/git.nix | 18 +++++++ hm/conf/ssh.nix | 11 ++++ hm/conf/xdg-dirs.nix | 51 +++++++++++++++++++ hm/default.nix | 10 ++++ hm/editors/editors.nix | 8 +++ hm/editors/helix.nix | 14 ++++++ hm/editors/nixvim.nix | 107 +++++++++++++++++++++++++++++++++++++++ hm/editors/nvf.nix | 48 ++++++++++++++++++ hm/env/env.nix | 9 ++++ hm/env/niri/binds.nix | 98 ++++++++++++++++++++++++++++++++++++ hm/env/niri/niri.nix | 94 ++++++++++++++++++++++++++++++++++ hm/env/theme.nix | 35 +++++++++++++ hm/env/waybar.nix | 13 +++++ hm/shell/cli.nix | 35 +++++++++++++ hm/shell/fish.nix | 69 +++++++++++++++++++++++++ hm/shell/foot.nix | 38 ++++++++++++++ hm/shell/shell.nix | 9 ++++ hm/shell/starship.nix | 49 ++++++++++++++++++ hm/soft/awww.nix | 14 ++++++ hm/soft/easyeffects.nix | 13 +++++ hm/soft/fuzzel.nix | 13 +++++ hm/soft/gaming.nix | 12 +++++ hm/soft/media.nix | 27 ++++++++++ hm/soft/nixcord.nix | 130 ++++++++++++++++++++++++++++++++++++++++++++++++ hm/soft/satty.nix | 13 +++++ hm/soft/soft.nix | 15 ++++++ hm/soft/spicetify.nix | 24 +++++++++ hm/soft/swayidle.nix | 13 +++++ hm/soft/swaylock.nix | 14 ++++++ 31 files changed, 1045 insertions(+) create mode 100644 hm/conf/clip.nix create mode 100644 hm/conf/conf.nix create mode 100644 hm/conf/git.nix create mode 100644 hm/conf/ssh.nix create mode 100644 hm/conf/xdg-dirs.nix create mode 100644 hm/default.nix create mode 100644 hm/editors/editors.nix create mode 100644 hm/editors/helix.nix create mode 100644 hm/editors/nixvim.nix create mode 100644 hm/editors/nvf.nix create mode 100644 hm/env/env.nix create mode 100644 hm/env/niri/binds.nix create mode 100644 hm/env/niri/niri.nix create mode 100644 hm/env/theme.nix create mode 100644 hm/env/waybar.nix create mode 100644 hm/shell/cli.nix create mode 100644 hm/shell/fish.nix create mode 100644 hm/shell/foot.nix create mode 100644 hm/shell/shell.nix create mode 100644 hm/shell/starship.nix create mode 100644 hm/soft/awww.nix create mode 100644 hm/soft/easyeffects.nix create mode 100644 hm/soft/fuzzel.nix create mode 100644 hm/soft/gaming.nix create mode 100644 hm/soft/media.nix create mode 100644 hm/soft/nixcord.nix create mode 100644 hm/soft/satty.nix create mode 100644 hm/soft/soft.nix create mode 100644 hm/soft/spicetify.nix create mode 100644 hm/soft/swayidle.nix create mode 100644 hm/soft/swaylock.nix (limited to 'hm') diff --git a/hm/conf/clip.nix b/hm/conf/clip.nix new file mode 100644 index 0000000..82de671 --- /dev/null +++ b/hm/conf/clip.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.conf.clipboard; +in +{ + options.szpont.hm.conf.clipboard = { + enable = lib.mkEnableOption "cliphist clipboard history"; + + backend = lib.mkOption { + type = lib.types.enum [ "wayland" "x11" "both" ]; + default = "both"; + description = "which clipboard backend tools to install"; + }; + }; + + config = lib.mkIf cfg.enable { + services.cliphist = { + enable = true; + allowImages = true; + systemdTargets = "graphical-session.target"; + }; + + home.packages = lib.mkMerge [ + (lib.mkIf (cfg.backend == "wayland" || cfg.backend == "both") [ + pkgs.wl-clipboard + ]) + (lib.mkIf (cfg.backend == "x11" || cfg.backend == "both") [ + pkgs.xclip + ]) + ]; + }; +} diff --git a/hm/conf/conf.nix b/hm/conf/conf.nix new file mode 100644 index 0000000..c05c5c3 --- /dev/null +++ b/hm/conf/conf.nix @@ -0,0 +1,9 @@ +{ ... }: +{ + imports = [ + ./clip.nix + ./git.nix + ./ssh.nix + ./xdg-dirs.nix + ]; +} diff --git a/hm/conf/git.nix b/hm/conf/git.nix new file mode 100644 index 0000000..f6a7267 --- /dev/null +++ b/hm/conf/git.nix @@ -0,0 +1,18 @@ +{ config, lib, ... }: +let + cfg = config.szpont.hm.conf.git; +in +{ + options.szpont.hm.conf.git.enable = lib.mkEnableOption "enables git vcs"; + + config = lib.mkIf cfg.enable { + programs.git = { + enable = true; + settings = { + user.name = "adikro"; + user.email = "adikro@disroot.org"; + init.defaultBranch = "main"; + }; + }; + }; +} diff --git a/hm/conf/ssh.nix b/hm/conf/ssh.nix new file mode 100644 index 0000000..4587751 --- /dev/null +++ b/hm/conf/ssh.nix @@ -0,0 +1,11 @@ +{ config, lib, ... }: +let + cfg = config.szpont.hm.conf.ssh; +in +{ + options.szpont.hm.conf.ssh.enable = lib.mkEnableOption "enables ssh support"; + + config = lib.mkIf cfg.enable { + + }; +} diff --git a/hm/conf/xdg-dirs.nix b/hm/conf/xdg-dirs.nix new file mode 100644 index 0000000..2bd9e64 --- /dev/null +++ b/hm/conf/xdg-dirs.nix @@ -0,0 +1,51 @@ +{ config, lib, ... }: +let + cfg = config.szpont.hm.conf.xdg-dirs; +in +{ + options.szpont.hm.conf.xdg-dirs = { + enable = lib.mkEnableOption "enables xdg dirs"; + + mediaPath = lib.mkOption { + type = lib.types.path; + default = config.home.homeDirectory; + description = "base path for media"; + }; + }; + + config = lib.mkIf cfg.enable { + xdg.userDirs = { + enable = true; + createDirectories = true; + + download = "${config.home.homeDirectory}/dl"; + documents = "${config.home.homeDirectory}/docs"; + + pictures = "${toString cfg.mediaPath}/pics"; + videos = "${toString cfg.mediaPath}/vids"; + + desktop = null; + music = null; + publicShare = null; + templates = null; + + extraConfig = { + XDG_PROJECTS_DIR = "${config.home.homeDirectory}/proj"; + XDG_GAMES_DIR = "${config.home.homeDirectory}/games"; + XDG_MEDIA_DIR = "${toString cfg.mediaPath}"; + XDG_SS_DIR = "${toString cfg.mediaPath}/pics/ss"; + XDG_CLIPS_DIR = "${toString cfg.mediaPath}/vids/clips"; + XDG_ARCHIVE_DIR = "${toString cfg.mediaPath}/archive"; + }; + }; + home.sessionVariables = { + XDG_PROJECTS_DIR = "${config.home.homeDirectory}/proj"; + XDG_GAMES_DIR = "${config.home.homeDirectory}/games"; + XDG_MEDIA_DIR = "${toString cfg.mediaPath}"; + XDG_SS_DIR = "${toString cfg.mediaPath}/pics/ss"; + XDG_CLIPS_DIR = "${toString cfg.mediaPath}/vids/clips"; + XDG_ARCHIVE_DIR = "${toString cfg.mediaPath}/archive"; + }; + + }; +} diff --git a/hm/default.nix b/hm/default.nix new file mode 100644 index 0000000..a8babd7 --- /dev/null +++ b/hm/default.nix @@ -0,0 +1,10 @@ +{ ... }: +{ + imports = [ + ./soft/soft.nix + ./conf/conf.nix + ./env/env.nix + ./editors/editors.nix + ./shell/shell.nix + ]; +} diff --git a/hm/editors/editors.nix b/hm/editors/editors.nix new file mode 100644 index 0000000..bca92dd --- /dev/null +++ b/hm/editors/editors.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + imports = [ + ./helix.nix + ./nixvim.nix + # ./nvf.nix + ]; +} diff --git a/hm/editors/helix.nix b/hm/editors/helix.nix new file mode 100644 index 0000000..05412a8 --- /dev/null +++ b/hm/editors/helix.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.editors.helix; +in +{ + options.szpont.hm.editors.helix.enable = lib.mkEnableOption "enables helix editor"; + + config = lib.mkIf cfg.enable { + programs.helix = { + enable = true; + package = pkgs.helix; + }; + }; +} diff --git a/hm/editors/nixvim.nix b/hm/editors/nixvim.nix new file mode 100644 index 0000000..a80a674 --- /dev/null +++ b/hm/editors/nixvim.nix @@ -0,0 +1,107 @@ +{ inputs, config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.editors.nixvim; +in +{ + imports = [ inputs.nixvim.homeModules.nixvim ]; + + options.szpont.hm.editors.nixvim.enable = lib.mkEnableOption "enables nixvim config framework"; + + config = lib.mkIf cfg.enable { + + programs.nixvim = { + enable = true; + package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default; + + viAlias = true; + vimAlias = true; + defaultEditor = true; + waylandSupport = true; + colorschemes.gruvbox.enable = true; + + plugins = { + lualine.enable = true; + oil.enable = true; + lazygit.enable = true; + persistence.enable = true; + nvim-autopairs.enable = true; + neoscroll.enable = true; + bufferline.enable = true; + web-devicons.enable = true; + + treesitter = { + enable = true; + settings = { + indent.enable = true; + }; + }; + + telescope = { + enable = true; + extensions = { + fzf-native = { + enable = true; + }; + }; + }; + + notify = { + enable = true; + settings = { + backgroundColour = "#1e1e2e"; + fps = 60; + render = "default"; + timeout = 500; + topDown = true; + }; + }; + + hardtime = { + # enable = true; + settings = { + # disableMouse = true; + # enabled = false; + restrictionMode = "hint"; + hint = true; + maxCount = 40; + maxTime = 1000; + }; + }; + + nix.enable = true; + lsp = { + enable = true; + servers = { + nil_ls.enable = true; + clangd.enable = true; + }; + }; + }; + + opts = { + number = true; + relativenumber = true; + termguicolors = true; + # mouse = "a"; + ignorecase = true; + smartcase = true; + expandtab = true; + shiftwidth = 2; + encoding = "utf-8"; + fileencoding = "utf-8"; + undofile = true; + swapfile = true; + backup = false; + autoread = true; + cursorline = true; + ruler = true; + gdefault = true; + scrolloff = 5; + clipboard = { + providers.wl-copy.enable = true; + register = "unnamedplus"; + }; + }; + }; + }; +} diff --git a/hm/editors/nvf.nix b/hm/editors/nvf.nix new file mode 100644 index 0000000..91348a9 --- /dev/null +++ b/hm/editors/nvf.nix @@ -0,0 +1,48 @@ +{ inputs, config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.editors.nvf; +in +{ + options.szpont.hm.editors.nvf.enable = lib.mkEnableOption "enables nvf configuration framework"; + + config = lib.mkIf cfg.enable { + programs.nvf = { + enable = true; + + settings.vim = { + package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default; + + viAlias = true; + vimAlias = true; + + theme = { + enable = true; + name = "gruvbox"; + style = "dark"; + }; + + statusline = { + lualine = { + enable = true; + theme = "gruvbox-material"; + }; + }; + + autopairs.nvim-autopairs.enable = true; + + lsp.enable = true; + + languages = { + nix = { + enable = true; + format = { + enable = true; + type = "alejandra"; + }; + }; + clang.enable = true; + }; + }; + }; + }; +} diff --git a/hm/env/env.nix b/hm/env/env.nix new file mode 100644 index 0000000..1c2c6d2 --- /dev/null +++ b/hm/env/env.nix @@ -0,0 +1,9 @@ +{ ... }: +{ + imports = [ + ./niri/niri.nix + + ./theme.nix + ./waybar.nix + ]; +} diff --git a/hm/env/niri/binds.nix b/hm/env/niri/binds.nix new file mode 100644 index 0000000..cb0feca --- /dev/null +++ b/hm/env/niri/binds.nix @@ -0,0 +1,98 @@ +{ config, lib, pkgs, ... }: + +with config.lib.niri.actions; +let + playerctl = spawn "${pkgs.playerctl}/bin/playerctl"; +in +{ + "Mod+O" = { + action = toggle-overview; + repeat = false; + }; + "Mod+Slash".action = show-hotkey-overlay; + + # Audio + XF86AudioRaiseVolume.action = playerctl "volume" "0.02+"; + XF86AudioLowerVolume.action = playerctl "volume" "0.02-"; + XF86AudioMute.action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; + XF86AudioMicMute.action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; + + # Media keys + XF86AudioPlay.action = playerctl "play-pause"; + XF86AudioPrev.action = playerctl "previous"; + XF86AudioNext.action = playerctl "next"; + + # Column sizing + "Mod+Minus".action = set-column-width "-10%"; + "Mod+Equal".action = set-column-width "+10%"; + + # Finer height adjustments when in column with other windows. + "Mod+Shift+Minus".action = set-window-height "-10%"; + "Mod+Shift+Equal".action = set-window-height "+10%"; + + # Misc + "Mod+Shift+V".action = toggle-window-floating; + "Mod+Shift+P".action = power-off-monitors; + "Mod+W".action = toggle-column-tabbed-display; + + "Mod+S".action = spawn "sh" "-c" + '' + filename="/media/pics/ss/$(date +%Y-%m-%d_%H-%M-%S).png" + grim -g "$(slurp)" - | tee "$filename" | wl-copy + ''; + + "Mod+Shift+S".action = spawn "sh" "-c" + '' + filename="/media/pics/ss/$(date +%Y-%m-%d_%H-%M-%S).png" + grim -g "$(slurp)" "$filename" + + edited="/media/pics/ss/$(date +%Y-%m-%d_%H-%M-%S)-edited.png" + satty --filename "$filename" --output-filename "$edited" + ''; + + "Mod+Shift+D".action = spawn "sh" "-c" + '' + cliphist list | fuzzel --dmenu | cliphist decode | wl-copy + ''; + + # --- System / General --- + "Mod+Return".action = spawn "foot"; + "Mod+D".action = spawn "fuzzel"; + "Mod+C".action = spawn "qalculate-gtk"; + "Mod+BracketLeft".action = consume-or-expel-window-left; + "Mod+BracketRight".action = consume-or-expel-window-right; + + "Mod+R".action = switch-preset-column-width; + "Mod+Shift+R".action = reset-window-height; + "Mod+F".action = maximize-column; + "Mod+Shift+F".action = fullscreen-window; + + "Mod+Comma".action = consume-window-into-column; + "Mod+Period".action = expel-window-from-column; + + "Mod+Shift+E".action = quit; + + # --- Window Navigation (Focus) --- + "Mod+H".action = focus-column-left; + "Mod+L".action = focus-column-right; + "Mod+J".action = focus-workspace-down; + "Mod+K".action = focus-workspace-up; + + # --- Window Management (Move) --- + "Mod+Shift+H".action = move-column-left; + "Mod+Shift+L".action = move-column-right; + "Mod+Shift+J".action = move-window-down-or-to-workspace-down; + "Mod+Shift+K".action = move-window-up-or-to-workspace-up; + + # --- Window State --- + "Mod+Shift+Q".action = close-window; + +} // ( + # --- Generated Workspace Binds (1-9) --- + builtins.listToAttrs (builtins.concatMap (i: let + strI = toString i; + in [ + { name = "Mod+${strI}"; value.action = focus-workspace i; } + { name = "Mod+Shift+${strI}"; value.action.move-column-to-workspace = [ i ]; } + ]) (lib.range 1 9)) +) diff --git a/hm/env/niri/niri.nix b/hm/env/niri/niri.nix new file mode 100644 index 0000000..fddfcac --- /dev/null +++ b/hm/env/niri/niri.nix @@ -0,0 +1,94 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.env.niri; +in +{ + options.szpont.hm.env.niri.enable = lib.mkEnableOption "niri hm"; + config = lib.mkIf cfg.enable { + + szpont.hm.soft = { + awww.enable = true; + fuzzel.enable = true; + satty.enable = true; + swayidle.enable = true; + swaylock.enable = true; + }; + + programs.niri.settings = { + binds = import ./binds.nix { inherit config lib pkgs; }; + + prefer-no-csd = true; + hotkey-overlay.skip-at-startup = true; + input = { + mouse = { + accel-profile = "flat"; + accel-speed = -0.6; + middle-emulation = true; + scroll-factor = 1.5; + }; + focus-follows-mouse = { + enable = true; + max-scroll-amount = "10%"; + }; + mod-key = "Alt"; + keyboard = { + xkb.layout = "pl"; + repeat-delay = 400; + repeat-rate = 60; + }; + power-key-handling.enable = false; + }; + outputs = { + "DP-1" = { + focus-at-startup = true; + # backdrop-color = ""; + variable-refresh-rate = "on-demand"; + mode = { + width = 2560; + height = 1440; + refresh = 239.998; + }; + }; + }; + cursor = { + hide-when-typing = true; + size = 8; + # theme = ""; + }; + layout = { + border = { + width = 2; + # active = ; + }; + focus-ring = { + width = 2; + # active = ; + }; + preset-column-widths = [ + { proportion = 1. / 3.; } + { proportion = 1. / 2.; } + { proportion = 2. / 3.; } + ]; + preset-window-heights = [ + { proportion = 1. / 3.; } + { proportion = 1. / 2.; } + { proportion = 2. / 3.; } + ]; + default-column-width.proportion = 0.5; + tab-indicator = { + gaps-between-tabs = 3; + position = "top"; + }; + }; + spawn-at-startup = [ + { command = [ "${lib.getExe pkgs.xwayland-satellite}" ]; } + { command = [ "awww-daemon" ]; } + ]; + }; + home.packages = with pkgs; [ + qalculate-gtk + grim + slurp + ]; + }; +} diff --git a/hm/env/theme.nix b/hm/env/theme.nix new file mode 100644 index 0000000..54dd00b --- /dev/null +++ b/hm/env/theme.nix @@ -0,0 +1,35 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.env.themes; +in +{ + options.szpont.hm.env.themes = { + enable = lib.mkEnableOption "enables global theming"; + gtk.enable = lib.mkEnableOption "GTK theming"; + qt.enable = lib.mkEnableOption "QT theming"; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + (lib.mkIf cfg.gtk.enable { + gtk = { + enable = true; + gtk3.extraConfig.gtk-application-prefer-dark-theme = 1; + gtk4.extraConfig.gtk-application-prefer-dark-theme = 1; + + theme = { + name = "Adwaita-dark"; + package = pkgs.gnome-themes-extra; + }; + }; + }) + + (lib.mkIf cfg.qt.enable { + qt = { + enable = true; + style.name = "adwaita-dark"; + style.package = pkgs.adwaita-qt; + platformTheme.name = "adwaita"; + }; + }) + ]); +} diff --git a/hm/env/waybar.nix b/hm/env/waybar.nix new file mode 100644 index 0000000..84ccea9 --- /dev/null +++ b/hm/env/waybar.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +let + cfg = config.szpont.hm.env.waybar; +in +{ + options.szpont.hm.env.waybar.enable = lib.mkEnableOption "enables waybar"; + + config = lib.mkIf cfg.enable { + programs.waybar = { + enable = true; + }; + }; +} diff --git a/hm/shell/cli.nix b/hm/shell/cli.nix new file mode 100644 index 0000000..222b002 --- /dev/null +++ b/hm/shell/cli.nix @@ -0,0 +1,35 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.shell.cli; +in +{ + options.szpont.hm.shell.cli.enable = lib.mkEnableOption "modern cli tools"; + + config = lib.mkIf cfg.enable { + programs.zoxide.enable = true; + programs.zoxide.options = [ "--cmd cd" ]; + + programs.bat = { + enable = true; + config.theme = "gruvbox-dark"; + }; + + programs.eza.enable = true; + programs.fzf.enable = true; + programs.fd.enable = true; + programs.ripgrep.enable = true; + programs.yazi.enable = true; + + programs.btop.enable = true; + programs.fastfetch.enable = true; + + home.packages = with pkgs; [ + gdu + file + mediainfo + chafa + hexyl + procs + ]; + }; +} diff --git a/hm/shell/fish.nix b/hm/shell/fish.nix new file mode 100644 index 0000000..644eadc --- /dev/null +++ b/hm/shell/fish.nix @@ -0,0 +1,69 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.shell.fish; +in +{ + options.szpont.hm.shell.fish.enable = lib.mkEnableOption "enables fish shell"; + + config = lib.mkIf cfg.enable { + programs.fish = { + enable = true; + + interactiveShellInit = '' + set fish_greeting + fastfetch + ''; + + shellAliases = { + nos = "nh os switch"; + nob = "nh os boot"; + nfu = "nix flake update"; + ll = "ls -lah"; + la = "ls -A"; + md = "mkdir -p"; + rmf = "rm -rf"; + gl = "git log --oneline --graph --decorate"; + untar = "tar -xzvf"; + tarc = "tar -czvf"; + ff = "fastfetch"; + cat = "bat"; + ls = "eza"; + }; + + plugins = [ + { + name = "transient-fish"; + src = pkgs.fishPlugins.transient-fish.src; + } + { + name = "fishbang"; + src = pkgs.fishPlugins.fishbang.src; + } + { + name = "puffer"; + src = pkgs.fishPlugins.puffer.src; + } + { + name = "pisces"; + src = pkgs.fishPlugins.pisces.src; + } + { + name = "fzf-fish"; + src = pkgs.fishPlugins.fzf-fish.src; + } + { + name = "fish-you-should-use"; + src = pkgs.fishPlugins.fish-you-should-use.src; + } + { + name = "colored-man-pages"; + src = pkgs.fishPlugins.colored-man-pages.src; + } + { + name = "fifc"; + src = pkgs.fishPlugins.fifc.src; + } + ]; + }; + }; +} diff --git a/hm/shell/foot.nix b/hm/shell/foot.nix new file mode 100644 index 0000000..9847399 --- /dev/null +++ b/hm/shell/foot.nix @@ -0,0 +1,38 @@ +{ pkgs, lib, config, ... }: +let + cfg = config.szpont.hm.shell.foot; + + footTheme = pkgs.fetchurl { + url = "https://codeberg.org/dnkl/foot/raw/branch/master/themes/gruvbox-dark"; + sha256 = "sha256-ubvnLgDEPGvNrwQdZRNguftg2SF5qcO1iVK0Tb5ZveI="; + }; +in +{ + options.szpont.hm.shell.foot = { + enable = lib.mkEnableOption "foot terminal emulator"; + fontSize = lib.mkOption { + type = lib.types.int; + default = 14; + description = "Font size for the foot terminal"; + }; + }; + + config = lib.mkIf cfg.enable { + programs.foot = { + enable = true; + settings = { + main = { + font = "JetBrainsMonoNFM-Regular:size=${toString cfg.fontSize}"; + box-drawings-uses-font-glyphs = "yes"; + include = "${footTheme}"; + }; + scrollback = { + lines = 10000; + }; + mouse = { + hide-when-typing = "yes"; + }; + }; + }; + }; +} diff --git a/hm/shell/shell.nix b/hm/shell/shell.nix new file mode 100644 index 0000000..a1ca34d --- /dev/null +++ b/hm/shell/shell.nix @@ -0,0 +1,9 @@ +{ ... }: +{ + imports = [ + ./cli.nix + ./fish.nix + ./foot.nix + ./starship.nix + ]; +} diff --git a/hm/shell/starship.nix b/hm/shell/starship.nix new file mode 100644 index 0000000..4996bdc --- /dev/null +++ b/hm/shell/starship.nix @@ -0,0 +1,49 @@ +{ config, lib, ... }: +let + cfg = config.szpont.hm.shell.starship; +in +{ + options.szpont.hm.shell.starship.enable = lib.mkEnableOption "Starship prompt"; + + config = lib.mkIf cfg.enable { + programs.starship = { + enable = true; + enableFishIntegration = true; + + settings = { + add_newline = true; + + # format = lib.concatStrings [ + # "$hostname" + # "$directory" + # "$git_branch" + # "$git_status" + # "$nix_shell" + # "$python" + # "$rust" + # "$character" + # ]; + + directory = { + truncate_to_repo = false; + read_only = ""; + }; + + hostname.format = "[$hostname ]($style) "; + + python = { symbol = ""; format = "[$symbol ]($style)"; }; + rust = { symbol = ""; }; + nix_shell.format = "[$symbol$state ]($style)"; + + git_status = { + conflicted = "󰦎"; + ahead = ""; + behind = ""; + diverged = ""; + renamed = ""; + deleted = "x"; + }; + }; + }; + }; +} diff --git a/hm/soft/awww.nix b/hm/soft/awww.nix new file mode 100644 index 0000000..e807c9d --- /dev/null +++ b/hm/soft/awww.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, inputs, ... }: +let + cfg = config.szpont.hm.soft.awww; +in +{ + options.szpont.hm.soft.awww.enable = lib.mkEnableOption "enables awww"; + + config = lib.mkIf cfg.enable { + services.swww = { + enable = true; + package = inputs.awww.packages.${pkgs.stdenv.hostPlatform.system}.awww; + }; + }; +} diff --git a/hm/soft/easyeffects.nix b/hm/soft/easyeffects.nix new file mode 100644 index 0000000..beb9ad6 --- /dev/null +++ b/hm/soft/easyeffects.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +let + cfg = config.szpont.hm.soft.easyeffects; +in +{ + options.szpont.hm.soft.easyeffects.enable = lib.mkEnableOption "EasyEffects audio equalizer"; + + config = lib.mkIf cfg.enable { + services.easyeffects = { + enable = true; + }; + }; +} diff --git a/hm/soft/fuzzel.nix b/hm/soft/fuzzel.nix new file mode 100644 index 0000000..234aff7 --- /dev/null +++ b/hm/soft/fuzzel.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +let + cfg = config.szpont.hm.soft.fuzzel; +in +{ + options.szpont.hm.soft.fuzzel.enable = lib.mkEnableOption "enables fuzzel"; + + config = lib.mkIf cfg.enable { + programs.fuzzel = { + enable = true; + }; + }; +} diff --git a/hm/soft/gaming.nix b/hm/soft/gaming.nix new file mode 100644 index 0000000..5fc7095 --- /dev/null +++ b/hm/soft/gaming.nix @@ -0,0 +1,12 @@ +{ config, lib, ... }: +let + cfg = config.szpont.hm.soft.gaming; +in +{ + options.szpont.hm.soft.gaming.enable = lib.mkEnableOption "gaming hm config"; + config = lib.mkIf cfg.enable { + programs.mangohud = { + enable = true; + }; + }; +} diff --git a/hm/soft/media.nix b/hm/soft/media.nix new file mode 100644 index 0000000..0184957 --- /dev/null +++ b/hm/soft/media.nix @@ -0,0 +1,27 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.soft.media; +in +{ + options.szpont.hm.soft.media.enable = lib.mkEnableOption "media playback and processing tools"; + + config = lib.mkIf cfg.enable { + programs.mpv = { + enable = true; + config = { + + }; + }; + programs.yt-dlp = { + enable = true; + package = pkgs.yt-dlp_git; + }; + + home.packages = with pkgs; [ + # syncplay + syncplay-nogui + ffmpeg + imagemagick + ]; + }; +} diff --git a/hm/soft/nixcord.nix b/hm/soft/nixcord.nix new file mode 100644 index 0000000..4da3466 --- /dev/null +++ b/hm/soft/nixcord.nix @@ -0,0 +1,130 @@ +{ inputs, config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.soft.nixcord; +in +{ + imports = [ inputs.nixcord.homeModules.nixcord ]; + + options.szpont.hm.soft.nixcord.enable = lib.mkEnableOption "nixcord configuration"; + + config = lib.mkIf cfg.enable { + programs.nixcord = { + enable = true; + package = pkgs.discord-krisp; + discord = { + enable = true; + vencord.enable = false; + equicord.enable = true; + }; + config = { + frameless = true; + plugins = { + alwaysExpandRoles = { enable = true; hideArrow = true; }; + alwaysTrust = { enable = true; domain = false; }; + anammox.enable = true; + betterAudioPlayer.enable = true; + betterGifAltText.enable = true; + betterGifPicker.enable = true; + betterInvites.enable = true; + betterNotesBox = { enable = true; hide = true; }; + betterQuickReact = { enable = true; columns = 6.0; rows = 1.0; compactMode = true; }; + betterRoleContext.enable = true; + betterUploadButton.enable = true; + biggerStreamPreview.enable = true; + callTimer.enable = true; + characterCounter = { enable = true; colorEffects = false; }; + cleanChannelName.enable = true; + clearUrLs.enable = true; + copyFileContents.enable = true; + copyStickerLinks.enable = true; + crashHandler.enable = true; + customTimestamps.enable = true; + disableCallIdle.enable = true; + disableDeepLinks.enable = true; + dontRoundMyTimestamps.enable = true; + equicordHelper = { enable = true; noMirroredCamera = true; }; + expressionCloner.enable = true; + fakeNitro = { enable = true; enableEmojiBypass = false; enableStickerBypass = false; }; + favoriteEmojiFirst.enable = true; + fixCodeblockGap.enable = true; + fixFileExtensions.enable = true; + fixImagesQuality.enable = true; + fixSpotifyEmbeds.enable = true; + fixYoutubeEmbeds.enable = true; + forceOwnerCrown.enable = true; + friendsSince.enable = true; + fullSearchContext.enable = true; + fullUserInChatbox.enable = true; + gifCollections = { enable = true; preventDuplicates = true; showCopyImageLink = true; }; + gifRoulette = { enable = true; pingOwnerChance = true; }; + guildTagSettings.enable = true; + homeTyping.enable = true; + ignoreTerms.enable = true; + iLoveSpam.enable = true; + imageFilename.enable = true; + imageLink.enable = true; + imageZoom = { enable = true; nearestNeighbour = true; saveZoomValues = true; square = true; }; + imgToGif.enable = true; + inRole.enable = true; + inviteDefaults.enable = true; + memberCount.enable = true; + mentionAvatars = { enable = true; showAtSymbol = true; }; + messageLinkEmbeds.enable = true; + messageLogger = { enable = true; ignoreSelf = true; }; + moyai.enable = true; + musicControls.enable = true; + neverPausePreviews.enable = true; + newGuildSettings = { enable = true; messages = 1; }; + newPluginsManager.enable = true; + noF1.enable = true; + noMaskedUrlPaste.enable = true; + noModalAnimation.enable = true; + noNitroUpsell.enable = true; + noOnboardingDelay.enable = true; + noMosaic.enable = true; + noProfileThemes.enable = true; + noSystemBadge.enable = true; + noTypingAnimation.enable = true; + overrideForumDefaults = { enable = true; defaultLayout = 2; }; + onePingPerDm.enable = true; + openInApp.enable = true; + pauseInvitesForever.enable = true; + permissionFreeWill = { enable = true; lockout = false; }; + permissionsViewer.enable = true; + pinDMs = { enable = true; canCollapseDmSection = true; }; + pinIcon.enable = true; + platformIndicators.enable = true; + quoter.enable = true; + relationshipNotifier.enable = true; + roleColorEverywhere.enable = true; + saveFavoriteGiFs.enable = true; + sendTimestamps.enable = true; + serverInfo.enable = true; + showConnections.enable = true; + showHiddenChannels = { enable = true; }; + showHiddenThings.enable = true; + showResourceChannels.enable = true; + showTimeoutDuration.enable = true; + spotifyCrack = { enable = true; noSpotifyAutoPause = false; }; + streamerModeOnStream.enable = true; + typingIndicator = { enable = true; indicatorMode = 2; }; + typingTweaks.enable = true; + unindent.enable = true; + universalMention = { enable = true; globalMention = true; }; + unlimitedAccounts.enable = true; + unlockedAvatarZoom.enable = true; + userVoiceShow.enable = true; + validReply.enable = true; + validUser.enable = true; + viewIcons = { enable = true; format = "png"; }; + voiceMessages.enable = true; + volumeBooster.enable = true; + whoReacted.enable = true; + whosWatching.enable = true; + youtubeAdblock.enable = true; + youtubeDescription.enable = true; + }; + }; + }; + }; +} diff --git a/hm/soft/satty.nix b/hm/soft/satty.nix new file mode 100644 index 0000000..d3964a7 --- /dev/null +++ b/hm/soft/satty.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +let + cfg = config.szpont.hm.soft.satty; +in +{ + options.szpont.hm.soft.satty.enable = lib.mkEnableOption "enables satty image editor"; + + config = lib.mkIf cfg.enable { + programs.satty = { + enable = true; + }; + }; +} diff --git a/hm/soft/soft.nix b/hm/soft/soft.nix new file mode 100644 index 0000000..eb975ea --- /dev/null +++ b/hm/soft/soft.nix @@ -0,0 +1,15 @@ +{ ... }: +{ + imports = [ + ./awww.nix + ./easyeffects.nix + ./fuzzel.nix + ./gaming.nix + ./media.nix + ./nixcord.nix + ./satty.nix + ./spicetify.nix + ./swayidle.nix + ./swaylock.nix + ]; +} diff --git a/hm/soft/spicetify.nix b/hm/soft/spicetify.nix new file mode 100644 index 0000000..96c4d0d --- /dev/null +++ b/hm/soft/spicetify.nix @@ -0,0 +1,24 @@ +{ inputs, pkgs, config, lib, ... }: +let + cfg = config.szpont.hm.soft.spicetify; + spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.hostPlatform.system}; +in +{ + imports = [ inputs.spicetify-nix.homeManagerModules.default ]; + + options.szpont.hm.soft.spicetify.enable = lib.mkEnableOption "spicetify config"; + + config = lib.mkIf cfg.enable { + programs.spicetify = { + enable = true; + + enabledExtensions = with spicePkgs.extensions; [ + adblockify + hidePodcasts + ]; + + theme = spicePkgs.themes.catppuccin; + colorScheme = "mocha"; + }; + }; +} diff --git a/hm/soft/swayidle.nix b/hm/soft/swayidle.nix new file mode 100644 index 0000000..d06c74a --- /dev/null +++ b/hm/soft/swayidle.nix @@ -0,0 +1,13 @@ +{ config, lib, ... }: +let + cfg = config.szpont.hm.soft.swayidle; +in +{ + options.szpont.hm.soft.swayidle.enable = lib.mkEnableOption "enables swayidle"; + + config = lib.mkIf cfg.enable { + services.swayidle = { + enable = true; + }; + }; +} diff --git a/hm/soft/swaylock.nix b/hm/soft/swaylock.nix new file mode 100644 index 0000000..a303e48 --- /dev/null +++ b/hm/soft/swaylock.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.szpont.hm.soft.swaylock; +in +{ + options.szpont.hm.soft.swaylock.enable = lib.mkEnableOption "enables swaylock"; + + config = lib.mkIf cfg.enable { + programs.swaylock = { + enable = true; + package = pkgs.swaylock-effects; + }; + }; +} -- cgit v1.3