feat: add a lot of stuff

This commit is contained in:
Jacob Bachmann 2023-12-11 15:48:55 +01:00
parent 8eb88574fb
commit 6067f0ff0b
Signed by: bchmnn
GPG key ID: 732A612DAD28067D
47 changed files with 578 additions and 136 deletions

View file

@ -1,6 +1,6 @@
{ ... }: {
{ lib, nixosConfig, ... }: {
dconf.settings = {
dconf.settings = lib.mkIf nixosConfig.bchmnn.virtualisation.enable {
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];

View file

@ -1,25 +1,15 @@
{
imports = [
./alacritty.nix
./chromium.nix
./dconf.nix
./fzf.nix
./gui
./git.nix
./gnupg.nix
./kanshi.nix
./keyring.nix
./neovim.nix
./obs.nix
./packages.nix
./playerctl.nix
./ssh.nix
./sway.nix
./swaync
./tmux.nix
./udiskie.nix
./vscode.nix
./waybar.nix
./wofi.nix
./zsh.nix
];
}

View file

@ -1 +0,0 @@
import ./flameshot.nix

View file

@ -1,4 +1,4 @@
{
{ pkgs, lib, ... }: {
colorschemes = rec {
custom = {
black = "#000000";
@ -18,4 +18,10 @@
font = "DejaVuSansM Nerd Font";
font-size = "14";
gtk = "Adwaita";
wallpaper = pkgs.fetchurl {
url = "https://live.staticflickr.com/65535/52797919139_2444712a38_o_d.png";
sha256 = "1a9148d8911fa25afa82d3b843ee620173955a7ca705d525f3e9d00e00696308";
meta.licenses = lib.licenses.cc0;
};
}

View file

@ -0,0 +1,12 @@
{ lib, nixosConfig, ... }: {
imports = with lib; with nixosConfig.bchmnn;
optionals gui.enable [
./programs
] ++ optionals (gui.enable && elem "sway" gui.flavour) [
./sway
] ++ optionals (gui.enable && elem "i3" gui.flavour) [
./i3
];
}

View file

@ -0,0 +1,42 @@
{ ... }: {
programs.autorandr = {
enable = true;
profiles = {
nomad = {
config = {
"LVDS-1" = {
enable = true;
};
};
};
station = {
config = {
"LVDS-1" = {
enable = false;
};
"DP-1-3" = {
enable = true;
mode = "1920x1080";
position = "0x0";
};
"DP-1-2" = {
enable = true;
mode = "1920x1080";
position = "1920x0";
};
"VGA-1-2" = {
enable = true;
mode = "1920x1080";
position = "3840x0";
};
};
};
};
};
}

View file

@ -0,0 +1,187 @@
{ pkgs, lib, config, ... }:
let
cfg = config.xsession.windowManager.i3.config;
# common = (import ../common.nix) { pkgs = pkgs; lib = lib; };
common = (import ../common.nix) { inherit pkgs; inherit lib; };
in {
imports = [
./autorandr.nix
];
home.packages = with pkgs; [
alacritty
dmenu
wireplumber
feh # lightweight image viewer (also sets wallpaper)
brightnessctl # control screen brightness
pavucontrol # control audio
playerctl # control player
networkmanagerapplet # control network
blueman # control bluetooth
nextcloud-client # nextcloud client to connect to any instance
plasma5Packages.kdeconnect-kde # sync phone and pc
];
xsession.windowManager.i3 = {
enable = true;
config = {
modifier = "Mod4";
terminal = "${pkgs.alacritty}/bin/alacritty";
menu = "${pkgs.dmenu}/bin/dmenu_run";
startup = with pkgs; [
{ command = "${feh}/bin/feh --bg-fill ${common.wallpaper}"; }
{ command = "${networkmanagerapplet}/bin/nm-applet"; }
{ command = "${blueman}/bin/blueman-applet"; }
{ command = "${nextcloud-client}/bin/nextcloud"; }
{ command = "${plasma5Packages.kdeconnect-kde}/bin/kdeconnect-indicator"; }
];
fonts = {
names = [ common.font ];
style = "Bold";
size = 12.0;
};
window = {
titlebar = false;
border = 4;
};
gaps = {
inner = 5;
};
colors = {
focused = {
border = common.colorschemes.default.active;
background = common.colorschemes.default.active;
text = common.colorschemes.default.black;
indicator = common.colorschemes.default.activeDark;
childBorder = common.colorschemes.default.active;
};
focusedInactive = {
border = common.colorschemes.default.inactive;
background = common.colorschemes.default.inactive;
text = common.colorschemes.default.white;
indicator = common.colorschemes.default.inactive;
childBorder = common.colorschemes.default.inactive;
};
unfocused = {
border = common.colorschemes.default.inactiveDark;
background = common.colorschemes.default.inactiveDark;
text = common.colorschemes.default.white;
indicator = common.colorschemes.default.inactiveDark;
childBorder = common.colorschemes.default.inactiveDark;
};
urgent = {
border = common.colorschemes.default.alert;
background = common.colorschemes.default.alert;
text = common.colorschemes.default.white;
indicator = common.colorschemes.default.black;
childBorder = common.colorschemes.default.alert;
};
placeholder = {
border = common.colorschemes.default.active;
background = common.colorschemes.default.active;
text = common.colorschemes.default.black;
indicator = common.colorschemes.default.activeDark;
childBorder = common.colorschemes.default.active;
};
};
keybindings = {
# Basics
"${cfg.modifier}+Return" = "exec ${cfg.terminal}";
"${cfg.modifier}+q" = "kill";
"${cfg.modifier}+i" = "exec ${cfg.menu}";
"${cfg.modifier}+space" = "exec ${cfg.menu}";
"${cfg.modifier}+Shift+c" = "reload";
"${cfg.modifier}+Shift+q" = "exec i3-nagbar -t warning -m 'Do you want to exit i3?' -b 'Yes' 'i3-msg exit'";
"${cfg.modifier}+Shift+r" = "restart";
# Focus
"${cfg.modifier}+h" = "focus left";
"${cfg.modifier}+j" = "focus down";
"${cfg.modifier}+k" = "focus up";
"${cfg.modifier}+l" = "focus right";
"${cfg.modifier}+p" = "focus output left";
"${cfg.modifier}+n" = "focus output right";
# Moving
"${cfg.modifier}+Shift+h" = "move left";
"${cfg.modifier}+Shift+j" = "move down";
"${cfg.modifier}+Shift+k" = "move up";
"${cfg.modifier}+Shift+l" = "move right";
# Workspaces
"${cfg.modifier}+1" = "workspace number 1";
"${cfg.modifier}+2" = "workspace number 2";
"${cfg.modifier}+3" = "workspace number 3";
"${cfg.modifier}+4" = "workspace number 4";
"${cfg.modifier}+5" = "workspace number 5";
"${cfg.modifier}+6" = "workspace number 6";
"${cfg.modifier}+7" = "workspace number 7";
"${cfg.modifier}+8" = "workspace number 8";
"${cfg.modifier}+9" = "workspace number 9";
"${cfg.modifier}+0" = "workspace number 10";
"${cfg.modifier}+Shift+1" = "move container to workspace number 1";
"${cfg.modifier}+Shift+2" = "move container to workspace number 2";
"${cfg.modifier}+Shift+3" = "move container to workspace number 3";
"${cfg.modifier}+Shift+4" = "move container to workspace number 4";
"${cfg.modifier}+Shift+5" = "move container to workspace number 5";
"${cfg.modifier}+Shift+6" = "move container to workspace number 6";
"${cfg.modifier}+Shift+7" = "move container to workspace number 7";
"${cfg.modifier}+Shift+8" = "move container to workspace number 8";
"${cfg.modifier}+Shift+9" = "move container to workspace number 9";
"${cfg.modifier}+Shift+0" = "move container to workspace number 10";
"${cfg.modifier}+Control+j" = "workspace prev";
"${cfg.modifier}+Control+k" = "workspace next";
"${cfg.modifier}+Control+Shift+j" = "move workspace to output left";
"${cfg.modifier}+Control+Shift+k" = "move workspace to output right";
# Splits
"${cfg.modifier}+b" = "split h";
"${cfg.modifier}+v" = "split v";
# Layouts
"${cfg.modifier}+s" = "layout stacking";
"${cfg.modifier}+w" = "layout tabbed";
"${cfg.modifier}+e" = "layout toggle split";
"${cfg.modifier}+f" = "fullscreen toggle";
"${cfg.modifier}+a" = "focus parent";
"${cfg.modifier}+d" = "floating toggle";
"${cfg.modifier}+Shift+d" = "focus mode_toggle";
# Scratchpad
"${cfg.modifier}+Shift+minus" = "move scratchpad";
"${cfg.modifier}+minus" = "scratchpad show";
# Resize mode
"${cfg.modifier}+r" = "mode resize";
# Multimedia Keys
"XF86AudioRaiseVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+";
"XF86AudioLowerVolume" = "exec ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-";
"XF86AudioMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
"XF86AudioMicMute" = "exec ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
"XF86MonBrightnessDown" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%-";
"XF86MonBrightnessUp" = "exec ${pkgs.brightnessctl}/bin/brightnessctl -q set 5%+";
"XF86AudioPrev" = "exec ${pkgs.playerctl}/bin/playerctl previous";
"XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl next";
"XF86AudioPlay" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
# Programs
"${cfg.modifier}+Shift+v" = "exec ${pkgs.pavucontrol}/bin/pavucontrol";
"${cfg.modifier}+Shift+b" = "exec ${pkgs.blueman}/bin/blueman-manager";
"${cfg.modifier}+Shift+n" = "exec ${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
"${cfg.modifier}+Shift+a" = "exec ${pkgs.swaynotificationcenter}/bin/swaync-client -t -sw";
};
};
};
}

View file

@ -1,6 +1,6 @@
{ ... }:
{ pkgs, lib, ... }:
let
common = import ./common.nix;
common = (import ../common.nix) { pkgs = pkgs; lib = lib; };
in
{
# alacritty - a cross-platform, GPU-accelerated terminal emulator

View file

@ -22,6 +22,11 @@ let
sha256 = "565fff2ed6a3c4c98daf7a2b56aad386c2d076f4f5b88199785593eb380eb3d4";
meta.licenses = lib.licenses.publicDomain;
};
whatsapp = pkgs.fetchurl {
url = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6b/WhatsApp.svg/240px-WhatsApp.svg.png";
sha256 = "65b4eeab9b5a02c46f75f26abeac3c72a479cf8fce829b7f9c46f59e9a7f9785";
meta.licenses = lib.licenses.publicDomain;
};
};
in
@ -68,6 +73,14 @@ in
Terminal=false
Icon=${icons.outlook}
'';
"applications/whatsapp.desktop".text = ''
[Desktop Entry]
Type=Application
Name=WhatsApp
Exec=${pkgs.chromium}/bin/chromium --app=https://web.whatsapp.com
Terminal=false
Icon=${icons.whatsapp}
'';
};
}

View file

@ -0,0 +1,24 @@
{ pkgs, ... }: {
imports = [
./alacritty.nix
./chromium.nix
./discord.nix
./keyring.nix
./obs.nix
./vscode.nix
];
home.packages = with pkgs; [
firefox
speechd # https://support.mozilla.org/en-US/kb/speechd-setup
gnome.nautilus
gimp
vlc
qbittorrent
gnome.simple-scan
telegram-desktop
signal-desktop
];
}

View file

@ -1,7 +1,5 @@
{ pkgs, ... }: {
home.packages = with pkgs; [
playerctl
discord
];
}

View file

@ -0,0 +1,3 @@
import ./flameshot.nix
# include with:
# flameshot = pkgs.libsForQt5.callPackage ./flameshot/build.nix { };

View file

@ -1,6 +1,6 @@
{ pkgs, ... }:
{ pkgs, lib, ... }:
let
common = import ./common.nix;
common = (import ../common.nix) { pkgs = pkgs; lib = lib; };
in
{
programs.vscode = {

View file

@ -1,20 +1,19 @@
{ config, pkgs, lib, ... }:
{ pkgs, lib, config, ... }:
let
cfg = config.wayland.windowManager.sway.config;
common = import ./common.nix;
wallpaper = pkgs.fetchurl {
url = "https://live.staticflickr.com/65535/52797919139_2444712a38_o_d.png";
sha256 = "1a9148d8911fa25afa82d3b843ee620173955a7ca705d525f3e9d00e00696308";
meta.licenses = lib.licenses.cc0;
};
# flameshot = pkgs.libsForQt5.callPackage ./flameshot/build.nix { };
common = (import ../common.nix) { pkgs = pkgs; lib = lib; };
in
{
imports = [
./kanshi.nix
./swaync
./waybar.nix
./wofi.nix
];
home.packages = with pkgs; [
brightnessctl # control screen brightness
pavucontrol # control audio
@ -26,6 +25,9 @@ in
sway-contrib.grimshot
wdisplays
wlr-randr
kanshi # display manager
nextcloud-client # self hosted cloud client
plasma5Packages.kdeconnect-kde # sync phone and pc
];
programs.swaylock = {
@ -60,15 +62,27 @@ in
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on";
# Nvidia
# export WLR_RENDERER=vulkan;
# export GBM_BACKEND=nvidia-drm;
# export __GL_GSYNC_ALLOWED=0;
# export __GL_VRR_ALLOWED=0;
# export __GLX_VENDOR_LIBRARY_NAME=nvidia;
# Xwayland compat
# export XWAYLAND_NO_GLAMOR=1;
'';
config = {
modifier = "Mod4";
terminal = "${pkgs.alacritty}/bin/alacritty";
menu = "${pkgs.wofi}/bin/wofi";
startup = [
{ command = "blueman-applet"; }
{ command = "nm-applet"; }
{ command = "swaync"; }
startup = with pkgs; [
{ command = "${kanshi}/bin/kanshi"; }
{ command = "${networkmanagerapplet}/bin/nm-applet"; }
{ command = "${blueman}/bin/blueman-applet"; }
{ command = "${swaynotificationcenter}/bin/swaync"; }
{ command = "${nextcloud-client}/bin/nextcloud"; }
{ command = "${plasma5Packages.kdeconnect-kde}/bin/kdeconnect-indicator"; }
];
input = {
"2:7:SynPS/2_Synaptics_TouchPad" = {
@ -86,7 +100,7 @@ in
};
};
output = {
"*".bg = "${wallpaper} fill";
"*".bg = "${common.wallpaper} fill";
};
left = "h";
down = "j";
@ -109,10 +123,8 @@ in
"${cfg.modifier}+${cfg.up}" = "focus up";
"${cfg.modifier}+${cfg.right}" = "focus right";
"${cfg.modifier}+Left" = "focus left";
"${cfg.modifier}+Down" = "focus down";
"${cfg.modifier}+Up" = "focus up";
"${cfg.modifier}+Right" = "focus right";
"${cfg.modifier}+p" = "focus output left";
"${cfg.modifier}+n" = "focus output right";
# Moving
"${cfg.modifier}+Shift+${cfg.left}" = "move left";
@ -120,11 +132,6 @@ in
"${cfg.modifier}+Shift+${cfg.up}" = "move up";
"${cfg.modifier}+Shift+${cfg.right}" = "move right";
"${cfg.modifier}+Shift+Left" = "move left";
"${cfg.modifier}+Shift+Down" = "move down";
"${cfg.modifier}+Shift+Up" = "move up";
"${cfg.modifier}+Shift+Right" = "move right";
# Workspaces
"${cfg.modifier}+1" = "workspace number 1";
"${cfg.modifier}+2" = "workspace number 2";
@ -301,6 +308,7 @@ in
# show existing or start new dropdown terminal
bindsym ${cfg.modifier}+grave exec swaymsg '[app_id="$ddterm-id"] scratchpad show' || $ddterm && sleep .1 && swaymsg '[app_id="$ddterm-id"] $ddterm-resize'
bindsym ${cfg.modifier}+Escape exec swaymsg '[app_id="$ddterm-id"] scratchpad show' || $ddterm && sleep .1 && swaymsg '[app_id="$ddterm-id"] $ddterm-resize'
# ^-- resize again, case moving to different output
'';
};

View file

@ -0,0 +1,45 @@
{ ... }: {
services.kanshi = {
enable = true;
profiles = {
nomad = {
outputs = [
{
criteria = "LVDS-1";
status = "enable";
}
];
};
station = {
outputs = [
{
criteria = "LVDS-1";
status = "disable";
}
{
criteria = "Dell Inc. DELL U2515H 9X2VY5490XUL";
status = "enable";
mode = "1920x1080";
position = "0,0";
}
{
criteria = "Dell Inc. DELL U2515H 9X2VY5C7138L";
status = "enable";
mode = "1920x1080";
position = "1920,0";
}
{
criteria = "HJW VGA TO HDMI 0x00000100";
status = "enable";
mode = "1920x1080";
position = "3840,0";
}
];
};
};
};
}

View file

@ -1,6 +1,6 @@
{ ... }:
{ pkgs, lib, ... }:
let
common = import ./common.nix;
common = (import ../common.nix) { pkgs = pkgs; lib = lib; };
in
{
programs.wofi = {

View file

@ -1,33 +0,0 @@
{ ... }: {
services.kanshi = {
enable = true;
profiles = {
home = {
outputs = [
{
criteria = "DP-3";
mode = "1920x1080";
position = "0,0";
}
{
criteria = "DP-2";
mode = "1920x1080";
position = "1920,0";
}
{
criteria = "LVDS-1";
mode = "1920x1080";
position = "3840,0";
scale = 1.33;
}
];
};
};
};
}

View file

@ -1,14 +1,8 @@
{ pkgs, ... }: {
home.packages = with pkgs; [
firefox
speechd # https://support.mozilla.org/en-US/kb/speechd-setup
gopass
gopass-jsonapi
gnome.nautilus
gimp
vlc
gnome.simple-scan
];
}