diff --git a/hosts/dragyx/flocke/configuration.nix b/hosts/dragyx/flocke/configuration.nix index 8e4f41d..c626128 100644 --- a/hosts/dragyx/flocke/configuration.nix +++ b/hosts/dragyx/flocke/configuration.nix @@ -5,6 +5,7 @@ ../../../options/common/pin-registry.nix ../../../options/common/preserve-system.nix ../../../options/desktop/fonts.nix + ./packages.nix ]; @@ -12,18 +13,16 @@ time.timeZone = "Europe/Zurich"; security.sudo.package = pkgs.sudo.override { withInsults = true; }; - services.xserver = { - enable = true; - displayManager = { + services.displayManager = { sessionPackages = [ pkgs.hyprland ]; # pkgs.gnome.gnome-session.sessions ]; defaultSession = "hyprland"; sddm = { enable = true; - }; + wayland.enable = true; }; - windowManager.hypr.enable = true; }; + hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = true; @@ -110,18 +109,22 @@ modules = { other = { - system = { + system = rec { hostname = "flocke"; username = "dragyx"; - monitors = { - name = "LaptopMain"; - resolution = { - x = 2256; - y = 1504; - }; - scale = 1.0; - refresh_rate = 60; - }; + gitPath = "/home/${username}/repos/nichts"; + monitors = [ + { + name = "LaptopMain"; + device = "eDP-1"; + resolution = { + x = 2256; + y = 1504; + }; + scale = 1.175; + refresh_rate = 60; + } + ]; }; home-manager = { enable = true; @@ -134,7 +137,7 @@ mpv.enable = true; schizofox.enable = true; obs.enable = true; - neovim.enable = true; + # neovim.enable = true; git = { enable = true; userName = "Dragyx"; diff --git a/hosts/dragyx/flocke/packages.nix b/hosts/dragyx/flocke/packages.nix index a4a4afe..4c43613 100644 --- a/hosts/dragyx/flocke/packages.nix +++ b/hosts/dragyx/flocke/packages.nix @@ -28,7 +28,7 @@ in android-tools signal-desktop nextcloud-client - etcher + # etcher vlc audacity thunderbird diff --git a/hosts/vali/mars/configuration.nix b/hosts/vali/mars/configuration.nix index f85230b..ada9ab0 100644 --- a/hosts/vali/mars/configuration.nix +++ b/hosts/vali/mars/configuration.nix @@ -1,11 +1,39 @@ { config, inputs, pkgs, ... }: { nixpkgs.config.allowUnfree = true; + # Time Zone time.timeZone = "Europe/Zurich"; + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; console.keyMap = "de"; + # enable flakes + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # reduce file size used & automatic garbage collector + nix.settings.auto-optimise-store = true; + nix.gc = { + automatic = true; + options = "--delete-older-than 14d"; + }; + # required for nix-direnv to work and have environments not garbage collected + nix.extraOptions = '' + keep-outputs = true + keep-derivations = true + ''; security.sudo.package = pkgs.sudo.override { withInsults = true; }; security.polkit.enable = true; programs.kdeconnect.enable = true; + services.mpd = { + enable = true; + musicDirectory = "/home/vali/Nextcloud/Media/Music/"; + startWhenNeeded = true; + extraConfig = '' + audio_output { + type "pipewire" + name "My PipeWire Output" + } + ''; + }; modules = { other = { system = { @@ -20,6 +48,7 @@ }; programs = { vesktop.enable = true; + ncmpcpp.enable = true; ssh.enable = true; btop.enable = true; mpv.enable = true; diff --git a/hosts/vali/mars/default.nix b/hosts/vali/mars/default.nix index 1549554..360094d 100644 --- a/hosts/vali/mars/default.nix +++ b/hosts/vali/mars/default.nix @@ -4,8 +4,6 @@ _: { ./programs.nix ./hardware-configuration.nix ./profile.nix - ./i3.nix - ./awesome.nix - ./hypr/default.nix + ./i3 ]; } diff --git a/hosts/vali/mars/i3/config b/hosts/vali/mars/i3/config new file mode 100644 index 0000000..00e5016 --- /dev/null +++ b/hosts/vali/mars/i3/config @@ -0,0 +1,190 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see https://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:monospace 12 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Start XDG autostart .desktop files using dex. See also +# https://wiki.archlinux.org/index.php/XDG_Autostart +exec --no-startup-id dex --autostart --environment i3 +exec --no-startup-id xrandr --output HDMI-1 --rotate normal --output DP-2 --rotate normal --left-of HDMI-1 --output HDMI-0 --right-of HDMI-1 +# The combination of xss-lock, nm-applet and pactl is a popular choice, so +# they are included here as an example. Modify as you see fit. + +# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the +# screen before suspend. Use loginctl lock-session to lock your screen. +exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork + +# NetworkManager is the most popular way to manage wireless networks on Linux, +# and nm-applet is a desktop environment-independent system tray GUI for it. +exec --no-startup-id nm-applet + +# Use pactl to adjust volume in PulseAudio. +set $refresh_i3status killall -SIGUSR1 i3status +bindsym 123 exec --no-startup-id wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+ && $refresh_i3status +bindsym 122 exec --no-startup-id wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+ && $refresh_i3status +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status +bindsym 198 exec --no-startup-id pamixer --default-source -t && $refresh_i3status + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# move tiling windows via drag & drop by left-clicking into the title bar, +# or left-clicking anywhere into the window while holding the floating modifier. +tiling_drag modifier titlebar + +# start a terminal +bindsym $mod+Return exec --no-startup-id alacritty + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +bindsym $mod+d exec --no-startup-id dmenu_run +# A more modern dmenu replacement is rofi: +# There also is i3-dmenu-desktop which only displays applications shipping a +# .desktop file. It is a wrapper around dmenu, so you need that installed. +# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+x split h + +# split in vertical orientation +bindsym $mod+y split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+w layout tabbed +bindsym $mod+s layout splith + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child +default_border pixel 3 +#smart_borders on +hide_edge_borders smart_no_gaps +# Define names for default workspaces for which we configure key bindings later on. +# We use variables to avoid repeating the names in multiple places. +set $ws1 "1" +set $ws2 "2" +set $ws3 "3" +set $ws4 "4" +set $ws5 "5" +set $ws6 "6" +set $ws7 "7" +set $ws8 "8" +set $ws9 "9" +set $ws10 "10" + +# switch to workspace +bindsym $mod+1 workspace number $ws1 +bindsym $mod+2 workspace number $ws2 +bindsym $mod+3 workspace number $ws3 +bindsym $mod+4 workspace number $ws4 +bindsym $mod+5 workspace number $ws5 +bindsym $mod+6 workspace number $ws6 +bindsym $mod+7 workspace number $ws7 +bindsym $mod+8 workspace number $ws8 +bindsym $mod+9 workspace number $ws9 +bindsym $mod+0 workspace number $ws10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace number $ws1 +bindsym $mod+Shift+2 move container to workspace number $ws2 +bindsym $mod+Shift+3 move container to workspace number $ws3 +bindsym $mod+Shift+4 move container to workspace number $ws4 +bindsym $mod+Shift+5 move container to workspace number $ws5 +bindsym $mod+Shift+6 move container to workspace number $ws6 +bindsym $mod+Shift+7 move container to workspace number $ws7 +bindsym $mod+Shift+8 move container to workspace number $ws8 +bindsym $mod+Shift+9 move container to workspace number $ws9 +bindsym $mod+Shift+0 move container to workspace number $ws10 + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'xfce-session-logout'" + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym l resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym j resize shrink height 10 px or 10 ppt + bindsym h resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape or $mod+r + bindsym Return mode "default" + bindsym Escape mode "default" + bindsym $mod+r mode "default" +} + +bindsym $mod+r mode "resize" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status +} diff --git a/hosts/vali/mars/i3/default.nix b/hosts/vali/mars/i3/default.nix new file mode 100644 index 0000000..f7480f7 --- /dev/null +++ b/hosts/vali/mars/i3/default.nix @@ -0,0 +1,6 @@ +_: { + imports = [ + ./i3.nix + # ./i3-new.nix + ]; +} diff --git a/hosts/vali/mars/i3/i3-new.nix b/hosts/vali/mars/i3/i3-new.nix new file mode 100644 index 0000000..28bdab4 --- /dev/null +++ b/hosts/vali/mars/i3/i3-new.nix @@ -0,0 +1,68 @@ +{pkgs, lib, config, ... }: +with lib; let + cfg = config.modules.programs.i3; + username = config.modules.other.system.username; + mod = "Mod4"; +in { + options.modules.programs.i3.enable = mkEnableOption "i3"; + + config = mkIf cfg.enable { + services.xserver = { + enable = true; + xkb.layout = "de"; + }; + xsession.windowManager.i3 = { + enable = true; + config = { + modifier = mod; + terminal = "alacritty"; + fonts ={ + names = [ "JetBrains Mono" "pango:monospace"]; + size = 12; + style = "Bold Semi-Condensed"; + }; + keybindings = lib.mkOptionDefault { + # Run stuff + "${mod}+d" = "exec --no-startup-id ${pkgs.dmenu}/bin/dmenu_run"; + "${mod}+Return" = "exec --no-startup-id alacritty"; + "${mod}+Shift+q" = "kill"; + # Focus + "${mod}+h" = "focus left"; + "${mod}+j" = "focus down"; + "${mod}+k" = "focus up"; + "${mod}+l" = "focus right"; + # Move + "${mod}+Shift+h" = "move left"; + "${mod}+Shift+j" = "move down"; + "${mod}+Shift+k" = "move up"; + "${mod}+Shift+l" = "move right"; + "XF86RaiseVolume" = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ && $refresh_i3status"; + # Toggle stuff + "${mod}+f" = "fullscreen toggle"; + }; + window = { + titlebar = false; + border = 3; + hideEdgeBorders = true; + }; + floating = { + titlebar = false; + }; + bars = [ + { + position = "bottom"; + statusCommand = "${pkgs.i3status}/bin/i3status"; + } + ]; + startup ={ + command = + "xrandr --output HDMI-1 --rotate normal --output DP-2 --rotate normal --left-of HDMI-1 --output HDMI-0 --right-of HDMI-1"; + #"dex --autostart --environment i3"; + #"nm-applet"; + #"keepassxc"; + }; + }; + }; + }; +} + diff --git a/hosts/vali/mars/i3.nix b/hosts/vali/mars/i3/i3.nix similarity index 51% rename from hosts/vali/mars/i3.nix rename to hosts/vali/mars/i3/i3.nix index be3805e..9e16066 100644 --- a/hosts/vali/mars/i3.nix +++ b/hosts/vali/mars/i3/i3.nix @@ -1,10 +1,12 @@ { pkgs, lib, config, callPackage, ... }: with lib; let + username = config.modules.other.system.username; cfg = config.modules.programs.i3; in { options.modules.programs.i3.enable = mkEnableOption "i3"; config = mkIf cfg.enable { + home-manager.users.${username}.xdg.configFile."i3/config".source = ./config; services.xserver = { enable = true; xkb.layout = "de"; @@ -14,13 +16,6 @@ in { displayManager = { gdm.enable = true; defaultSession = "none+i3"; - setupCommands = '' - LEFT='DP-2' - CENTER='HDMI-1' - RIGHT='HDMI-0' - ${pkgs.xorg.xrandr}/bin/xrandr --output $CENTER --rotate left --output $LEFT --rotate left --left-of $CENTER --output $RIGHT --right-of $CENTER - ''; -# ❯ xrandr --output HDMI-1 --rotate normal --output DP-2 --rotate normal --left-of HDMI-1 --output HDMI-0 --right-of HDMI-1 }; }; }; diff --git a/hosts/vali/mars/i3/polybar.sh b/hosts/vali/mars/i3/polybar.sh new file mode 100644 index 0000000..e69de29 diff --git a/hosts/vali/mars/profile.nix b/hosts/vali/mars/profile.nix index ded3887..26bce2e 100644 --- a/hosts/vali/mars/profile.nix +++ b/hosts/vali/mars/profile.nix @@ -5,8 +5,8 @@ _: { ../../../options/common/networking.nix ../../../options/common/gpu/nvidia.nix # ../../../overlay.nix -# ../../options/common/pin-registry.nix -# ../../options/common/preserve-system.nix + ../../../options/common/pin-registry.nix + ../../../options/common/preserve-system.nix #../../options/ ]; } diff --git a/hosts/vali/mars/programs.nix b/hosts/vali/mars/programs.nix index 7b6806c..9c9fb41 100644 --- a/hosts/vali/mars/programs.nix +++ b/hosts/vali/mars/programs.nix @@ -1,23 +1,18 @@ { config, inputs, pkgs, ... }: let + fenix = inputs.fenix.packages.${pkgs.system}; username = config.modules.other.system.username; in { - home-manager.users.${username} = { - home.packages = let - fenix = inputs.fenix.packages.${pkgs.system}; - - in with pkgs; [ + environment.systemPackages = with pkgs; [ alacritty alsa-utils asciinema - betterbird +# betterbird bibata-cursors - chromium dig easyeffects element-desktop eza - ripgrep fastfetch (fenix.complete.withComponents [ "cargo" @@ -27,6 +22,7 @@ in { "rustfmt" ]) ffmpeg_6-full + flameshot foot gcc gdb @@ -38,6 +34,8 @@ in { krita lazygit libreoffice-fresh + moc + ncmpcpp neofetch neovim networkmanagerapplet @@ -46,17 +44,21 @@ in { pavucontrol pcmanfm pfetch + playerctl polkit python3 qbittorrent + ripgrep rustdesk + rofi scc sherlock signal-desktop-beta smartmontools + spotube st steam - strawberry-qt6 + strawberry telegram-desktop texliveFull thunderbird @@ -72,5 +74,4 @@ in { zathura zip ]; - }; } diff --git a/hosts/vali/mars/temp b/hosts/vali/mars/temp new file mode 100644 index 0000000..e2d9650 --- /dev/null +++ b/hosts/vali/mars/temp @@ -0,0 +1,78 @@ +{ config, inputs, pkgs, ... }: +let + username = config.myOptions.other.system.username; +in { + home-manager.users.${username} = { + home.packages = let + fenix = inputs.fenix.packages.${pkgs.system}; + + in with pkgs; [ + alacritty + alsa-utils + asciinema + betterbird + bibata-cursors + dig + easyeffects + element-desktop + eza + fastfetch + (fenix.complete.withComponents [ + "cargo" + "clippy" + "rust-src" + "rustc" + "rustfmt" + ]) + ffmpeg_6-full + flameshot + foot + gcc + gdb + grimblast + git + httpie + imagemagick + keepassxc + krita + lazygit + libreoffice-fresh + neofetch + neovim + networkmanagerapplet + nextcloud-client + pamixer + pavucontrol + pcmanfm + pfetch + playerctl + polkit + python3 + qbittorrent + ripgrep + rustdesk + rofi + scc + sherlock + signal-desktop-beta + smartmontools + st + steam + strawberry.strawberry-wrapped + telegram-desktop + texliveFull + thunderbird + tor-browser-bundle-bin + trash-cli + tree + unzip + ventoy-full + vesktop + vlc + xclip + yt-dlp + zathura + zip + ]; + }; +} diff --git a/modules/cli/default.nix b/modules/cli/default.nix index 1e43012..117462f 100644 --- a/modules/cli/default.nix +++ b/modules/cli/default.nix @@ -3,5 +3,6 @@ _: { ./git.nix ./starship.nix ./zsh.nix + ./neovim.nix ]; } diff --git a/modules/cli/neovim.nix b/modules/cli/neovim.nix new file mode 100644 index 0000000..1b4b503 --- /dev/null +++ b/modules/cli/neovim.nix @@ -0,0 +1,35 @@ +{ config, lib, pkgs, ... }: + +let + lazyvim-config = pkgs.fetchFromGitHub { + owner = "Dragyx"; + repo = "lazyvim-config"; + rev = "d799724f48199d81ca6c8abb5951860fbf8fa0df"; + hash = "sha256-NF92CweRFQ1qZS8NXoTUEljazRGXgXS2AuDt5IWmwBc="; + }; + cfg = config.modules.programs.neovim-old; + username = config.modules.other.system.username; +in +{ + options.modules.programs.neovim-old.enable = lib.mkEnableOption "neovim-old"; + + config = lib.mkIf cfg.enable { + home-manager.users.${username} = { + home.packages = with pkgs; [ lazygit ripgrep fd gcc xclip rust-analyzer ]; + programs.neovim = { + enable = true; + viAlias = true; + vimAlias = true; + defaultEditor = true; + }; + + xdg.configFile."nvim" = { + enable = true; + source = lazyvim-config; + recursive = true; + }; + }; + + + }; +} diff --git a/modules/gui/WM/hyprland.nix b/modules/gui/WM/hyprland.nix index c65b784..a3a45ae 100644 --- a/modules/gui/WM/hyprland.nix +++ b/modules/gui/WM/hyprland.nix @@ -15,12 +15,9 @@ in config = mkIf cfg.enable { programs.xwayland.enable = true; - /* programs.hyprland = { - enable = true; - xwayland = true; + enable = true; }; - */ services.gnome.gnome-keyring.enable = mkDefault cfg.gnome-keyring; systemd.user.services.polkit-gnome-authentication-agent-1 = mkIf cfg.gnome-keyring { description = "polkit-gnome-authentication-agent-1"; @@ -48,15 +45,8 @@ in dunst # wireplumber - unstable.xwayland + xwayland pciutils # lspci is needed by hyprland - # from some obscure tutorial on youtube - # xorg.libxcb - # mesa - libglvnd - egl-wayland - libdrm - vulkan-tools dunst swww flameshot @@ -66,15 +56,20 @@ in wl-clipboard ]; - programs.hyprland = { + wayland.windowManager.hyprland = { enable = true; + systemd.enable = true; + xwayland.enable = true; settings = { - exec-once = mkIf cfg.gnome-keyring "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + exec-once = [ + "waybar" + ] ++ (if cfg.gnome-keyring then ["${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"] + else []); monitor = map ( - m: "${m.device},${m.resolution.x}x${m.resolution.y}@${m.refresh_rate},${m.position.x}x${m.position.y},${m.scale},transform,${m.transform}" + m: "${m.device},${builtins.toString m.resolution.x}x${builtins.toString m.resolution.y}@${builtins.toString m.refresh_rate},${builtins.toString m.position.x}x${builtins.toString m.position.y},${builtins.toString m.scale},transform,${builtins.toString m.transform}" ) monitors; #TODO: default value input = { - kb_layout = console.keyMap; + kb_layout = "us"; natural_scroll = true; sensitivity = 0; }; @@ -82,9 +77,9 @@ in gaps_in = 2; gaps_out = 1; border_size = 1; - col.active_border = "rgba(33ccffee) rgba(00ff99ee) 45deg"; - col.inactive_border = "rgba(595959aa)"; - layout = dwindle; + "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + "col.inactive_border" = "rgba(595959aa)"; + layout = "dwindle"; }; decoration.rounding = 5; misc.disable_hyprland_logo = true; @@ -106,77 +101,76 @@ in gestures.workspace_swipe = true; debug.enable_stdout_logs = true; bind = [ + # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more + "SUPER, RETURN, exec, alacritty" + "SUPER SHIFT, RETURN, exec, rofi -show drun" + "SUPER SHIFT, Q, killactive," + "SUPER, M, exit, " + "SUPER, B, exec, firefox" + "SUPER, f, fullscreen" + "SUPER, E, exec, nautilus --new-window " + "SUPER, V, togglefloating, " + "SUPER, P, pseudo, # dwindle" + "SUPER, S, togglesplit, # dwindle" + "SUPER, C, exec, /home/vali/.config/wallpaper/colorscheme-setter" + ",PRINT, exec, flameshot" - - # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more - "SUPER, RETURN, exec, alacritty" - "SUPER SHIFT, RETURN, exec, rofi -show drun" - "SUPER SHIFT, Q, killactive," - "SUPER, M, exit, " - "SUPER, B, exec, firefox" - "SUPER, f, fullscreen" - "SUPER, E, exec, nautilus --new-window " - "SUPER, V, togglefloating, " - "SUPER, P, pseudo, # dwindle" - "SUPER, S, togglesplit, # dwindle" - "SUPER, C, exec, /home/vali/.config/wallpaper/colorscheme-setter" - ",PRINT, exec, flameshot" - - "binde = ,XF86MonBrightnessUp, exec, brightnessctl set 10%+" - "binde = ,XF86MonBrightnessDown, exec, brightnessctl set 10%-" - - # Example volume button that allows press and hold, volume limited to 150%" - "binde = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" - # Example volume button that will activate even while an input inhibitor is active" - "binde = ,XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" - ",XF86AudioMute, exec, $ wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - - # Move focus with mainMod + arrow keys" - "SUPER, h, movefocus, l" - "SUPER, l, movefocus, r" - "SUPER, k, movefocus, u" - "SUPER, j, movefocus, d" - - # move window to next / previous workspace" - "SUPER CTRL, h, movetoworkspace, -1" - "SUPER CTRL, l, movetoworkspace, +1" - - # move to next / previous workspace" - "SUPER CTRL, h, workspace, -1" - "SUPER CTRL, l, workspace, +1" - - - # Switch workspaces with mainMod + [0-9]" - "SUPER, 1, workspace, 1" - "SUPER, 2, workspace, 2" - "SUPER, 3, workspace, 3" - "SUPER, 4, workspace, 4" - "SUPER, 5, workspace, 5" - "SUPER, 6, workspace, 6" - "SUPER, 7, workspace, 7" - "SUPER, 8, workspace, 8" - "SUPER, 9, workspace, 9" - "SUPER, 0, workspace, 10" - - # Move active window to a workspace with mainMod + SHIFT + [0-9]" - "SUPER SHIFT, 1, movetoworkspace, 1" - "SUPER SHIFT, 2, movetoworkspace, 2" - "SUPER SHIFT, 3, movetoworkspace, 3" - "SUPER SHIFT, 4, movetoworkspace, 4" - "SUPER SHIFT, 5, movetoworkspace, 5" - "SUPER SHIFT, 6, movetoworkspace, 6" - "SUPER SHIFT, 7, movetoworkspace, 7" - "SUPER SHIFT, 8, movetoworkspace, 8" - "SUPER SHIFT, 9, movetoworkspace, 9" - "SUPER SHIFT, 0, movetoworkspace, 10" - - # Scroll through existing workspaces with mainMod + scroll" - "SUPER, mouse_down, workspace, e+1" - "SUPER, mouse_up, workspace, e-1" - " - # Move/resize windows with mainMod + LMB/RMB and dragging" - #bindm = SUPER, mouse:272, movewindow" - #bindm = SUPER, mouse:273, resizewindow" + + # Move focus with mainMod + arrow keys" + "SUPER, h, movefocus, l" + "SUPER, l, movefocus, r" + "SUPER, k, movefocus, u" + "SUPER, j, movefocus, d" + + # move window to next / previous workspace" + "SUPER CTRL, h, movetoworkspace, -1" + "SUPER CTRL, l, movetoworkspace, +1" + + # move to next / previous workspace" + "SUPER CTRL, h, workspace, -1" + "SUPER CTRL, l, workspace, +1" + + + # Switch workspaces with mainMod + [0-9]" + "SUPER, 1, workspace, 1" + "SUPER, 2, workspace, 2" + "SUPER, 3, workspace, 3" + "SUPER, 4, workspace, 4" + "SUPER, 5, workspace, 5" + "SUPER, 6, workspace, 6" + "SUPER, 7, workspace, 7" + "SUPER, 8, workspace, 8" + "SUPER, 9, workspace, 9" + "SUPER, 0, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9]" + "SUPER SHIFT, 1, movetoworkspace, 1" + "SUPER SHIFT, 2, movetoworkspace, 2" + "SUPER SHIFT, 3, movetoworkspace, 3" + "SUPER SHIFT, 4, movetoworkspace, 4" + "SUPER SHIFT, 5, movetoworkspace, 5" + "SUPER SHIFT, 6, movetoworkspace, 6" + "SUPER SHIFT, 7, movetoworkspace, 7" + "SUPER SHIFT, 8, movetoworkspace, 8" + "SUPER SHIFT, 9, movetoworkspace, 9" + "SUPER SHIFT, 0, movetoworkspace, 10" + + # Scroll through existing workspaces with mainMod + scroll" + "SUPER, mouse_down, workspace, e+1" + "SUPER, mouse_up, workspace, e-1" + + # Move/resize windows with mainMod + LMB/RMB and dragging + "SUPER, mouse:272, movewindow" + # "bindm = SUPER, mouse:273, resizewindow" + ]; + binde = [ + ",XF86MonBrightnessUp, exec, brightnessctl set 10%+" + ",XF86MonBrightnessDown, exec, brightnessctl set 10%-" + # Example volume button that allows press and hold, volume limited to 150%" + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" + # Example volume button that will activate even while an input inhibitor is active" + ",XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, $ wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ]; }; }; diff --git a/modules/gui/qt.nix b/modules/gui/qt.nix index eac9ef2..40f14e1 100644 --- a/modules/gui/qt.nix +++ b/modules/gui/qt.nix @@ -58,8 +58,8 @@ in { sessionVariables = { #QT_STYLE_OVERRIDE = "kvantum"; QT_AUTO_SCREEN_SCALE_FACTOR = "1"; - QT_QPA_PLATFORM = "wayland;xcb"; - QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; +# QT_QPA_PLATFORM = "wayland;xcb"; +# QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; DISABLE_QT_COMPAT = "0"; }; }; diff --git a/modules/gui/rofi.nix b/modules/gui/rofi.nix new file mode 100644 index 0000000..e69de29 diff --git a/modules/gui/schizofox.nix b/modules/gui/schizofox.nix index 9727041..63cb67d 100644 --- a/modules/gui/schizofox.nix +++ b/modules/gui/schizofox.nix @@ -10,90 +10,78 @@ in { config = mkIf cfg.enable { home-manager.users.${username} = { imports = [ inputs.schizofox.homeManagerModule ]; - programs.schizofox = { enable = true; + theme = { - colors.background-darker = "181825"; - colors.background = "1e1e2e"; - colors.foreground = "cdd6f4"; - font = "Lexend"; - extraUserChrome = '' - body { - color: red !important; - } - ''; - }; - extensions = { - simplefox.enable = false; - darkreader.enable = true; + colors = { + background-darker = "181825"; + background = "1e1e2e"; + foreground = "cdd6f4"; + }; + + font = "Lexend"; + + extraUserChrome = '' + body { + color: red !important; + } + ''; }; + search = { - defaultSearchEngine = "Brave"; - removeEngines = ["Google" "Bing" "Amazon.com" "eBay" "Twitter" "Wikipedia"]; - addEngines = [ - { - Name = "NixOS Packages"; - Description = "NixOS Unstable package search"; - Alias = "!np"; - Method = "GET"; - URLTemplate = "https://search.nixos.org/packages?channel=unstable&query={searchTerms}"; - } - { - Name = "NixOS Options"; - Description = "NixOS Unstable option search"; - Alias = "!no"; - Method = "GET"; - URLTemplate = "https://search.nixos.org/options?channel=unstable&query={searchTerms}"; - } - { - Name = "NixOS Wiki"; - Description = "NixOS Wiki search"; - Alias = "!nw"; - Method = "GET"; - URLTemplate = "https://nixos.wiki/index.php?search={searchTerms}"; - } - { - Name = "Home Manager Options"; - Description = "Home Manager option search"; - Alias = "!hm"; - Method = "GET"; - URLTemplate = "https://mipmip.github.io/home-manager-option-search?query={searchTerms}"; - } - { - Name = "Arch Wiki"; - Description = "Arch Wiki search"; - Alias = "!aw"; - Method = "GET"; - URLTemplate = "https://wiki.archlinux.org/index.php?search={searchTerms}"; - } - { - Name = "Gentoo Wiki"; - Description = "Gentoo Wiki search"; - Alias = "!gw"; - Method = "GET"; - URLTemplate = "https://wiki.gentoo.org/index.php?search={searchTerms}"; - } - { - Name = "Debian Wiki"; - Description = "Debian Wiki search"; - Alias = "!dw"; - Method = "GET"; - URLTemplate = "https://wiki.debian.org/FrontPage?action=fullsearch&value={searchTerms}"; - } - ]; + defaultSearchEngine = "Brave"; + removeEngines = ["Google" "Bing" "Amazon.com" "eBay" "Twitter" "Wikipedia"]; + searxUrl = "https://searx.be"; + searxQuery = "https://searx.be/search?q={searchTerms}&categories=general"; + addEngines = [ + { + Name = "NixOS Packages"; + Description = "NixOS Unstable package serach"; + Alias = "!np"; + Method = "GET"; + URLTemplate = "https://search.nixos.org/packages?channel=unstable&query={searchTerms}"; + } + { + Name = "Home Manager Options"; + Description = "Home Manager option search"; + Alias = "!hm"; + Method = "GET"; + URLTemplate = "https://mipmip.github.io/home-manager-option-search?query={searchTerms}"; + } + + ]; }; security = { - sanitizeOnShutdown = true; - sandbox = true; - userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0"; + sanitizeOnShutdown = false; + sandbox = true; + userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0"; }; misc = { - drmFix = false; - disableWebgl = true; + drmFix = true; + disableWebgl = false; }; + + extensions = { + simplefox.enable = true; + darkreader.enable = true; + + extraExtensions = { + "webextension@metamask.io".install_url = "https://addons.mozilla.org/firefox/downloads/latest/ether-metamask/latest.xpi"; + }; + }; + + bookmarks = [ + { + Title = "Example"; + URL = "https://example.com"; + Favicon = "https://example.com/favicon.ico"; + Placement = "toolbar"; + Folder = "FolderName"; + } + ]; }; }; }; diff --git a/modules/gui/vesktop.nix b/modules/gui/vesktop.nix index 044ec77..a209062 100644 --- a/modules/gui/vesktop.nix +++ b/modules/gui/vesktop.nix @@ -13,6 +13,7 @@ in { config = mkIf cfg.enable { home-manager.users.${username} = { + home.packages = with pkgs; [ vesktop ]; xdg.configFile."vesktop/settings.json".text = builtins.toJSON { discordBranch = "ptb"; firstLaunch = false; diff --git a/modules/other/xdg.nix b/modules/other/xdg.nix index ac53692..36a32b8 100644 --- a/modules/other/xdg.nix +++ b/modules/other/xdg.nix @@ -5,9 +5,8 @@ username = config.modules.other.system.username; hmCfg = config.home-manager.users.${username}; - primary_browser = "firefox-schizo.desktop"; - secondary_browser = "firefox-unschizo.desktop"; - mail_client = "betterbird.desktop"; + primary_browser = "schizofox.desktop"; + mail_client = "thunderbird.desktop"; file_manager = "pcmanfm.desktop"; media_player = "mpv.desktop"; image_viewer = "imv.desktop"; @@ -73,11 +72,11 @@ in { mimeApps = { enable = true; defaultApplications = { - "text/html" = [ primary_browser secondary_browser ]; - "x-scheme-handler/http" = [ primary_browser secondary_browser ]; - "x-scheme-handler/https" = [ primary_browser secondary_browser ]; - "x-scheme-handler/about" = [ primary_browser secondary_browser ]; - "x-scheme-handler/unknown" = [ primary_browser secondary_browser ]; + "text/html" = [ primary_browser ]; + "x-scheme-handler/http" = [ primary_browser ]; + "x-scheme-handler/https" = [ primary_browser ]; + "x-scheme-handler/about" = [ primary_browser ]; + "x-scheme-handler/unknown" = [ primary_browser ]; "x-scheme-handler/mailto" = [ mail_client ]; "message/rfc822" = [ mail_client ]; "x-scheme-handler/mid" = [ mail_client ]; diff --git a/modules/services/ssh.nix b/modules/services/ssh.nix index 621a741..b44d94b 100644 --- a/modules/services/ssh.nix +++ b/modules/services/ssh.nix @@ -1,9 +1,9 @@ { config, lib, pkgs, ... }: with lib; let - cfg = config.myOptions.programs.ssh; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.ssh; + username = config.modules.other.system.username; in { - options.myOptions.programs.ssh.enable = mkEnableOption "ssh"; + options.modules.programs.ssh.enable = mkEnableOption "ssh"; config = mkIf cfg.enable { programs.ssh = { diff --git a/modules/tui/config b/modules/tui/config new file mode 100644 index 0000000..e62ec46 --- /dev/null +++ b/modules/tui/config @@ -0,0 +1,598 @@ +############################################################## +## This is an example configuration file. Copy it to ## +## $XDG_CONFIG_HOME/ncmpcpp/config or $HOME/.ncmpcpp/config ## +## and set up your preferences. ## +############################################################## +# +##### directories ###### +## +## Directory for storing ncmpcpp related files. Changing it is useful if you +## want to store everything somewhere else and provide command line setting for +## alternative location to config file which defines that while launching +## ncmpcpp. +## +# +ncmpcpp_directory = ~/.config/ncmpcpp +# +## +## Directory for storing downloaded lyrics. It defaults to ~/.lyrics since other +## MPD clients (eg. ncmpc) also use that location. +## +# +#lyrics_directory = ~/.lyrics +# +##### connection settings ##### +# +#mpd_host = localhost +# +mpd_port = 6600 +# +mpd_connection_timeout = 5 +# +## Needed for tag editor and file operations to work. +## +mpd_music_dir = ~/Nextcloud/Media/Music +# +#mpd_crossfade_time = 5 +# +# Exclude pattern for random song action +# http://www.boost.org/doc/libs/1_46_1/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html +#random_exclude_pattern = "^(temp|midi_songs).*" +# +##### music visualizer ##### +## +## In order to make music visualizer work with MPD you need to use the fifo +## output. Its format parameter has to be set to 44100:16:1 for mono +## visualization or 44100:16:2 for stereo visualization. As an example here is +## the relevant section for mpd.conf: +## +## audio_output { +## type "fifo" +## name "Visualizer feed" +## path "/tmp/mpd.fifo" +## format "44100:16:2" +## } +## +## If the visualization on occasion diverges from the audio output, please set +## 'buffer_time' parameter of your audio output in mpd.conf to '100000' (100ms) +## or less to prevent that from happening. +## +## Note: If you're using Mopidy, an address of a udpsink gstreamer's output is +## also accepted. For example, the following section in mopidy.conf: +## +## [audio] +## output = tee name=t ! queue ! autoaudiosink t. +## ! queue ! audio/x-raw,rate=44100,channels=2,format=S16LE +## ! udpsink host=localhost port=5555 +## +## will make localhost:5555 available as a source of data for the stereo +## visualizer. +## +# +visualizer_data_source = /tmp/mpd.fifo +# +## +## Note: Below parameter is needed for ncmpcpp to determine which output +## provides data for visualizer and reset it at the beginning of visualization +## to synchronize with audio. +## +# +visualizer_output_name = Visualizer feed +# +## +## If you set format to 44100:16:2, make it 'yes'. +## +visualizer_in_stereo = yes +# +## +## Note: set below to >=10 only if you have synchronization issues with +## visualization and audio. +## +# +visualizer_sync_interval = 0 +# +## +## Note: To enable spectrum frequency visualization you need to compile ncmpcpp +## with fftw3 support. +## +# +## Available values: spectrum, wave, wave_filled, ellipse. +## +visualizer_type = wave_filled +# +visualizer_fps = 60 +# +visualizer_autoscale = no +# +visualizer_look = ●▮ +# +visualizer_color = blue, cyan, green, yellow, magenta, red +# +## Alternative subset of 256 colors for terminals that support it. +## +#visualizer_color = 47, 83, 119, 155, 191, 227, 221, 215, 209, 203, 197, 161 +# +## +## Note: The next few visualization options apply to the spectrum visualizer. +## +# +## Use unicode block characters for a smoother, more continuous look. +## This will override the visualizer_look option. With transparent terminals +## and visualizer_in_stereo set, artifacts may be visible on the bottom half of +## the visualization. +# +visualizer_spectrum_smooth_look = yes +# +## A value between 1 and 5 inclusive. Specifying a larger value makes the +## visualizer look at a larger slice of time, which results in less jumpy +## visualizer output. +# +#visualizer_spectrum_dft_size = 2 +# +#visualizer_spectrum_gain = 10 +# +## Left-most frequency of visualizer in Hz, must be less than HZ MAX +# +#visualizer_spectrum_hz_min = 20 +# +## Right-most frequency of visualizer in Hz, must be greater than HZ MIN +# +#visualizer_spectrum_hz_max = 20000 +# +##### system encoding ##### +## +## ncmpcpp should detect your charset encoding but if it failed to do so, you +## can specify charset encoding you are using here. +## +## Note: You can see whether your ncmpcpp build supports charset detection by +## checking output of `ncmpcpp --version`. +## +## Note: Since MPD uses UTF-8 by default, setting this option makes sense only +## if your encoding is different. +## +# +#system_encoding = "" +# +##### delays ##### +# +## Time of inactivity (in seconds) after playlist highlighting will be disabled +## (0 = always on). +## +#playlist_disable_highlight_delay = 5 +# +## Defines how long messages are supposed to be visible. +## +#message_delay_time = 5 +# +##### song format ##### +## +## For a song format you can use: +## +## %l - length +## %f - filename +## %D - directory +## %a - artist +## %A - album artist +## %t - title +## %b - album +## %y - date +## %n - track number (01/12 -> 01) +## %N - full track info (01/12 -> 01/12) +## %g - genre +## %c - composer +## %p - performer +## %d - disc +## %C - comment +## %P - priority +## $R - begin right alignment +## +## If you want to make sure that a part of the format is displayed only when +## certain tags are present, you can archieve it by grouping them with brackets, +## e.g. '{%a - %t}' will be evaluated to 'ARTIST - TITLE' if both tags are +## present or '' otherwise. It is also possible to define a list of +## alternatives by providing several groups and separating them with '|', +## e.g. '{%t}|{%f}' will be evaluated to 'TITLE' or 'FILENAME' if the former is +## not present. +## +## Note: If you want to set limit on maximal length of a tag, just put the +## appropriate number between % and character that defines tag type, e.g. to +## make album take max. 20 terminal cells, use '%20b'. +## +## In addition, formats support markers used for text attributes. They are +## followed by character '$'. After that you can put: +## +## - 0 - default window color (discards all other colors) +## - 1 - black +## - 2 - red +## - 3 - green +## - 4 - yellow +## - 5 - blue +## - 6 - magenta +## - 7 - cyan +## - 8 - white +## - 9 - end of current color +## - b - bold text +## - u - underline text +## - r - reverse colors +## - a - use alternative character set +## +## If you don't want to use a non-color attribute anymore, just put it again, +## but this time insert character '/' between '$' and attribute character, +## e.g. {$b%t$/b}|{$r%f$/r} will display bolded title tag or filename with +## reversed colors. +## +## If you want to use 256 colors and/or background colors in formats (the naming +## scheme is described below in section about color definitions), it can be done +## with the syntax $(COLOR), e.g. to set the artist tag to one of the +## non-standard colors and make it have yellow background, you need to write +## $(197_yellow)%a$(end). Note that for standard colors this is interchangable +## with attributes listed above. +## +## Note: colors can be nested. +## +# +#song_list_format = {%a - }{%t}|{$8%f$9}$R{$3%l$9} +# +#song_status_format = {{%a{ "%b"{ (%y)}} - }{%t}}|{%f} +# +#song_library_format = {%n - }{%t}|{%f} +# +#alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b +# +#alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D} +# +#current_item_prefix = $(yellow)$r +# +#current_item_suffix = $/r$(end) +# +#current_item_inactive_column_prefix = $(white)$r +# +#current_item_inactive_column_suffix = $/r$(end) +# +#now_playing_prefix = $b +# +#now_playing_suffix = $/b +# +#browser_playlist_prefix = "$2playlist$9 " +# +#selected_item_prefix = $6 +# +#selected_item_suffix = $9 +# +#modified_item_prefix = $3> $9 +# +## +## Note: attributes are not supported for the following variables. +## +#song_window_title_format = {%a - }{%t}|{%f} +## +## Note: Below variables are used for sorting songs in browser. The sort mode +## determines how songs are sorted, and can be used in combination with a sort +## format to specify a custom sorting format. Available values for +## browser_sort_mode are "type", "name", "mtime", "format" and "none". +## +# +#browser_sort_mode = type +# +#browser_sort_format = {%a - }{%t}|{%f} {%l} +# +##### columns settings ##### +## +## syntax of song columns list format is "column column etc." +## +## - syntax for each column is: +## +## (width of the column)[color of the column]{displayed tag} +## +## Note: Width is by default in %, if you want a column to have fixed size, add +## 'f' after the value, e.g. (10)[white]{a} will be the column that take 10% of +## screen (so the real width will depend on actual screen size), whereas +## (10f)[white]{a} will take 10 terminal cells, no matter how wide the screen +## is. +## +## - color is optional (if you want the default one, leave the field empty). +## +## Note: You can give a column additional attributes by putting appropriate +## character after displayed tag character. Available attributes are: +## +## - r - column will be right aligned +## - E - if tag is empty, empty tag marker won't be displayed +## +## You can also: +## +## - give a column custom name by putting it after attributes, separated with +## character ':', e.g. {lr:Length} gives you right aligned column of lengths +## named "Length". +## +## - define sequence of tags, that have to be displayed in case predecessor is +## empty in a way similar to the one in classic song format, i.e. using '|' +## character, e.g. {a|c|p:Owner} creates column named "Owner" that tries to +## display artist tag and then composer and performer if previous ones are not +## available. +## +# +#song_columns_list_format = (20)[]{a} (6f)[green]{NE} (50)[white]{t|f:Title} (20)[cyan]{b} (7f)[magenta]{l} +# +##### various settings ##### +# +## +## Note: Custom command that will be executed each time song changes. Useful for +## notifications etc. +## +#execute_on_song_change = "" +# +## +## Note: Custom command that will be executed each time player state +## changes. The environment variable MPD_PLAYER_STATE is set to the current +## state (either unknown, play, pause, or stop) for its duration. +## +# +#execute_on_player_state_change = "" +# +#playlist_show_mpd_host = no +# +#playlist_show_remaining_time = no +# +#playlist_shorten_total_times = no +# +#playlist_separate_albums = no +# +## +## Note: Possible display modes: classic, columns. +## +#playlist_display_mode = columns +# +#browser_display_mode = classic +# +#search_engine_display_mode = classic +# +#playlist_editor_display_mode = classic +# +#discard_colors_if_item_is_selected = yes +# +#show_duplicate_tags = yes +# +#incremental_seeking = yes +# +#seek_time = 1 +# +#volume_change_step = 2 +# +#autocenter_mode = no +# +#centered_cursor = no +# +## +## Note: You can specify third character which will be used to build 'empty' +## part of progressbar. +## +#progressbar_look = => +# +## Available values: database, playlist. +## +#default_place_to_search_in = database +# +## Available values: classic, alternative. +## +#user_interface = classic +# +#data_fetching_delay = yes +# +## Available values: artist, album_artist, date, genre, composer, performer. +## +#media_library_primary_tag = artist +# +#media_library_albums_split_by_date = yes +# +#media_library_hide_album_dates = no +# +## Available values: wrapped, normal. +## +#default_find_mode = wrapped +# +#default_tag_editor_pattern = %n - %t +# +#header_visibility = yes +# +#statusbar_visibility = yes +# +## Show the "Connected to ..." message on startup +#connected_message_on_startup = yes +# +#titles_visibility = yes +# +#header_text_scrolling = yes +# +#cyclic_scrolling = no +# +#lyrics_fetchers = azlyrics, genius, musixmatch, sing365, metrolyrics, justsomelyrics, jahlyrics, plyrics, tekstowo, zeneszoveg, internet +# +#follow_now_playing_lyrics = no +# +#fetch_lyrics_for_current_song_in_background = no +# +#store_lyrics_in_song_dir = no +# +#generate_win32_compatible_filenames = yes +# +#allow_for_physical_item_deletion = no +# +## +## Note: If you set this variable, ncmpcpp will try to get info from last.fm in +## language you set and if it fails, it will fall back to english. Otherwise it +## will use english the first time. +## +## Note: Language has to be expressed as an ISO 639 alpha-2 code. +## +#lastfm_preferred_language = en +# +#space_add_mode = add_remove +# +#show_hidden_files_in_local_browser = no +# +## +## How shall screen switcher work? +## +## - "previous" - switch between the current and previous screen. +## - "screen1,...,screenN" - switch between given sequence of screens. +## +## Screens available for use: help, playlist, browser, search_engine, +## media_library, playlist_editor, tag_editor, outputs, visualizer, clock, +## lyrics, last_fm. +## +#screen_switcher_mode = playlist, browser +# +## +## Note: You can define startup screen by choosing screen from the list above. +## +#startup_screen = playlist +# +## +## Note: You can define startup slave screen by choosing screen from the list +## above or an empty value for no slave screen. +## +#startup_slave_screen = "" +# +#startup_slave_screen_focus = no +# +## +## Default width of locked screen (in %). Acceptable values are from 20 to 80. +## +# +#locked_screen_width_part = 50 +# +#ask_for_locked_screen_width_part = yes +# +#jump_to_now_playing_song_at_start = yes +# +#ask_before_clearing_playlists = yes +# +#clock_display_seconds = no +# +#display_volume_level = yes +# +#display_bitrate = no +# +#display_remaining_time = no +# +## Available values: none, basic, extended, perl. +## +#regular_expressions = perl +# +## +## Note: if below is enabled, ncmpcpp will ignore leading "The" word while +## sorting items in browser, tags in media library, etc. +## +#ignore_leading_the = no +# +## +## Note: if below is enabled, ncmpcpp will ignore diacritics while searching and +## filtering lists. This takes an effect only if boost was compiled with ICU +## support. +## +#ignore_diacritics = no +# +#block_search_constraints_change_if_items_found = yes +# +#mouse_support = yes +# +#mouse_list_scroll_whole_page = no +# +#lines_scrolled = 5 +# +#empty_tag_marker = +# +#tags_separator = " | " +# +#tag_editor_extended_numeration = no +# +#media_library_sort_by_mtime = no +# +#enable_window_title = yes +# +## +## Note: You can choose default search mode for search engine. Available modes +## are: +## +## - 1 - use mpd built-in searching (no regexes, pattern matching) +## +## - 2 - use ncmpcpp searching (pattern matching with support for regexes, but +## if your mpd is on a remote machine, downloading big database to process +## it can take a while +## +## - 3 - match only exact values (this mode uses mpd function for searching in +## database and local one for searching in current playlist) +## +# +#search_engine_default_search_mode = 1 +# +#external_editor = nano +# +## Note: set to yes if external editor is a console application. +## +#use_console_editor = yes +# +##### colors definitions ##### +## +## It is possible to set a background color by setting a color value +## "_", e.g. red_black will set foregound color to red +## and background color to black. +## +## In addition, for terminals that support 256 colors it is possible to set one +## of them by using a number in range [1, 256] instead of color name, +## e.g. numerical value corresponding to red_black is 2_1. To find out if the +## terminal supports 256 colors, run ncmpcpp and check out the bottom of the +## help screen for list of available colors and their numerical values. +## +## What is more, there are two special values for the background color: +## "transparent" and "current". The first one explicitly sets the background to +## be transparent, while the second one allows you to preserve current +## background color and change only the foreground one. It's used implicitly +## when background color is not specified. +## +## Moreover, it is possible to attach format information to selected color +## variables by appending to their end a colon followed by one or more format +## flags, e.g. black:b or red:ur. The following variables support this syntax: +## visualizer_color, color1, color2, empty_tag_color, volume_color, +## state_line_color, state_flags_color, progressbar_color, +## progressbar_elapsed_color, player_state_color, statusbar_time_color, +## alternative_ui_separator_color. +## +## Note: due to technical limitations of older ncurses version, if 256 colors +## are used there is a possibility that you'll be able to use only colors with +## transparent background. +# +#colors_enabled = yes +# +#empty_tag_color = cyan +# +#header_window_color = default +# +#volume_color = default +# +#state_line_color = default +# +#state_flags_color = default:b +# +#main_window_color = yellow +# +#color1 = white +# +#color2 = green +# +#progressbar_color = black:b +# +#progressbar_elapsed_color = green:b +# +#statusbar_color = default +# +#statusbar_time_color = default:b +# +#player_state_color = default:b +# +#alternative_ui_separator_color = black:b +# +#window_border_color = green +# +#active_window_border = red +# diff --git a/modules/tui/default.nix b/modules/tui/default.nix index e425429..8cf84cb 100644 --- a/modules/tui/default.nix +++ b/modules/tui/default.nix @@ -4,5 +4,6 @@ _: { # ./helix.nix ./neovim.nix # ./newsboat.nix + ./ncmpcpp.nix ]; } diff --git a/modules/tui/ncmpcpp.nix b/modules/tui/ncmpcpp.nix new file mode 100644 index 0000000..2d69da8 --- /dev/null +++ b/modules/tui/ncmpcpp.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: +with lib; let + cfg = config.modules.programs.ncmpcpp; + username = config.modules.other.system.username; +in { + options.modules.programs.ncmpcpp.enable = mkEnableOption "ncmpcpp"; + + config = mkIf cfg.enable { + home-manager.users.${username} = { + xdg.configFile."ncmpcpp/config".source = ./config; + programs.ncmpcpp = { + enable = true; + mpdMusicDir = "/home/vali/Nextcloud/Media/Music"; + }; + }; + }; + +} diff --git a/options/desktop/monitors.nix b/options/desktop/monitors.nix index a9036e7..42f40b5 100644 --- a/options/desktop/monitors.nix +++ b/options/desktop/monitors.nix @@ -7,63 +7,69 @@ with lib; List of monitors to use "; default = []; - type = with types; listOf submodule { - name = mkOption { - type = types.str; - description = "Give your monitor a cute name"; - default = "monitor0(I am lazy)"; - }; - device = mkOption { - type = types.str; - description = "The actual device name of the monitor"; - }; - resolution = mkOption { - type = types.submodule { - width = mkOption { - type = types.int; - description = "monitor width"; - default = "1920"; - }; - height = mkOption { - type = types.int; - description = "monitor height"; - default = "1080"; + type = with types; types.listOf (submodule { + options = { + name = mkOption { + type = types.str; + description = "Give your monitor a cute name"; + default = "monitor0(I am lazy)"; + }; + device = mkOption { + type = types.str; + description = "The actual device name of the monitor"; + }; + resolution = mkOption { + type = types.submodule { + options = { + x = mkOption { + type = types.int; + description = "monitor width"; + default = "1920"; + }; + y = mkOption { + type = types.int; + description = "monitor height"; + default = "1080"; + }; + }; }; }; - }; - scale = mkOption { - type = types.number; - description = "monitor scale"; - default = 1.0; - }; - refresh_rate = mkOption { - type = types.int; - description = "monitor refresh rate (in Hz)"; - default = 60; - }; - position = mkOption { - type = types.submodule { - x = mkOption { - type = types.int; - default = 0; + scale = mkOption { + type = types.number; + description = "monitor scale"; + default = 1.0; + }; + refresh_rate = mkOption { + type = types.int; + description = "monitor refresh rate (in Hz)"; + default = 60; + }; + position = mkOption { + type = types.submodule { + options = { + x = mkOption { + type = types.int; + default = 0; + }; + y = mkOption { + type = types.int; + default = 0; + }; + }; }; - y = mkOption { - type = types.int; - default = 0; + description = "absolute monitor posititon"; + default = { + x = 0; + y = 0; }; }; - description = "absolute monitor posititon"; - default = { - x = 0; - y = 0; + transform = mkOption { + type = types.ints.between 0 3; + description = "Rotation of the monitor counterclockwise"; + default = 0; }; }; - transform = mkOption { - type = types.ints.between 0 3; - description = "Rotation of the monitor counterclockwise"; - default = 0; - }; - }; + }); }; }