Merge branch 'main' of github.com:bloxx12/nichts

This commit is contained in:
LarsZauberer 2024-04-13 19:16:59 +02:00
commit 7ad0bd6fdc
25 changed files with 1272 additions and 263 deletions

View file

@ -5,6 +5,7 @@
../../../options/common/pin-registry.nix
../../../options/common/preserve-system.nix
../../../options/desktop/fonts.nix
./packages.nix
];
@ -12,17 +13,15 @@
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 = {
gitPath = "/home/${username}/repos/nichts";
monitors = [
{
name = "LaptopMain";
device = "eDP-1";
resolution = {
x = 2256;
y = 1504;
};
scale = 1.0;
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";

View file

@ -28,7 +28,7 @@ in
android-tools
signal-desktop
nextcloud-client
etcher
# etcher
vlc
audacity
thunderbird

View file

@ -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;

View file

@ -4,8 +4,6 @@ _: {
./programs.nix
./hardware-configuration.nix
./profile.nix
./i3.nix
./awesome.nix
./hypr/default.nix
./i3
];
}

190
hosts/vali/mars/i3/config Normal file
View file

@ -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 windows width.
# Pressing right will grow the windows width.
# Pressing up will shrink the windows height.
# Pressing down will grow the windows 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
}

View file

@ -0,0 +1,6 @@
_: {
imports = [
./i3.nix
# ./i3-new.nix
];
}

View file

@ -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";
};
};
};
};
}

View file

@ -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
};
};
};

View file

View file

@ -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/
];
}

View file

@ -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
];
};
}

78
hosts/vali/mars/temp Normal file
View file

@ -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
];
};
}

View file

@ -3,5 +3,6 @@ _: {
./git.nix
./starship.nix
./zsh.nix
./neovim.nix
];
}

35
modules/cli/neovim.nix Normal file
View file

@ -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;
};
};
};
}

View file

@ -15,12 +15,9 @@ in
config = mkIf cfg.enable {
programs.xwayland.enable = true;
/*
programs.hyprland = {
enable = true;
xwayland = 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,8 +101,6 @@ 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"
@ -122,14 +115,6 @@ in
"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"
@ -173,10 +158,19 @@ in
# 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/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"
];
};
};

View file

@ -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";
};
};

0
modules/gui/rofi.nix Normal file
View file

View file

@ -10,49 +10,38 @@ 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";
colors = {
background-darker = "181825";
background = "1e1e2e";
foreground = "cdd6f4";
};
font = "Lexend";
extraUserChrome = ''
body {
color: red !important;
}
'';
};
extensions = {
simplefox.enable = false;
darkreader.enable = true;
};
search = {
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 search";
Description = "NixOS Unstable package serach";
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";
@ -60,40 +49,39 @@ in {
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}";
}
];
};
security = {
sanitizeOnShutdown = true;
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";
}
];
};
};
};

View file

@ -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;

View file

@ -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 ];

View file

@ -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 = {

598
modules/tui/config Normal file
View file

@ -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 = <empty>
#
#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
## "<foreground>_<background>", 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
#

View file

@ -4,5 +4,6 @@ _: {
# ./helix.nix
./neovim.nix
# ./newsboat.nix
./ncmpcpp.nix
];
}

18
modules/tui/ncmpcpp.nix Normal file
View file

@ -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";
};
};
};
}

View file

@ -7,7 +7,8 @@ with lib;
List of monitors to use
";
default = [];
type = with types; listOf submodule {
type = with types; types.listOf (submodule {
options = {
name = mkOption {
type = types.str;
description = "Give your monitor a cute name";
@ -19,18 +20,20 @@ with lib;
};
resolution = mkOption {
type = types.submodule {
width = mkOption {
options = {
x = mkOption {
type = types.int;
description = "monitor width";
default = "1920";
};
height = mkOption {
y = mkOption {
type = types.int;
description = "monitor height";
default = "1080";
};
};
};
};
scale = mkOption {
type = types.number;
description = "monitor scale";
@ -43,6 +46,7 @@ with lib;
};
position = mkOption {
type = types.submodule {
options = {
x = mkOption {
type = types.int;
default = 0;
@ -52,6 +56,7 @@ with lib;
default = 0;
};
};
};
description = "absolute monitor posititon";
default = {
x = 0;
@ -64,6 +69,7 @@ with lib;
default = 0;
};
};
});
};
}