diff --git a/common.nix b/common.nix index f7286d4..fee29ba 100644 --- a/common.nix +++ b/common.nix @@ -43,16 +43,10 @@ with builtins; }; services = { - - usbmuxd.enable = true; - gvfs.enable = true; openssh.enable = true; - - }; programs = { - dconf.enable = true; mtr.enable = true; @@ -60,7 +54,6 @@ with builtins; enable = true; enableSSHSupport = true; }; - }; time.timeZone = "Europe/Berlin"; diff --git a/modules/default.nix b/modules/default.nix index ec0b9cc..10ab69e 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,7 +1,7 @@ { ... }: { imports = [ - ./desktop.nix + ./desktop ./terminal.nix ./neovim.nix ./zsh.nix diff --git a/modules/desktop.nix b/modules/desktop.nix deleted file mode 100644 index 73786f4..0000000 --- a/modules/desktop.nix +++ /dev/null @@ -1,563 +0,0 @@ -{ config, lib, pkgs, ... }: - -let - cfg = config.jade.desktop; - window-screenshot = pkgs.writeShellScriptBin "window-screenshot.sh" (builtins.readFile ../scripts/desktop/window-screenshot.sh); - # desktop-ctl = pkgs.writeShellScriptBin "desktop-ctl.sh" (builtins.readFile ../scripts/desktop/desktop-ctl.sh); - desktop-ctl = import ../scripts/desktop/desktopctl.nix { pkgs = pkgs; }; - # search and open in browser - searchwolf = import ../scripts/desktop/searchwolf.nix { pkgs = pkgs; }; - # permaclip - pc-get = pkgs.writeShellScriptBin "pc-get.sh" (builtins.readFile ../scripts/desktop/permaclip/pc-get.sh); - pc-set = pkgs.writeShellScriptBin "pc-set.sh" (builtins.readFile ../scripts/desktop/permaclip/pc-set.sh); - em-record = pkgs.writeShellScriptBin "em-record.sh" (builtins.readFile ../scripts/desktop/macros/record.sh); - em-play = pkgs.writeShellScriptBin "em-play.sh" (builtins.readFile ../scripts/desktop/macros/play.sh); - em-play-loop = pkgs.writeShellScriptBin "em-play-loop.sh" (builtins.readFile ../scripts/desktop/macros/play-loop.sh); - ocr-screenshot = pkgs.writeShellScriptBin "ocr-screenshot.sh" (builtins.readFile ../scripts/desktop/ocr-screenshot.sh); - # rofi calculator copied from https://github.com/barbuk/menu-qalc - menu-qalc = pkgs.writeShellScriptBin "menu-qalc" (builtins.readFile ../scripts/desktop/menu-qalc.sh); - #bitw = pkgs.buildGo118Module rec { - #pname = "bitw"; - #version = "0.1.0"; - #src = pkgs.fetchFromGitHub { - #owner = "mvdan"; - #repo = "bitw"; - #rev = "9da6ca0287ae8e4b1aa7fcdf7c4e8c2736718c3b"; - #sha256 = "sha256-qe9y6BEsfsEiPFXlM/SFliSd+2fnfDMHyw/O6EE5hpA="; - #}; - #nativeBuildInputs = with pkgs; [ gitMinimal ]; - #doCheck = false; - #vendorHash = "sha256-KQr0DtyH3xzlFwsDl3MGLRRLQC4+EtdTOG7IhmNCzV4="; - #vendorHash = null; - #GOFLAGS = "-mod=readonly"; - #proxyVendor = true; - #deleteVendor = true; - #preBuild = '' - #go mod vendor - #''; - #}; -in with lib; { - options.jade.desktop = { - enable = mkEnableOption "Enable the i3 setup"; - compositing = mkEnableOption "Enable compositing via picom"; - }; - config = mkIf cfg.enable { - programs.kdeconnect.enable = true; - fonts.fonts = with pkgs; [ - nerdfonts montserrat noto-fonts atkinson-hyperlegible - ]; - - hardware.bluetooth.enable = true; - hardware.keyboard.uhk.enable = true; - hardware.spacenavd.enable = true; - programs.seahorse.enable = true; - security.pam.services.jade.enableGnomeKeyring = true; - - networking.firewall.allowedTCPPorts = [ 8384 22000 ]; - networking.firewall.allowedUDPPorts = [ 8080 22000 21027 ]; - systemd.services."NetworkManager-wait-online".enable = false; - - - qt.platformTheme = "qt5ct"; - virtualisation.libvirtd.enable = true; - - boot.plymouth = { - enable = true; - #theme = "glow"; - }; - programs = { - corectrl.enable = true; - noisetorch.enable = true; - - adb.enable = true; - }; - nixpkgs.overlays = [ - (import (builtins.fetchTarball "https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz")).overlay - ]; - environment.sessionVariables = rec { - QT_QPA_PLATFORMTHEME = "qt5ct"; - TERMINAL = "kitty"; - }; - services = { - printing.enable = true; - mullvad-vpn.enable = true; - gnome.gnome-keyring.enable = true; - - xserver = { - layout = "us"; - xkbVariant = "altgr-intl"; - - enable = true; - - wacom.enable = true; - libinput = { - enable = true; - }; - - desktopManager = { - xterm.enable = false; - }; - - displayManager = { - defaultSession = "none+i3"; - gdm.enable = true; - }; - - windowManager.i3 = { - enable = true; - package = pkgs.i3-gaps; - extraPackages = with pkgs; [ - gnome.gdm i3lock-fancy rofi rofimoji volumeicon feh xorg.xinput dunst - arandr lxappearance gruvbox-dark-gtk gruvbox-dark-icons-gtk - gruvterial-theme flameshot tesseract5 imagemagick xclip polybar kitty - xkeysnail gtk-engine-murrine playerctl xmacro - libwacom wacomtablet xorg.xev - ]; - }; - }; - - pipewire = { - enable = true; - alsa.enable = true; - #alsa.support32Bit = true; - pulse.enable = true; - jack.enable = true; - }; - - syncthing = rec { - enable = true; - user = "jade"; - dataDir = "/home/${user}/Documents"; - configDir = "/home/${user}/Documents/.config/syncthing"; - }; - }; - # desktop things that arent the de {{{ - networking = { - networkmanager.wifi.backend = "iwd"; - extraHosts = '' - 127.0.0.1 www.youtube.com - 127.0.0.1 www.reddit.com - 127.0.0.1 www.tiktok.com - 127.0.0.1 www.twitter.com - 127.0.0.1 www.instagram.com - 127.0.0.1 www.facebook.com - 127.0.0.1 www.snapchat.com - - 127.0.0.1 youtube.com - 127.0.0.1 reddit.com - 127.0.0.1 tiktok.com - 127.0.0.1 twitter.com - 127.0.0.1 instagram.com - 127.0.0.1 facebook.com - 127.0.0.1 snapchat.com - - 127.0.0.1 google-analytics.com - 127.0.0.1 stats.g.doubleclick.net - 127.0.0.1 googleadservices.com - 127.0.0.1 googletagmanager.com - 127.0.0.1 googletagservices.com - 127.0.0.1 googlesyndication.com - ''; - }; - # }}} - home-manager.users.jade = { pkgs, ... }: { - home.packages = with pkgs; [ - # from environment.systemPackages cleanup - pavucontrol font-manager xdotool xorg.xwininfo gparted - networkmanagerapplet pulseaudioFull speedtest-cli librewolf firefox vlc - xfce.thunar xfce.tumbler xfce.thunar-archive-plugin gnome.file-roller - uhk-agent cool-retro-term lutris xorg.xhost xdg-desktop-portal-gtk nheko - obsidian audacity easyeffects virt-manager evince openrgb krita gimp - inkscape-with-extensions virglrenderer ddccontrol-db - firebird-emu obs-studio kdenlive fspy spacenav-cube-example cava - spacenavd libspnav evolution godot colmap gitg - gnome-builder gpick qdirstat ffmpeg_5 scribus libimobiledevice - libimobiledevice-glue ifuse usbmuxd libusbmuxd gvfs gphoto2 gphoto2fs - phockup digikam fluent-reader nextcloud-client - - # mullvad currently broken? - mullvad-vpn - - # external - libnotify - i3lock-fancy rofi rofimoji volumeicon feh xorg.xinput dunst - arandr lxappearance gruvbox-dark-gtk gruvbox-dark-icons-gtk - gruvterial-theme flameshot tesseract5 imagemagick xclip polybar kitty - nomacs # image viewer - xkeysnail gtk-engine-murrine playerctl xmacro pa_applet brightnessctl - drawing # drwaing! - libqalculate # needed by menu-qalc - ddgr jq # needed by searchwolf - brillo # kb backlight - - # pw manager - bitwarden bitwarden-cli - - # custom scripts - window-screenshot desktop-ctl em-record em-play em-play-loop ocr-screenshot menu-qalc - pc-get pc-set searchwolf - - # themes - gruvbox-dark-gtk gruvbox-dark-icons-gtk - - # meow - oneko - - ]; - services.kdeconnect = { - enable = true; - indicator = true; - }; - # i3 {{{ - xsession = { - enable = true; - windowManager.i3 = { - enable = true; - config = { - bars = []; - terminal = "kitty"; - workspaceAutoBackAndForth = true; - focus = { - followMouse = false; - }; - # Startup {{{ - startup = [ - # Keyboard remapping - { command = "xhost +"; } - { command = "xkeysnail ${../other/xkeysnail.py}"; always = true; } - { command = "sleep 4 && setxkbmap -layout us -variant altgr-intl"; always = true; } - { command = "feh --bg-fill ${../other/wallpaper.jpg}"; always = true; notification = false; } - { command = "picom"; } - { command = "pkill nm-applet; nm-applet"; always = true; } - { command = "pkill pa-applet; pa-applet"; always = true; } - { command = "pkill oneko; oneko -tofocus -tora -position +-1+5 -fg palevioletred3 -bg pink -name 'Rose the desktop kitty'"; always = true; } - { command = "mullvad-vpn --background"; always = true; } - { command = "pkill polybar; polybar"; always = true; } - { command = "bitwarden"; } - ]; - # }}} - # Assigns {{{ - assigns = { - "1" = [ { class = "discord"; } { class = "nheko"; } ]; - "2" = [ { class = "librewolf"; } ]; - }; - # }}} - # Keyboard shortcuts {{{ - modifier = "Mod4"; - modes = { - resize = with { - # mod = builtins.break config.xsession.windowManager.i3.config.modifier; - mod = builtins.break "Mod4"; - }; { - aaa = builtins.break "a"; - "${mod}+h" = "resize shrink width 10 px or 10 ppt"; - "${mod}+j" = "resize grow height 10 px or 10 ppt"; - "${mod}+k" = "resize shrink height 10 px or 10 ppt"; - "${mod}+l" = "resize grow width 10 px or 10 ppt"; - - "Return" = "mode default"; - "Escape" = "mode default"; - "${mod}+r" = "mode default"; - }; - }; - keybindings = with { - #mod = config.xsession.windowManager.i3.config.modifier; - mod = "Mod4"; - }; lib.mkOptionDefault { - # switch window focus - "${mod}+h" = "focus left"; - "${mod}+j" = "focus down"; - "${mod}+k" = "focus up"; - "${mod}+l" = "focus right"; - # move windows - "${mod}+Shift+h" = "move left"; - "${mod}+Shift+j" = "move down"; - "${mod}+Shift+k" = "move up"; - "${mod}+Shift+l" = "move right"; - # layout shit - "${mod}+shift+semicolon" = "split h"; - "${mod}+semicolon" = "split v"; - "${mod}+f" = "fullscreen toggle"; - "${mod}+Shift+w" = "layout tabbed"; - "${mod}+e" = "layout toggle split"; - "${mod}+Shift+space" = "floating toggle"; - # focus parents/children - "${mod}+Shift+a" = "focus parent"; - "${mod}+Shift+c" = "focus child"; - # screenshot - "${mod}+w" = "exec window-screenshot.sh"; - "${mod}+s" = "exec flameshot gui -c -p $HOME/Pictures/screenshots"; - "${mod}+a" = "exec flameshot screen -c -p $HOME/Pictures/screenshots"; - "${mod}+t" = "exec ocr-screenshot.sh"; - - # rofi fuckery - "${mod}+d" = "exec --no-startup-id rofi -show drun -theme ${../other/rofi-themes/applauncher.rasi}"; - "${mod}+space" = "exec --no-startup-id rofi -show combi -combi-show window#run -modes combi -theme ${../other/rofi-themes/applauncher.rasi}"; - "${mod}+i" = "exec --no-startup-id rofimoji -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy"; - "${mod}+Shift+e" = "exec --no-startup-id rofi -show \"desktopctl\" -modes \"desktopctl:${desktop-ctl.outPath}/bin/desktopctl\" -theme ${../other/rofi-themes/applauncher.rasi}"; - "${mod}+m" = "exec --no-startup-id menu-qalc"; - - "${mod}+o" = "exec --no-startup-id rofi -show searchwolf -modes \"searchwolf:${searchwolf.outPath}/bin/searchwolf\""; - - # audio - "XF86AudioRaiseVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status"; - "XF86AudioLowerVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status"; - "XF86AudioMute" = "exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status"; - "XF86AudioMicMute" = "exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status"; - - "XF86AudioNext" = "exec playerctl next"; - "XF86AudioPrev" = "exec playerctl previous"; - "XF86AudioPause" = "exec playerctl pause"; - "XF86AudioPlay" = "exec playerctl play"; - "XF86AudioStop" = "exec playerctl stop"; - - "XF86MonBrightnessUp" = "exec brightnessctl set 5%+"; - "XF86MonBrightnessDown" = "exec brightnessctl set 5%-"; - - "XF86KbdBrightnessUp" = "exec brillo -kA 10.0"; - "XF86KbdBrightnessDown" = "exec brillo -kU 10.0"; - - # macros - "${mod}+q" = "exec em-record.sh"; - "${mod}+p" = "exec em-play.sh"; - "${mod}+Shift+p" = "exec em-play-loop.sh"; - - # permaclip - "${mod}+c" = "exec rofi -show register -modes \"register:${pc-set.outPath}/bin/pc-set.sh\" -theme gruvbox-dark"; - "${mod}+v" = "exec rofi -show register -modes \"register:${pc-get.outPath}/bin/pc-get.sh\" -theme gruvbox-dark"; - }; - # }}} - # Visuals {{{ - fonts = { - names = [ "Atkinson Hyperlegible" ]; - style = "Regular"; - size = 9.0; - }; - gaps = { - #top = 24; - inner = 15; - outer = 0; - smartGaps = true; - smartBorders = "on"; - }; - colors = { - background = "#1d2021"; - focused = { background = "#282828"; border = "#504945"; childBorder = "#7c6f64"; indicator = "#504945"; text = "#ebdbb2"; }; - focusedInactive = { background = "#1d2021"; border = "#504945"; childBorder = "#665c54"; indicator = "#664c54"; text = "#d5c4a1"; }; - placeholder = { background = "#1d2021"; border = "#00ff00"; childBorder = "#504945"; indicator = "#504945"; text = "#928374"; }; - unfocused = { background = "#1d2021"; border = "#3c3836"; childBorder = "#504945"; indicator = "#504945"; text = "#bdae93"; }; - urgent = { background = "#9d0006"; border = "#cc241d"; childBorder = "#3c3836"; indicator = "#fb4943"; text = "#ebdbb2"; }; - }; - window = { - border = 2; - titlebar = false; - }; - # }}} - }; - }; - }; - # }}} - # Compositing {{{ - services.picom = mkIf config.jade.desktop.compositing { - enable = true; - backend = "glx"; - - shadow = true; - shadowOffsets = [ 25 15 ]; - shadowOpacity = 0.045; - shadowExclude = [ - "class_g = 'Conky'" - "class_g ?= 'Notify-osd'" - "class_g = 'Cairo-clock'" - "_GTK_FRAME_EXTENTS@:c" - "class_g != 'Rofi'" - ]; - - vSync = true; - #opacityRules = [ - #"90:class_g = 'kitty'" - #"80:class_g = 'Signal'" - #"80:class_g = 'Rofi'" - #"80:class_g = 'discord'" - #"80:class_g = 'Mailspring'" - #"85:class_g = 'nheko'" - #"75:class_g = 'obsidian'" - #]; - settings = { - # blur - #"detect-client-opacity = true;" - #"blur-method = \"gaussian\"" - #"blur-size = 30" - #"blur-deviation = 15" - #"blur-background-fixed = true" - #"detect-client-opacity" = true; - #"blur-method" = "gaussian"; - #"blur-size" = 30; - #"blur-deviation" = 15; - #"blur-background-fixed" = true; - - # fading rofi - "fading" = true; - "fade-in-step" = 0.25; - "fade-out-step" = 0.2; - "fade-delta" = 20; - "fade-exclude" = [ "class_g != 'Rofi'" ]; - # use damage information - "use-damage" = true; - }; - }; - # }}} - # Polybar {{{ - services.polybar = { - enable = true; - - script = ""; - settings = { - colors = { - background = "#282828"; - background-alt = "#3c3836"; - foreground = "#ebdbb2"; - primary = "#d65d0e"; - secondary = "#fe8019"; - alert = "#cc241d"; - disabled = "#504945"; - }; - "bar/status" = { - # Style - width = "100%"; - height = "24px"; - radius = 0; - tray-position = "center"; - background = "\${colors.background}"; - foreground = "\${colors.foreground}"; - line-size = "4px"; - border-color = "#00000000"; - padding-left = 0; - padding-right = 1; - module-margin = 1; - separator = "|"; - separator-foreground = "\${colors.disabled}"; - font-0 = "FiraCode Nerd Font"; - modules-left = "xworkspaces xwindow"; - modules-right = "memory cpu wlan battery date"; - cursor-click = "pointer"; - cursor-scroll = "ns-resize"; - enable-ipc = true; - wm-restack = "i3"; - override-redirect = false; - }; - - "module/xworkspaces" = { - type = "internal/xworkspaces"; - label-active = ""; - label-active-padding = 1; - label-occupied = ""; - label-occupied-padding = 1; - label-urgent = ""; - label-urgent-foreground = "\${colors.alert}"; - label-urgent-padding = 1; - label-empty = ""; - label-empty-foreground = "\${colors.disabled}"; - label-empty-padding = 1; - }; - - "module/xwindow" = { - type = "internal/xwindow"; - label = "%title:0:60:...%"; - }; - - "module/memory" = { - type = "internal/memory"; - interval = 2; - format-prefix = "﬙ "; - format-prefix-foreground = "\${colors.primary}"; - label = "%percentage_used:2%%"; - }; - - "module/cpu" = { - type = "internal/cpu"; - interval = "2"; - format-prefix = " "; - format-prefix-foreground = "\${colors.primary}"; - label = "%percentage:2%%"; - }; - - "network-base" = { - type = "internal/network"; - interval = 5; - format-connected = ""; - format-disconnected = ""; - label-disconnected = "%{F#F0C674}%ifname%%{F#707880} disconnected"; - }; - - "module/wlan" = { - "inherit" = "network-base"; - interface-type = "wireless"; - label-connected = "%{F#F0C674}%ifname%%{F-} %essid% %local_ip%"; - }; - - "module/battery" = { - type = "internal/battery"; - poll-interval = 1; - full-at = 96; - battery = "BAT0"; - adapter = "ADP1"; - time-format = "%H:%M"; - label-charging = "%percentage%% %time%"; - format-charging = ""; - label-discharging = "%percentage%% %time%"; - format-discharging = " "; - label-full = "%percentage%%"; - format-full = " "; - label-low = "%percentage%%"; - format-low = " "; - ramp.capacity = [ "" "" "" "" "" "" "" "" "" "" ]; - }; - - "module/date" = { - type = "internal/date"; - interval = 1; - date = "%Y-%m-%d %H:%M:%S"; - label = "%date%"; - label-foreground = "\${colors.foreground}"; - }; - - "settings" = { - screenchange-reload = true; - pseudo-transparency = true; - }; - }; - }; - # }}} - # gtk {{{ - gtk = { - enable = true; - cursorTheme = { - package = pkgs.phinger-cursors; - name = "phinger-cursors"; - size = 30; - }; - font = { - package = pkgs.atkinson-hyperlegible; - name = "Atkinson Hyperlegible"; - size = 11.5; - }; - iconTheme = { - package = pkgs.gruvbox-dark-icons-gtk; - name = "gruvbox-dark-icons"; - }; - theme = { - package = pkgs.gruvbox-dark-gtk; - name = "gruvbox-dark"; - }; - }; - # }}} - # Qt {{{ - qt = { - enable = true; - platformTheme = "gtk"; - }; - # }}} - }; - }; -} diff --git a/modules/desktop/audio.nix b/modules/desktop/audio.nix new file mode 100644 index 0000000..8abfc6c --- /dev/null +++ b/modules/desktop/audio.nix @@ -0,0 +1,33 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + programs = { + noisetorch.enable = true; + }; + services = { + pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + jack.enable = true; + }; + }; + home-manager.users.jade = { pkgs, ... }: { + home.packages = with pkgs; [ + pavucontrol + pulseaudioFull + easyeffects + cava + volumeicon + playerctl + ]; + xsession.windowManager.i3.config.startup = [ + { + command = "pkill volumeicon; volumeicon"; + always = true; + } + ]; + }; + }; +} diff --git a/modules/desktop/cloud.nix b/modules/desktop/cloud.nix new file mode 100644 index 0000000..01ae017 --- /dev/null +++ b/modules/desktop/cloud.nix @@ -0,0 +1,33 @@ +{ config, lib, pkgs, ... }: + +let cfg = config.jade.desktop.cloud; +in with lib; { + options.jade.desktop.cloud = { + enable = mkEnableOption "Enable cloud things"; + }; + config = mkIf cfg.enable { + home-manager.users.jade = { pkgs, ... }: { + services.nextcloud-client = { + enable = true; + startInBackground = true; + }; + programs.rbw = { + enable = true; + settings = { + base_url = "vw.schrottkatze.de"; + email = "jade@schrottkatze.de"; + }; + }; + home.packages = with pkgs; [ + fluent-reader + bitwarden + rofi-rbw + ]; + xsession.windowManager.i3.config.startup = [ + { + command = "bitwarden"; + } + ]; + }; + }; +} diff --git a/modules/desktop/compositing.nix b/modules/desktop/compositing.nix new file mode 100644 index 0000000..b9c368d --- /dev/null +++ b/modules/desktop/compositing.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.jade.desktop.compositing; +in with lib; { + options.jade.desktop.compositing = { + enable = mkEnableOption "Enable compositing with picom"; + }; + config = mkIf cfg.enable { + services.picom = { + enable = true; + backend = "glx"; + + shadow = true; + shadowOffsets = [ (-40) (-30) ]; + shadowOpacity = 0.2; + shadowExclude = [ + "class_g = 'Conky'" + "class_g ?= 'Notify-osd'" + "class_g = 'Cairo-clock'" + "_GTK_FRAME_EXTENTS@:c" + "class_g != 'Rofi'" + ]; + + vSync = true; + settings = { + "shadow-radius" = 40; + # fading rofi + "fading" = true; + "fade-in-step" = 0.25; + "fade-out-step" = 0.2; + "fade-delta" = 20; + "fade-exclude" = [ "class_g != 'Rofi'" ]; + # use damage information + "use-damage" = true; + }; + }; + # }}} + }; +} diff --git a/modules/desktop/creative.nix b/modules/desktop/creative.nix new file mode 100644 index 0000000..d50ea5b --- /dev/null +++ b/modules/desktop/creative.nix @@ -0,0 +1,24 @@ +{ config, lib, pkgs, ... }: + +let cfg = config.jade.desktop.creative; +in with lib; { + options.jade.desktop.creative = { + enable = mkEnableOption "Enable creative software"; + }; + config = mkIf cfg.enable { + home-manager.users.jade = { pkgs, ... }: { + home.packages = with pkgs; [ + audacity + krita + gimp + inkscape-with-extensions + obs-studio + kdenlive + fspy + digikam + scribus + rawtherapee + ]; + }; + }; +} diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix new file mode 100644 index 0000000..cb253b3 --- /dev/null +++ b/modules/desktop/default.nix @@ -0,0 +1,378 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.jade.desktop; + window-screenshot = pkgs.writeShellScriptBin "window-screenshot.sh" (builtins.readFile ../../scripts/desktop/window-screenshot.sh); + # desktop-ctl = pkgs.writeShellScriptBin "desktop-ctl.sh" (builtins.readFile ../scripts/desktop/desktop-ctl.sh); + desktop-ctl = import ../../scripts/desktop/desktopctl.nix { pkgs = pkgs; }; + # search and open in browser + searchwolf = import ../../scripts/desktop/searchwolf.nix { pkgs = pkgs; }; + # permaclip + pc-get = pkgs.writeShellScriptBin "pc-get.sh" (builtins.readFile ../../scripts/desktop/permaclip/pc-get.sh); + pc-set = pkgs.writeShellScriptBin "pc-set.sh" (builtins.readFile ../../scripts/desktop/permaclip/pc-set.sh); + em-record = pkgs.writeShellScriptBin "em-record.sh" (builtins.readFile ../../scripts/desktop/macros/record.sh); + em-play = pkgs.writeShellScriptBin "em-play.sh" (builtins.readFile ../../scripts/desktop/macros/play.sh); + em-play-loop = pkgs.writeShellScriptBin "em-play-loop.sh" (builtins.readFile ../../scripts/desktop/macros/play-loop.sh); + ocr-screenshot = pkgs.writeShellScriptBin "ocr-screenshot.sh" (builtins.readFile ../../scripts/desktop/ocr-screenshot.sh); + # rofi calculator copied from https://github.com/barbuk/menu-qalc + menu-qalc = pkgs.writeShellScriptBin "menu-qalc" (builtins.readFile ../../scripts/desktop/menu-qalc.sh); + #bitw = pkgs.buildGo118Module rec { + #pname = "bitw"; + #version = "0.1.0"; + #src = pkgs.fetchFromGitHub { + #owner = "mvdan"; + #repo = "bitw"; + #rev = "9da6ca0287ae8e4b1aa7fcdf7c4e8c2736718c3b"; + #sha256 = "sha256-qe9y6BEsfsEiPFXlM/SFliSd+2fnfDMHyw/O6EE5hpA="; + #}; + #nativeBuildInputs = with pkgs; [ gitMinimal ]; + #doCheck = false; + #vendorHash = "sha256-KQr0DtyH3xzlFwsDl3MGLRRLQC4+EtdTOG7IhmNCzV4="; + #vendorHash = null; + #GOFLAGS = "-mod=readonly"; + #proxyVendor = true; + #deleteVendor = true; + #preBuild = '' + #go mod vendor + #''; + #}; +in with lib; { + imports = (mkIf cfg.enable [ + ./audio.nix + ./gaming.nix + ./creative.nix # TODO: more fine grained choices, not every setup needs fspy or rawtherapee + ./compositing.nix + ./ios-compat.nix + ./syncthing.nix + ./kdeconnect.nix + ./themeing.nix + ./cloud.nix + ./networking.nix + ./polybar.nix + ./social.nix + ./xkeysnail.nix + ]).content; + options.jade.desktop = { + enable = mkEnableOption "Enable the i3 setup"; + }; + config = mkIf cfg.enable { + fonts.fonts = with pkgs; [ + nerdfonts montserrat noto-fonts + ]; + + hardware.bluetooth.enable = true; + hardware.keyboard.uhk.enable = true; + hardware.spacenavd.enable = true; + programs.seahorse.enable = true; + security.pam.services.jade.enableGnomeKeyring = true; + + virtualisation.libvirtd.enable = true; + + boot.plymouth = { + enable = true; + #theme = "glow"; + }; + services = { + printing.enable = true; + gnome.gnome-keyring.enable = true; + + xserver = { + layout = "us"; + xkbVariant = "altgr-intl"; + + enable = true; + + wacom.enable = true; + libinput = { + enable = true; + }; + + desktopManager = { + xterm.enable = false; + }; + + displayManager = { + defaultSession = "none+i3"; + gdm.enable = true; + }; + + windowManager.i3 = { + enable = true; + extraPackages = with pkgs; [ + gnome.gdm + i3lock-fancy + rofi + rofimoji + feh + xorg.xinput + dunst + arandr + flameshot + tesseract5 + imagemagick + xclip + xmacro + libwacom + wacomtablet + xorg.xev + ]; + }; + }; + + + }; + # sensible modules: + # - [x] audio + # - [x] compositing (picom configs) + # - [x] gaming (steam, lutris, prism...) + # - [x] cloud (pw manager, nextcloud, fluent reader) + # - [x] syncthing + # - [x] social (evolution, discord, matrix?) + # - [ ] set up mail accounts properly + # - [x] creative (obs, blender, gimp n shit) + # - [x] apple-stuff (ifuse etc) + # - [x] themeing + # - [x] vpn/networking stuff + # - [ ] keymap + # - [ ] seperate keymap by modules like autostarts + # - [x] kdeconnect + # - [x] polybar + # - [ ] bluetooth + # - [ ] spacenav support (with custom systemd service) + # - [ ] wacom config + # - [x] xkeysnail + # - [ ] oneko + # also useful: + # - every custom script its own flake n stuff + + home-manager.users.jade = { pkgs, ... }: { + home.packages = with pkgs; [ + # categories + # filemanager + xfce.thunar + xfce.tumbler + xfce.thunar-archive-plugin + gnome.file-roller + # media/file viewers + vlc + evince + nomacs + + # from environment.systemPackages cleanup + font-manager + xdotool + xorg.xwininfo + gparted + librewolf + firefox + uhk-agent + cool-retro-term + xdg-desktop-portal-gtk + nheko + obsidian + virt-manager + ddccontrol-db + firebird-emu + godot + gitg + gpick + qdirstat + ffmpeg_5 + + spacenav-cube-example + spacenavd + libspnav + + # external + libnotify + i3lock-fancy + rofi + rofimoji + feh + xorg.xinput + dunst + arandr + flameshot + tesseract5 + imagemagick + xclip + polybar + kitty + xmacro + brightnessctl + drawing # drwaing! + libqalculate # needed by menu-qalc + ddgr jq # needed by searchwolf + brillo # kb backlight + + # custom scripts + window-screenshot + desktop-ctl + em-record + em-play + em-play-loop + ocr-screenshot + menu-qalc + pc-get + pc-set + searchwolf + + # meow + oneko + + ]; + # i3 {{{ + xsession = { + enable = true; + windowManager.i3 = { + enable = true; + config = { + bars = []; + workspaceAutoBackAndForth = true; + focus = { + followMouse = false; + }; + # Startup {{{ + startup = [ + # wallpaper + { + command = "feh --bg-fill ${../../other/wallpaper.jpg}"; + always = true; + notification = false; + } + + # meowmeowmeow + { + command = "pkill oneko; oneko -tofocus -tora -position +-1+5 -fg palevioletred3 -bg pink -name 'Rose the desktop kitty'"; + always = true; + } + ]; + # }}} + # Assigns {{{ + assigns = { + "1" = [ + { class = "discord"; } + { class = "nheko"; } + ]; + "2" = [ + { class = "librewolf"; } + ]; + }; + # }}} + # Keyboard shortcuts {{{ + modifier = "Mod4"; + modes = { + resize = with { + # mod = builtins.break config.xsession.windowManager.i3.config.modifier; + mod = builtins.break "Mod4"; + }; { + aaa = builtins.break "a"; + "${mod}+h" = "resize shrink width 10 px or 10 ppt"; + "${mod}+j" = "resize grow height 10 px or 10 ppt"; + "${mod}+k" = "resize shrink height 10 px or 10 ppt"; + "${mod}+l" = "resize grow width 10 px or 10 ppt"; + + "Return" = "mode default"; + "Escape" = "mode default"; + "${mod}+r" = "mode default"; + }; + }; + keybindings = with { + #mod = config.xsession.windowManager.i3.config.modifier; + mod = "Mod4"; + }; lib.mkOptionDefault { + # switch window focus + "${mod}+h" = "focus left"; + "${mod}+j" = "focus down"; + "${mod}+k" = "focus up"; + "${mod}+l" = "focus right"; + # move windows + "${mod}+Shift+h" = "move left"; + "${mod}+Shift+j" = "move down"; + "${mod}+Shift+k" = "move up"; + "${mod}+Shift+l" = "move right"; + # layout shit + "${mod}+shift+semicolon" = "split h"; + "${mod}+semicolon" = "split v"; + "${mod}+f" = "fullscreen toggle"; + "${mod}+Shift+w" = "layout tabbed"; + "${mod}+e" = "layout toggle split"; + "${mod}+Shift+space" = "floating toggle"; + # focus parents/children + "${mod}+Shift+a" = "focus parent"; + "${mod}+Shift+c" = "focus child"; + # screenshot + "${mod}+w" = "exec window-screenshot.sh"; + "${mod}+s" = "exec flameshot gui -c -p $HOME/Pictures/screenshots"; + "${mod}+a" = "exec flameshot screen -c -p $HOME/Pictures/screenshots"; + "${mod}+t" = "exec ocr-screenshot.sh"; + + # rofi fuckery + "${mod}+d" = "exec --no-startup-id rofi -show drun -theme ${../../other/rofi-themes/applauncher.rasi}"; + "${mod}+space" = "exec --no-startup-id rofi -show combi -combi-show window#run -modes combi -theme ${../../other/rofi-themes/applauncher.rasi}"; + "${mod}+i" = "exec --no-startup-id rofimoji -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy"; + "${mod}+Shift+e" = "exec --no-startup-id rofi -show \"desktopctl\" -modes \"desktopctl:${desktop-ctl.outPath}/bin/desktopctl\" -theme ${../../other/rofi-themes/applauncher.rasi}"; + "${mod}+m" = "exec --no-startup-id menu-qalc"; + + "${mod}+o" = "exec --no-startup-id rofi -show searchwolf -modes \"searchwolf:${searchwolf.outPath}/bin/searchwolf\""; + + # audio + "XF86AudioRaiseVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status"; + "XF86AudioLowerVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status"; + "XF86AudioMute" = "exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status"; + "XF86AudioMicMute" = "exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status"; + + "XF86AudioNext" = "exec playerctl next"; + "XF86AudioPrev" = "exec playerctl previous"; + "XF86AudioPause" = "exec playerctl pause"; + "XF86AudioPlay" = "exec playerctl play"; + "XF86AudioStop" = "exec playerctl stop"; + + "XF86MonBrightnessUp" = "exec brightnessctl set 5%+"; + "XF86MonBrightnessDown" = "exec brightnessctl set 5%-"; + + "XF86KbdBrightnessUp" = "exec brillo -kA 10.0"; + "XF86KbdBrightnessDown" = "exec brillo -kU 10.0"; + + # macros + "${mod}+q" = "exec em-record.sh"; + "${mod}+p" = "exec em-play.sh"; + "${mod}+Shift+p" = "exec em-play-loop.sh"; + + # permaclip + "${mod}+c" = "exec rofi -show register -modes \"register:${pc-set.outPath}/bin/pc-set.sh\" -theme gruvbox-dark"; + "${mod}+v" = "exec rofi -show register -modes \"register:${pc-get.outPath}/bin/pc-get.sh\" -theme gruvbox-dark"; + }; + # }}} + # Visuals {{{ + fonts = { + names = [ "Atkinson Hyperlegible" ]; + style = "Regular"; + size = 9.0; + }; + gaps = { + #top = 24; + inner = 15; + outer = 0; + smartGaps = true; + smartBorders = "on"; + }; + colors = { + background = "#1d2021"; + focused = { background = "#282828"; border = "#504945"; childBorder = "#7c6f64"; indicator = "#504945"; text = "#ebdbb2"; }; + focusedInactive = { background = "#1d2021"; border = "#504945"; childBorder = "#665c54"; indicator = "#664c54"; text = "#d5c4a1"; }; + placeholder = { background = "#1d2021"; border = "#00ff00"; childBorder = "#504945"; indicator = "#504945"; text = "#928374"; }; + unfocused = { background = "#1d2021"; border = "#3c3836"; childBorder = "#504945"; indicator = "#504945"; text = "#bdae93"; }; + urgent = { background = "#9d0006"; border = "#cc241d"; childBorder = "#3c3836"; indicator = "#fb4943"; text = "#ebdbb2"; }; + }; + window = { + border = 2; + titlebar = false; + }; + # }}} + }; + }; + }; + }; + }; +} diff --git a/modules/desktop/gaming.nix b/modules/desktop/gaming.nix new file mode 100644 index 0000000..2027662 --- /dev/null +++ b/modules/desktop/gaming.nix @@ -0,0 +1,21 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.jade.desktop.gaming; +in with lib; { + options.jade.desktop.gaming = { + enable = mkEnableOption "Enable gaming stuff"; + }; + config = mkIf cfg.enable { + nixpkgs.overlays = [ + (import (builtins.fetchTarball "https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz")).overlay + ]; + programs.steam.enable = true; + home-manager.users.jade = { pkgs, ... }: { + home.packages = with pkgs; [ + lutris + prismlauncher + ]; + }; + }; +} diff --git a/modules/desktop/ios-compat.nix b/modules/desktop/ios-compat.nix new file mode 100644 index 0000000..c5c9950 --- /dev/null +++ b/modules/desktop/ios-compat.nix @@ -0,0 +1,24 @@ +{ config, lib, pkgs, ... }: + +let cfg = config.jade.desktop.ios-compat; +in with lib; { + options.jade.desktop.ios-compat = { + enable = mkEnableOption "Enable the ios compatability programs"; + }; + config = mkIf cfg.enable { + services = { + usbmuxd.enable = true; + gvfs.enable = true; + }; + home-manager.users.jade = { pkgs, ... }: { + home.packages = with pkgs; [ + libimobiledevice + libimobiledevice-glue + ifuse + usbmuxd + libusbmuxd + gvfs + ]; + }; + }; +} diff --git a/modules/desktop/kdeconnect.nix b/modules/desktop/kdeconnect.nix new file mode 100644 index 0000000..84d48fc --- /dev/null +++ b/modules/desktop/kdeconnect.nix @@ -0,0 +1,17 @@ +{ config, lib, pkgs, ... }: + +let cfg = config.jade.desktop.kdeconnect; +in with lib; { + options.jade.desktop.kdeconnect = { + enable = mkEnableOption "Enable KDE connect"; + }; + config = mkIf cfg.enable { + programs.kdeconnect.enable = true; + home-manager.users.jade = { pkgs, ... }: { + services.kdeconnect = { + enable = true; + indicator = true; + }; + }; + }; +} diff --git a/modules/desktop/networking.nix b/modules/desktop/networking.nix new file mode 100644 index 0000000..90ddc74 --- /dev/null +++ b/modules/desktop/networking.nix @@ -0,0 +1,63 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + networking = { + networkmanager.wifi.backend = "iwd"; + firewall = { + allowedTCPPorts = [ + 8384 + 22000 + ]; + allowedUDPPorts = [ + 8080 + 22000 + 21027 + ]; + }; + extraHosts = '' + 127.0.0.1 www.youtube.com + 127.0.0.1 www.reddit.com + 127.0.0.1 www.tiktok.com + 127.0.0.1 www.twitter.com + 127.0.0.1 www.instagram.com + 127.0.0.1 www.facebook.com + 127.0.0.1 www.snapchat.com + + 127.0.0.1 youtube.com + 127.0.0.1 reddit.com + 127.0.0.1 tiktok.com + 127.0.0.1 twitter.com + 127.0.0.1 instagram.com + 127.0.0.1 facebook.com + 127.0.0.1 snapchat.com + + 127.0.0.1 google-analytics.com + 127.0.0.1 stats.g.doubleclick.net + 127.0.0.1 googleadservices.com + 127.0.0.1 googletagmanager.com + 127.0.0.1 googletagservices.com + 127.0.0.1 googlesyndication.com + ''; + }; + systemd.services."NetworkManager-wait-online".enable = false; + services.mullvad-vpn.enable = true; + home-manager.users.jade = { pkgs, ... }: { + home.packages = with pkgs; [ + networkmanagerapplet + mullvad-vpn + speedtest-cli + ]; + xsession.windowManager.i3.config.startup = [ + { + command = "pkill nm-applet; nm-applet"; + always = true; + } + { + command = "mullvad-vpn --background"; + always = true; + } + ]; + }; + }; +} diff --git a/modules/desktop/polybar.nix b/modules/desktop/polybar.nix new file mode 100644 index 0000000..a22592b --- /dev/null +++ b/modules/desktop/polybar.nix @@ -0,0 +1,134 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + home-manager.users.jade = { pkgs, ... }: { + xsession.windowManager.i3.config.startup = [ + { + command = "pkill polybar; polybar"; + always = true; + } + ]; + services.polybar = { + enable = true; + + script = ""; + settings = { + colors = { + background = "#282828"; + background-alt = "#3c3836"; + foreground = "#ebdbb2"; + primary = "#d65d0e"; + secondary = "#fe8019"; + alert = "#cc241d"; + disabled = "#504945"; + }; + "bar/status" = { + # Style + width = "100%"; + height = "24px"; + radius = 0; + tray-position = "center"; + background = "\${colors.background}"; + foreground = "\${colors.foreground}"; + line-size = "4px"; + border-color = "#00000000"; + padding-left = 0; + padding-right = 1; + module-margin = 1; + separator = "|"; + separator-foreground = "\${colors.disabled}"; + font-0 = "FiraCode Nerd Font"; + modules-left = "xworkspaces xwindow"; + modules-right = "memory cpu wlan battery date"; + cursor-click = "pointer"; + cursor-scroll = "ns-resize"; + enable-ipc = true; + wm-restack = "i3"; + override-redirect = false; + }; + + "module/xworkspaces" = { + type = "internal/xworkspaces"; + label-active = ""; + label-active-padding = 1; + label-occupied = ""; + label-occupied-padding = 1; + label-urgent = ""; + label-urgent-foreground = "\${colors.alert}"; + label-urgent-padding = 1; + label-empty = ""; + label-empty-foreground = "\${colors.disabled}"; + label-empty-padding = 1; + }; + + "module/xwindow" = { + type = "internal/xwindow"; + label = "%title:0:60:...%"; + }; + + "module/memory" = { + type = "internal/memory"; + interval = 2; + format-prefix = "﬙ "; + format-prefix-foreground = "\${colors.primary}"; + label = "%percentage_used:2%%"; + }; + + "module/cpu" = { + type = "internal/cpu"; + interval = "2"; + format-prefix = " "; + format-prefix-foreground = "\${colors.primary}"; + label = "%percentage:2%%"; + }; + + "network-base" = { + type = "internal/network"; + interval = 5; + format-connected = ""; + format-disconnected = ""; + label-disconnected = "%{F#F0C674}%ifname%%{F#707880} disconnected"; + }; + + "module/wlan" = { + "inherit" = "network-base"; + interface-type = "wireless"; + label-connected = "%{F#F0C674}%ifname%%{F-} %essid% %local_ip%"; + }; + + "module/battery" = { + type = "internal/battery"; + poll-interval = 1; + full-at = 96; + battery = "BAT0"; + adapter = "ADP1"; + time-format = "%H:%M"; + label-charging = "%percentage%% %time%"; + format-charging = ""; + label-discharging = "%percentage%% %time%"; + format-discharging = " "; + label-full = "%percentage%%"; + format-full = " "; + label-low = "%percentage%%"; + format-low = " "; + ramp.capacity = [ "" "" "" "" "" "" "" "" "" "" ]; + }; + + "module/date" = { + type = "internal/date"; + interval = 1; + date = "%Y-%m-%d %H:%M:%S"; + label = "%date%"; + label-foreground = "\${colors.foreground}"; + }; + + "settings" = { + screenchange-reload = true; + pseudo-transparency = true; + }; + }; + }; + }; + }; +} diff --git a/modules/desktop/social.nix b/modules/desktop/social.nix new file mode 100644 index 0000000..19935a3 --- /dev/null +++ b/modules/desktop/social.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: + +let cfg = config.jade.desktop.social; +in with lib; { + options.jade.desktop.social = { + enable = mkEnableOption "Enable social apps"; + }; + config = mkIf cfg.enable { + home-manager.users.jade = { pkgs, ... }: { + programs.nheko.enable = true; + home.packages = with pkgs; [ + evolutionWithPlugins + ]; + }; + }; +} diff --git a/modules/desktop/specific-hardware/default.nix b/modules/desktop/specific-hardware/default.nix new file mode 100644 index 0000000..e69de29 diff --git a/modules/desktop/specific-hardware/spacenav.nix b/modules/desktop/specific-hardware/spacenav.nix new file mode 100644 index 0000000..e69de29 diff --git a/modules/desktop/specific-hardware/uhk.nix b/modules/desktop/specific-hardware/uhk.nix new file mode 100644 index 0000000..e69de29 diff --git a/modules/desktop/specific-hardware/wacom.nix b/modules/desktop/specific-hardware/wacom.nix new file mode 100644 index 0000000..e69de29 diff --git a/modules/desktop/syncthing.nix b/modules/desktop/syncthing.nix new file mode 100644 index 0000000..8c08e86 --- /dev/null +++ b/modules/desktop/syncthing.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: + +let cfg = config.jade.desktop.syncthing; +in with lib; { + options.jade.desktop.syncthing = { + enable = mkEnableOption "Enable syncing via syncthing"; + }; + config = mkIf cfg.enable { + services.syncthing = rec { + enable = true; + user = "jade"; + dataDir = "/home/${user}/Documents"; + configDir = "/home/${user}/Documents/.config/syncthing"; + }; + }; +} diff --git a/modules/desktop/themeing.nix b/modules/desktop/themeing.nix new file mode 100644 index 0000000..3460478 --- /dev/null +++ b/modules/desktop/themeing.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + fonts.fonts = with pkgs; [ + atkinson-hyperlegible + ]; + home-manager.users.jade = { pkgs, ... }: { + home.packages = with pkgs; [ + gtk-engine-murrine + #gruvbox-dark-gtk + #gruvbox-dark-icons-gtk + ]; + gtk = { + enable = true; + cursorTheme = { + package = pkgs.phinger-cursors; + name = "phinger-cursors"; + size = 30; + }; + font = { + package = pkgs.atkinson-hyperlegible; + name = "Atkinson Hyperlegible"; + size = 11.5; + }; + iconTheme = { + package = pkgs.gruvbox-dark-icons-gtk; + name = "gruvbox-dark-icons"; + }; + theme = { + package = pkgs.gruvbox-dark-gtk; + name = "gruvbox-dark"; + }; + }; + qt.platformTheme = "gtk"; + }; + }; +} diff --git a/modules/desktop/xkeysnail.nix b/modules/desktop/xkeysnail.nix new file mode 100644 index 0000000..a69faf1 --- /dev/null +++ b/modules/desktop/xkeysnail.nix @@ -0,0 +1,26 @@ +{ config, lib, pkgs, ... }: +{ + config = { + services.xserver.windowManager.i3.extraPackages = with pkgs; [ + xkeysnail + xorg.xhost + xorg.setxkbmap + ]; + + home-manager.users.jade = { pkgs, ... }: { + xsession.windowManager.i3.config.startup = [ + { + command = "xhost +"; + } + { + command = "${pkgs.xkeysnail} ${../../other/xkeysnail.py}"; + always = true; + } + { + command = "sleep 4 && setxkbmap -layout us -variant altgr-intl"; + always = true; + } + ]; + }; + }; +} diff --git a/modules/terminal.nix b/modules/terminal.nix index e37bcf4..3973bd0 100644 --- a/modules/terminal.nix +++ b/modules/terminal.nix @@ -6,7 +6,11 @@ in with lib; { enable = mkEnableOption "Enable Kitty"; }; config = mkIf cfg.enable { + environment.sessionVariables = rec { + TERMINAL = "kitty"; + }; home-manager.users.jade = { pkgs,... } : { + xsession.windowManager.i3.config.terminal = "kitty"; programs.kitty = { enable = true; font = { diff --git a/monosodium-glutamate-g/configuration.nix b/monosodium-glutamate-g/configuration.nix index a2ccfdb..fe96181 100644 --- a/monosodium-glutamate-g/configuration.nix +++ b/monosodium-glutamate-g/configuration.nix @@ -43,7 +43,6 @@ # missing: menu-qalc picom-jonaburg environment.systemPackages = with pkgs; [ # TODO: clean up. - prismlauncher nvtop-amd libGL ]; diff --git a/potatobook-g/configuration.nix b/potatobook-g/configuration.nix index 5eacaed..a34a999 100644 --- a/potatobook-g/configuration.nix +++ b/potatobook-g/configuration.nix @@ -30,8 +30,15 @@ jade = { flatpak.enable = true; - desktop.enable = true; - desktop.compositing = true; + desktop = { + enable = true; + compositing.enable = true; + creative.enable = true; + syncthing.enable = true; + kdeconnect.enable = true; + cloud.enable = true; + social.enable = true; + }; terminal.enable = true; neovim.enable = true; zsh.enable = true;