xserver.nix is now desktop.nix; WM's can now be added/removed through machine options. Added sway and some fonts.
This commit is contained in:
parent
4386bc197d
commit
6c744f089e
12 changed files with 337 additions and 38 deletions
|
@ -6,6 +6,7 @@ with lib;
|
||||||
environment.etc = mkIf (elem "etcfiles" config.machine.conffiles) {
|
environment.etc = mkIf (elem "etcfiles" config.machine.conffiles) {
|
||||||
"i3/config".source = ./etc/i3/config;
|
"i3/config".source = ./etc/i3/config;
|
||||||
"i3/py3status".source = ./etc/i3/py3status;
|
"i3/py3status".source = ./etc/i3/py3status;
|
||||||
|
"sway/config".source = mkDefault ./etc/sway/config;
|
||||||
"mpv/input.conf".source = ./etc/mpv/input.conf;
|
"mpv/input.conf".source = ./etc/mpv/input.conf;
|
||||||
"mpv/mpv.conf".source = ./etc/mpv/mpv.conf;
|
"mpv/mpv.conf".source = ./etc/mpv/mpv.conf;
|
||||||
"youtube-dl.conf".source = ./etc/youtube-dl.conf;
|
"youtube-dl.conf".source = ./etc/youtube-dl.conf;
|
||||||
|
|
217
config/etc/sway/config
Normal file
217
config/etc/sway/config
Normal file
|
@ -0,0 +1,217 @@
|
||||||
|
# Read `man 5 sway` for a complete reference.
|
||||||
|
|
||||||
|
### Variables
|
||||||
|
#
|
||||||
|
# Logo key. Use Mod1 for Alt.
|
||||||
|
set $mod Mod4
|
||||||
|
# Home row direction keys, like vim
|
||||||
|
set $left h
|
||||||
|
set $down j
|
||||||
|
set $up k
|
||||||
|
set $right l
|
||||||
|
# Your preferred terminal emulator
|
||||||
|
set $term gnome-terminal
|
||||||
|
# Your preferred application launcher
|
||||||
|
# Note: it's recommended that you pass the final command to sway
|
||||||
|
set $menu dmenu_path | dmenu | xargs swaymsg exec
|
||||||
|
|
||||||
|
### Output configuration
|
||||||
|
#
|
||||||
|
# Default wallpaper
|
||||||
|
output * bg ~/Pictures/wallpaper.jpg fill
|
||||||
|
output eDP-1 scale 1.5
|
||||||
|
#
|
||||||
|
# Example configuration:
|
||||||
|
#
|
||||||
|
# output HDMI-A-1 resolution 1920x1080 position 1920,0
|
||||||
|
#
|
||||||
|
# You can get the names of your outputs by running: swaymsg -t get_outputs
|
||||||
|
|
||||||
|
### Idle configuration
|
||||||
|
#
|
||||||
|
# Example configuration:
|
||||||
|
#
|
||||||
|
# exec swayidle -w \
|
||||||
|
# timeout 300 'swaylock -f -c 000000' \
|
||||||
|
# timeout 600 'swaymsg "output * dpms off"' \
|
||||||
|
# resume 'swaymsg "output * dpms on"' \
|
||||||
|
# before-sleep 'swaylock -f -c 000000'
|
||||||
|
#
|
||||||
|
# This will lock your screen after 300 seconds of inactivity, then turn off
|
||||||
|
# your displays after another 300 seconds, and turn your screens back on when
|
||||||
|
# resumed. It will also lock your screen before your computer goes to sleep.
|
||||||
|
|
||||||
|
### Input configuration
|
||||||
|
# You can get the names of your inputs by running: swaymsg -t get_inputs xkb_options grp:alt_shift_toggle# Read `man 5 sway-input` for more information about this section.
|
||||||
|
input "1118:2496:Microsoft_Surface_Type_Cover_Touchpad" {
|
||||||
|
dwt enabled
|
||||||
|
tap enabled
|
||||||
|
natural_scroll disabled
|
||||||
|
middle_emulation enabled
|
||||||
|
}
|
||||||
|
|
||||||
|
input "1118:2496:Microsoft_Surface_Type_Cover_Keyboard" {
|
||||||
|
xkb_layout de
|
||||||
|
xkb_variant nodeadkeys
|
||||||
|
}
|
||||||
|
|
||||||
|
### Key bindings
|
||||||
|
#
|
||||||
|
# Basics:
|
||||||
|
#
|
||||||
|
# start a terminal
|
||||||
|
bindsym $mod+Return exec $term
|
||||||
|
|
||||||
|
# kill focused window
|
||||||
|
bindsym $mod+Shift+q kill
|
||||||
|
|
||||||
|
# start your launcher
|
||||||
|
bindsym $mod+d exec $menu
|
||||||
|
|
||||||
|
# Drag floating windows by holding down $mod and left mouse button.
|
||||||
|
# Resize them with right mouse button + $mod.
|
||||||
|
# Despite the name, also works for non-floating windows.
|
||||||
|
# Change normal to inverse to use left mouse button for resizing and right
|
||||||
|
# mouse button for dragging.
|
||||||
|
floating_modifier $mod normal
|
||||||
|
|
||||||
|
# reload the configuration file
|
||||||
|
bindsym $mod+Shift+c reload
|
||||||
|
|
||||||
|
# exit sway (logs you out of your Wayland session)
|
||||||
|
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
|
||||||
|
#
|
||||||
|
# Moving around:
|
||||||
|
#
|
||||||
|
# Move your focus around
|
||||||
|
bindsym $mod+$left focus left
|
||||||
|
bindsym $mod+$down focus down
|
||||||
|
bindsym $mod+$up focus up
|
||||||
|
bindsym $mod+$right focus right
|
||||||
|
# or use $mod+[up|down|left|right]
|
||||||
|
bindsym $mod+Left focus left
|
||||||
|
bindsym $mod+Down focus down
|
||||||
|
bindsym $mod+Up focus up
|
||||||
|
bindsym $mod+Right focus right
|
||||||
|
|
||||||
|
# _move_ the focused window with the same, but add Shift
|
||||||
|
bindsym $mod+Shift+$left move left
|
||||||
|
bindsym $mod+Shift+$down move down
|
||||||
|
bindsym $mod+Shift+$up move up
|
||||||
|
bindsym $mod+Shift+$right move right
|
||||||
|
# ditto, with arrow 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
|
||||||
|
#
|
||||||
|
# Workspaces:
|
||||||
|
#
|
||||||
|
# switch to workspace
|
||||||
|
bindsym $mod+1 workspace 1
|
||||||
|
bindsym $mod+2 workspace 2
|
||||||
|
bindsym $mod+3 workspace 3
|
||||||
|
bindsym $mod+4 workspace 4
|
||||||
|
bindsym $mod+5 workspace 5
|
||||||
|
bindsym $mod+6 workspace 6
|
||||||
|
bindsym $mod+7 workspace 7
|
||||||
|
bindsym $mod+8 workspace 8
|
||||||
|
bindsym $mod+9 workspace 9
|
||||||
|
bindsym $mod+0 workspace 10
|
||||||
|
# move focused container to workspace
|
||||||
|
bindsym $mod+Shift+1 move container to workspace 1
|
||||||
|
bindsym $mod+Shift+2 move container to workspace 2
|
||||||
|
bindsym $mod+Shift+3 move container to workspace 3
|
||||||
|
bindsym $mod+Shift+4 move container to workspace 4
|
||||||
|
bindsym $mod+Shift+5 move container to workspace 5
|
||||||
|
bindsym $mod+Shift+6 move container to workspace 6
|
||||||
|
bindsym $mod+Shift+7 move container to workspace 7
|
||||||
|
bindsym $mod+Shift+8 move container to workspace 8
|
||||||
|
bindsym $mod+Shift+9 move container to workspace 9
|
||||||
|
bindsym $mod+Shift+0 move container to workspace 10
|
||||||
|
# Note: workspaces can have any name you want, not just numbers.
|
||||||
|
# We just use 1-10 as the default.
|
||||||
|
#
|
||||||
|
# Layout stuff:
|
||||||
|
#
|
||||||
|
# You can "split" the current object of your focus with
|
||||||
|
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||||
|
# respectively.
|
||||||
|
bindsym $mod+b splith
|
||||||
|
bindsym $mod+v splitv
|
||||||
|
|
||||||
|
# Switch the current container between different layout styles
|
||||||
|
bindsym $mod+s layout stacking
|
||||||
|
bindsym $mod+w layout tabbed
|
||||||
|
bindsym $mod+e layout toggle split
|
||||||
|
|
||||||
|
# Make the current focus fullscreen
|
||||||
|
bindsym $mod+f fullscreen
|
||||||
|
|
||||||
|
# Toggle the current focus between tiling and floating mode
|
||||||
|
bindsym $mod+Shift+space floating toggle
|
||||||
|
|
||||||
|
# Swap focus between the tiling area and the floating area
|
||||||
|
bindsym $mod+space focus mode_toggle
|
||||||
|
|
||||||
|
# move focus to the parent container
|
||||||
|
bindsym $mod+a focus parent
|
||||||
|
#
|
||||||
|
# Scratchpad:
|
||||||
|
#
|
||||||
|
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||||
|
# You can send windows there and get them back later.
|
||||||
|
|
||||||
|
# Move the currently focused window to the scratchpad
|
||||||
|
bindsym $mod+p move scratchpad
|
||||||
|
|
||||||
|
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||||
|
# If there are multiple scratchpad windows, this command cycles through them.
|
||||||
|
bindsym $mod+Shift+p scratchpad show
|
||||||
|
#
|
||||||
|
# Resizing containers:
|
||||||
|
#
|
||||||
|
mode "resize" {
|
||||||
|
# left will shrink the containers width
|
||||||
|
# right will grow the containers width
|
||||||
|
# up will shrink the containers height
|
||||||
|
# down will grow the containers height
|
||||||
|
bindsym $left resize shrink width 10px
|
||||||
|
bindsym $down resize grow height 10px
|
||||||
|
bindsym $up resize shrink height 10px
|
||||||
|
bindsym $right resize grow width 10px
|
||||||
|
|
||||||
|
# ditto, with arrow keys
|
||||||
|
bindsym Left resize shrink width 10px
|
||||||
|
bindsym Down resize grow height 10px
|
||||||
|
bindsym Up resize shrink height 10px
|
||||||
|
bindsym Right resize grow width 10px
|
||||||
|
|
||||||
|
# return to default mode
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
}
|
||||||
|
bindsym $mod+r mode "resize"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Status Bar:
|
||||||
|
#
|
||||||
|
# Read `man 5 sway-bar` for more information about this section.
|
||||||
|
bar {
|
||||||
|
position top
|
||||||
|
|
||||||
|
# When the status_command prints a new line to stdout, swaybar updates.
|
||||||
|
# The default just shows the current date and time.
|
||||||
|
#status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done
|
||||||
|
status_command i3status
|
||||||
|
#status_command py3status -c /etc/i3/py3status
|
||||||
|
colors {
|
||||||
|
separator #586e75
|
||||||
|
background #002b36
|
||||||
|
statusline #aea79f
|
||||||
|
focused_workspace #586e75 #586e75 #ffffff
|
||||||
|
active_workspace #073642 #073642 #ffffff
|
||||||
|
inactive_workspace #002b36 #002b36 #aea79f
|
||||||
|
urgent_workspace #77216f #77216f #ffffff
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,8 +14,12 @@ mkIf (elem "fonts" config.machine.conffiles) {
|
||||||
fonts = with pkgs; [
|
fonts = with pkgs; [
|
||||||
corefonts # Microsoft free fonts
|
corefonts # Microsoft free fonts
|
||||||
dejavu_fonts
|
dejavu_fonts
|
||||||
|
font-awesome-ttf
|
||||||
inconsolata # monospaced
|
inconsolata # monospaced
|
||||||
|
noto-fonts
|
||||||
noto-fonts-cjk
|
noto-fonts-cjk
|
||||||
|
noto-fonts-emoji
|
||||||
|
noto-fonts-extra
|
||||||
powerline-fonts
|
powerline-fonts
|
||||||
source-han-sans-japanese
|
source-han-sans-japanese
|
||||||
source-han-sans-korean
|
source-han-sans-korean
|
||||||
|
|
|
@ -36,7 +36,7 @@ in {
|
||||||
enableKSM = true;
|
enableKSM = true;
|
||||||
opengl = {
|
opengl = {
|
||||||
driSupport = true;
|
driSupport = true;
|
||||||
extraPackages = with pkgs; [ intel-media-driver libvdpau-va-gl vaapiIntel vaapiVdpau ];
|
extraPackages = with pkgs; [ intel-media-driver libvdpau-va-gl vaapiIntel vaapiVdpau intel-media-driver ];
|
||||||
driSupport32Bit = true;
|
driSupport32Bit = true;
|
||||||
extraPackages32 = with pkgs.pkgsi686Linux; [ libvdpau-va-gl vaapiIntel vaapiVdpau ];
|
extraPackages32 = with pkgs.pkgsi686Linux; [ libvdpau-va-gl vaapiIntel vaapiVdpau ];
|
||||||
};
|
};
|
||||||
|
|
|
@ -31,7 +31,7 @@ with lib;
|
||||||
];
|
];
|
||||||
services = [
|
services = [
|
||||||
"containers"
|
"containers"
|
||||||
"xserver"
|
"desktop"
|
||||||
"docker"
|
"docker"
|
||||||
"udev"
|
"udev"
|
||||||
"cups"
|
"cups"
|
||||||
|
@ -43,6 +43,7 @@ with lib;
|
||||||
allowedUDPPortRanges = [ { from = 1714; to = 1764; } ];
|
allowedUDPPortRanges = [ { from = 1714; to = 1764; } ];
|
||||||
allowedTCPPortRanges = [ { from = 1714; to = 1764; } ];
|
allowedTCPPortRanges = [ { from = 1714; to = 1764; } ];
|
||||||
};
|
};
|
||||||
|
desktop.wms = [ "i3" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
config.system.copySysConf = {
|
config.system.copySysConf = {
|
||||||
|
|
|
@ -73,5 +73,12 @@ with lib;
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
desktop.wms = mkOption {
|
||||||
|
type = types.listOf types.string;
|
||||||
|
default = [];
|
||||||
|
description = ''
|
||||||
|
The list of wms to be enabled.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,6 @@
|
||||||
./nginx.nix
|
./nginx.nix
|
||||||
./openssh.nix
|
./openssh.nix
|
||||||
./udev.nix
|
./udev.nix
|
||||||
./xserver.nix
|
./desktop.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
59
services/desktop.nix
Normal file
59
services/desktop.nix
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.machine;
|
||||||
|
ifelse = a: b: c: if a then b else c;
|
||||||
|
in mkIf (elem "desktop" cfg.services) {
|
||||||
|
programs.sway = mkIf (elem "sway" cfg.desktop.wms) # (import ./desktop/sway.nix { inherit pkgs; });
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
file i3status dmenu
|
||||||
|
qt5.qtwayland
|
||||||
|
grim slurp
|
||||||
|
swaylock
|
||||||
|
swayidle
|
||||||
|
light
|
||||||
|
mako
|
||||||
|
wl-clipboard
|
||||||
|
wf-recorder
|
||||||
|
];
|
||||||
|
extraSessionCommands = ''
|
||||||
|
export GDK_BACKEND=wayland
|
||||||
|
export CLUTTER_BACKEND=wayland
|
||||||
|
export SDL_VIDEODRIVER=wayland
|
||||||
|
# needs qt5.qtwayland in systemPackages
|
||||||
|
export QT_QPA_PLATFORM=wayland-egl
|
||||||
|
export QT_WAYLAND_FORCE_DPI=physical
|
||||||
|
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
|
||||||
|
# Fix for some Java AWT applications (e.g. Android Studio),
|
||||||
|
# use this if they aren't displayed properly:
|
||||||
|
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.gnome3.gvfs.enable = true;
|
||||||
|
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gnome3.gvfs}/lib/gio/modules" ];
|
||||||
|
services.xserver = {
|
||||||
|
enable = !(elem "sway" cfg.desktop.wms);
|
||||||
|
layout = "de";
|
||||||
|
videoDrivers = [ "intel" ];
|
||||||
|
windowManager = mkIf (cfg.desktop.wms != []) {
|
||||||
|
i3 = mkIf (elem "i3" cfg.desktop.wms) (import ./desktop/i3.nix { inherit pkgs; });
|
||||||
|
default = elemAt cfg.desktop.wms 0;
|
||||||
|
};
|
||||||
|
# add switch for Lilim
|
||||||
|
libinput = {
|
||||||
|
enable = true;
|
||||||
|
tapping = true;
|
||||||
|
disableWhileTyping = false;
|
||||||
|
naturalScrolling = false;
|
||||||
|
horizontalScrolling = true;
|
||||||
|
};
|
||||||
|
# Still waiting for streamlined dpi settings... will write a propper solution once it's done >.<
|
||||||
|
# see https://github.com/NixOS/nixpkgs/pull/25892
|
||||||
|
dpi = ifelse (cfg.hostName == "Lilim") 192 null;
|
||||||
|
};
|
||||||
|
}
|
0
services/desktop/gnome3.nix
Normal file
0
services/desktop/gnome3.nix
Normal file
16
services/desktop/i3.nix
Normal file
16
services/desktop/i3.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{ pkgs }:
|
||||||
|
|
||||||
|
#with lib;
|
||||||
|
|
||||||
|
#mkIf (elem "i3" cfg.xserver.wms) {
|
||||||
|
# i3 =
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
configFile = ../../config/etc/i3/config;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
dmenu
|
||||||
|
file
|
||||||
|
i3lock
|
||||||
|
i3status
|
||||||
|
];
|
||||||
|
}
|
29
services/desktop/sway.nix
Normal file
29
services/desktop/sway.nix
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{ pkgs }:
|
||||||
|
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
xwayland
|
||||||
|
file i3status dmenu
|
||||||
|
qt5.qtwayland
|
||||||
|
grim slurp
|
||||||
|
swaylock
|
||||||
|
swayidle
|
||||||
|
light
|
||||||
|
mako
|
||||||
|
wl-clipboard
|
||||||
|
wf-recorder
|
||||||
|
];
|
||||||
|
extraSessionCommands = ''
|
||||||
|
export GDK_BACKEND=wayland
|
||||||
|
export CLUTTER_BACKEND=wayland
|
||||||
|
export SDL_VIDEODRIVER=wayland
|
||||||
|
# needs qt5.qtwayland in systemPackages
|
||||||
|
export QT_QPA_PLATFORM=wayland-egl
|
||||||
|
export QT_WAYLAND_FORCE_DPI=physical
|
||||||
|
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
|
||||||
|
# Fix for some Java AWT applications (e.g. Android Studio),
|
||||||
|
# use this if they aren't displayed properly:
|
||||||
|
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||||
|
'';
|
||||||
|
}
|
|
@ -1,35 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
mkIf (elem "xserver" config.machine.services) {
|
|
||||||
services.gnome3.gvfs.enable = true;
|
|
||||||
environment.variables.GIO_EXTRA_MODULES = [ "${pkgs.gnome3.gvfs}/lib/gio/modules" ];
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
layout = "de";
|
|
||||||
videoDrivers = [ "intel" ];
|
|
||||||
windowManager = {
|
|
||||||
i3 = {
|
|
||||||
enable = true;
|
|
||||||
configFile = ../config/etc/i3/config;
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
dmenu
|
|
||||||
file
|
|
||||||
i3lock
|
|
||||||
i3status
|
|
||||||
];
|
|
||||||
};
|
|
||||||
default = "i3";
|
|
||||||
};
|
|
||||||
# add switch for Lilim
|
|
||||||
libinput = {
|
|
||||||
enable = true;
|
|
||||||
tapping = true;
|
|
||||||
disableWhileTyping = false;
|
|
||||||
naturalScrolling = false;
|
|
||||||
horizontalScrolling =true;
|
|
||||||
};
|
|
||||||
dpi = 192;
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in a new issue