From 394d9fa9405d2ad225a23c14079f520738f28fcb Mon Sep 17 00:00:00 2001 From: Adrian G L Date: Thu, 13 Jun 2024 14:40:34 +0200 Subject: [PATCH] Home Manager sway --- flake.nix | 2 +- home/{home.nix => base.nix} | 23 ++- home/code.nix | 107 +++++++++-- home/full.nix | 11 ++ home/sway.nix | 308 ++++++++++++++++++++++++------- machines/eowyn/configuration.nix | 4 +- profiles/desktop.nix | 5 +- profiles/sway.nix | 84 +++++++++ 8 files changed, 459 insertions(+), 85 deletions(-) rename home/{home.nix => base.nix} (77%) create mode 100644 home/full.nix create mode 100644 profiles/sway.nix diff --git a/flake.nix b/flake.nix index 20e7dee..333bcca 100644 --- a/flake.nix +++ b/flake.nix @@ -60,7 +60,7 @@ home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users."gunalx" = import ./home/home.nix; + home-manager.users."gunalx" = import ./home/full.nix; } ]; diff --git a/home/home.nix b/home/base.nix similarity index 77% rename from home/home.nix rename to home/base.nix index 1b30b8c..aa55f04 100644 --- a/home/home.nix +++ b/home/base.nix @@ -3,32 +3,42 @@ imports = [ ]; + programs.nix-index = { + enable = true; + }; + + programs.bash = { shellAliases = { "rebuild" = "sudo nixos-rebuild switch --update-input nixpkgs --update-input unstable --no-write-lock-file --refresh --flake git+https://github.com/adrlau/nix-dotfiles.git --upgrade"; "nixedit" = "vim /etc/nixos/nix-dotfiles/."; + "," = "comma "; "gst" = "git status"; "gsw" = "git switch"; "gcm" = "git commit -m "; "gca" = "git commit --amend"; "gaa" = "git add -A"; "gb" = "git branch"; - "sl" = "ls"; - "la" = "la -la"; + "sl" = "eza"; + "ls" = "eza"; + "lls" = "ls"; + "la" = "eza -la"; "neofetch" = "fastfetch"; }; - - + historyControl = ["ignoreboth" "erasedups"]; + historyIgnore = [ "ls" "cd" "exit" "cd .." ".." "la"]; }; home.packages = with pkgs; [ bottom htop fastfetch + eza + ripgrep + foot.terminfo + comma ]; - - programs.git = { enable = true; @@ -38,7 +48,6 @@ color.ui = "auto"; init.defaultBranch = "main"; lfs.enable = true; - user = { name = "Adrian G L"; email = "adrian@lauterer.it"; diff --git a/home/code.nix b/home/code.nix index 3020001..ff2d261 100644 --- a/home/code.nix +++ b/home/code.nix @@ -1,14 +1,97 @@ -{pkgs, lib, ...}: -{ - - unstable.config.allowUnfree = true; - home-manager.users.gunalx = { - #vscode with home manager - programs.vscode = { - enable = true; - enableUpdateCheck = false; - package = unstable.vscode-fhs; - - }; +{ pkgs, lib, ... }: { + + programs.vscode = { + enable = true; + enableUpdateCheck = false; + enableExtensionUpdateCheck = false; + mutableExtensionsDir = true; + package = vscode-fhs; + + # Extensions + extensions = (with pkgs.vscode-extensions; [ + # Stable + ms-vscode-remote.remote-ssh + mhutchie.git-graph + pkief.material-icon-theme + oderwat.indent-rainbow + 2gua.rainbow-brackets + + jnoortheen.nix-ide + pinage404.nix-extension-pack + + + vsciot-vscode.vscode-arduino + espressif.esp-idf-extension + platformio.platformio-ide + + yzhang.markdown-all-in-one + yzane.markdown-pdf + bierner.markdown-checkbox + shd101wyy.markdown-preview-enhanced + TakumiI.markdowntable + jebbs.plantuml + myml.vscode-markdown-plantuml-preview + DavidAnson.vscode-markdownlint + + MS-vsliveshare.vsliveshare + redhat.vscode-yaml + redhat.vscode-xml + octref.vetur + formulahendry.auto-close-tag + mechatroner.rainbow-csv + swellaby.rust-pack + James-Yu.latex-workshop + waderyan.gitblame + ms-python.python + ms-python.vscode-pylance + VisualStudioExptTeam.vscodeintellicode + redhat.java + ms-vscode.cpptools-extension-pack + + + ]) ++ (with pkgs.unstable.vscode-extensions; [ + # Unstable + GitHub.copilot + GitHub.copilot-chat + Continue.continue + + ]); + + # Settings + userSettings = { + # General + "editor.fontSize" = 16; + "editor.fontFamily" = "'Jetbrains Mono', 'monospace', monospace"; + "terminal.integrated.fontSize" = 14; + "terminal.integrated.fontFamily" = "'JetBrainsMono Nerd Font', 'monospace', monospace"; + "window.zoomLevel" = 1; + "editor.multiCursorModifier" = "ctrlCmd"; + "workbench.startupEditor" = "none"; + "explorer.compactFolders" = false; + # Whitespace + "files.trimTrailingWhitespace" = true; + "files.trimFinalNewlines" = true; + "files.insertFinalNewline" = true; + "diffEditor.ignoreTrimWhitespace" = false; + # Git + "git.enableCommitSigning" = true; + "git-graph.repository.sign.commits" = true; + "git-graph.repository.sign.tags" = true; + "git-graph.repository.commits.showSignatureStatus" = true; + # Styling + "window.autoDetectColorScheme" = true; + "workbench.preferredDarkColorTheme" = "Default Dark Modern"; + "workbench.preferredLightColorTheme" = "Default Light Modern"; + "workbench.iconTheme" = "material-icon-theme"; + "material-icon-theme.activeIconPack" = "none"; + "material-icon-theme.folders.theme" = "classic"; + # Extentions + "nix.enableLanguageServer"= true; + + # Other + "telemetry.telemetryLevel" = "off"; + "update.showReleaseNotes" = false; + }; + }; } diff --git a/home/full.nix b/home/full.nix new file mode 100644 index 0000000..19e24b8 --- /dev/null +++ b/home/full.nix @@ -0,0 +1,11 @@ +{ pkgs, lib, ... }: +{ + imports = [ + ./base.nix + ./code.nix + ./sway.nix + + ]; + +} + diff --git a/home/sway.nix b/home/sway.nix index 11ef5d7..09a0d30 100644 --- a/home/sway.nix +++ b/home/sway.nix @@ -1,84 +1,266 @@ -{ config, pkgs, lib, ... }: +{ pkgs, lib, ... }: { -imports = - [ - + imports = [ + ]; - environment.systemPackages = with pkgs; [ + + home.packages = with pkgs; [ + wl-clipboard + wlr-randr + kanshi + libsForQt5.qt5ct qt6Packages.qt6ct - waybar - networkmanagerapplet - networkmanager - libsForQt5.networkmanager-qt - - wdisplays + waybar + networkmanagerapplet + networkmanager + libsForQt5.networkmanager-qt + + wdisplays + kanshi + + swaylock-effects + swayidle + #swaylock-fancy #migth change to this default may look prettier. + + foot + ## possible other options + #kitty + #alacrity + + wofi + wofi-emoji + bemoji + + brightnessctl + pavucontrol + + #screenshots + grim + slurp + + mako + + swaybg + + swayest-workstyle + autotiling-rs + wleave + + pass-wayland - swaylock-effects - #swaylock-fancy #migth change to this default may look prettier. - - foot - ## possible other options - #kitty - #alacrity - - wofi - wofi-emoji - bemoji - - brightnessctl - pavucontrol - - #screenshots - grim - slurp - swaybg - workstyle - #swayest-workstyle #migth switch to this. - autotiling-rs - wleave - - pass-wayland + #fonts + nerfonts + noto-fonts + noto-fonts-cjk + noto-fonts-emoji + liberation_ttf + fira-code + fira-code-symbols + dina-font + proggyfonts + nerdfonts + ubuntu_font_family + zpix-pixel-font + _0xproto + font-awesome + font-awesome_5 + font-awesome_4 - ]; + ]; - fonts.packages = with pkgs; [ - noto-fonts - noto-fonts-cjk - noto-fonts-emoji - liberation_ttf - fira-code - fira-code-symbols - dina-font - proggyfonts - nerdfonts - ubuntu_font_family - zpix-pixel-font + qt.enable = true; + qt.style.name = "breeze"; - font-awesome - font-awesome_5 - font-awesome_4 + programs.wofi = { + enable = true; + settings = { + location = "bottom-right"; + allow_markup = true; + width = "60%"; + }; + style = '' + * { + font-family: monospace; + } + + window { + background-color: #7c818c; + } + ''; + }; - ]; + services.kanshi = { + enable = true; + profiles = { + undocked = { + outputs = [ + { + criteria = "eDP-1"; + } + ]; + exec = [ + "\${pkg.sway}/bin/swaymsg workspace 1, move workspace to eDP-1" + "\${pkg.sway}/bin/swaymsg workspace 2, move workspace to eDP-1" + "\${pkg.sway}/bin/swaymsg workspace 3, move workspace to eDP-1" + "\${pkg.sway}/bin/swaymsg workspace 4, move workspace to eDP-1" + "\${pkg.sway}/bin/swaymsg workspace 5, move workspace to eDP-1" + "\${pkg.sway}/bin/swaymsg workspace 6, move workspace to eDP-1" + "\${pkg.sway}/bin/swaymsg workspace 7, move workspace to eDP-1" + "\${pkg.sway}/bin/swaymsg workspace 8, move workspace to eDP-1" + "\${pkg.sway}/bin/swaymsg workspace 9, move workspace to eDP-1" + "\${pkg.sway}/bin/swaymsg workspace 10, move workspace to eDP-1" + "\${pkg.sway}/bin/swaymsg workspace 0, move workspace to eDP-1" + ]; + }; + }; - services.xserver.displayManager.sddm.enable = true; + }; - qt.platformTheme = "qt5ct"; + programs.foot.settings = { + colors = { + alpha="0.9"; + foreground="ffffff"; + background="000000"; + regular0="2e3436"; + regular1="cc0000"; + regular2="c4e9a06"; + regular3="cc4a000"; + regular4="c3465a4"; + regular5="c75507b"; + regular6="c06989a"; + regular7="cd3d7cf"; + bright0="555753"; + bright1="5ef2929"; + bright2="58ae234"; + bright3="5fce94f"; + bright4="5729fcf"; + bright5="5ad7fa8"; + bright6="534e2e2"; + bright7="5eeeeec"; + }; + main = { + term = "xterm-256color"; + font = "0xproto:size=16"; + dpi-aware = "yes"; + }; + mouse = { + hide-when-typing = "yes"; + }; + }; - # Configure keymap in X11 - services.xserver = { - layout = "no"; - xkbVariant = ""; + + fonts.fontconfig.enable = true; + fonts.fontconfig.defaultFonts = { + emoji = ["noto-fonts-emoji font-awesome"]; + monospace = ["0xproto" "zpix" "fira-code"]; + serif = [ "Noto Serif" "Source Han Serif" ]; + sansSerif = [ "Noto Sans" "Source Han Sans" ]; + }; + + home.sessionVariables = { + MOZ_ENABLE_WAYLAND = "1"; + MOZ_USE_XINPUT2 = "1"; + XDG_SESSION_TYPE = "wayland"; + XDG_CURRENT_DESKTOP = "sway"; + XKB_DEFAULT_OPTIONS = "terminate:ctrl_alt_bksp,caps:escape,altwin:swap_alt_win"; + SDL_VIDEODRIVER = "wayland"; + + # needs qt5.qtwayland in systemPackages + QT_QPA_PLATFORM = "wayland"; + QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; + + # Fix for some Java AWT applications (e.g. Android Studio), + # use this if they aren't displayed properly: + _JAVA_AWT_WM_NONREPARENTING = 1; + + # gtk applications on wayland + # export GDK_BACKEND=wayland + }; + + + + wayland.windowManager.sway = { + wrapperFeatures.gtk = true; + enable = true; + config = rec { + modifier = "Mod4"; + # Use kitty as default terminal + terminal = "footclient"; + menu = "wofi --show run"; + bars = [{ + fonts.size = 16.0; + command = "waybar"; + position = "top"; + }]; + startup = [ + # Launch Firefox on start + {command = "foot --server";} + {command = "firefox";} + {command = "nm-applet";} + {command = "autotiling-rs";} + {command = "sworkstyle";} + ]; + floating.border = 0; + window.border = 0; + focus.followMouse = true; + modes.resize = { + Escape = "mode default"; + Return = "mode default"; + "h" = "resize shrink width 10 px or 10 ppt"; + "j" = "resize grow height 10 px or 10 ppt"; + "k" = "resize shrink height 10 px or 10 ppt"; + "l" = "resize grow width 10 px or 10 ppt"; + }; + + extraConfig = '' + #startup + input type:keyboard xkb_capslock disabled + input type:keyboard xkb_numlock enabled + xwayland enable + + #autostart to selected workspace classes + assign [class="autostart1"] workspace 1 + assign [class="autostart2"] workspace 2 + assign [class="autostart3"] workspace 3 + assign [class="autostart4"] workspace 4 + + + bindsym $mod+d exec $menu + bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% + bindsym F3 exec pactl set-sink-volume @DEFAULT_SINK@ +5% + bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% + bindsym F2 exec pactl set-sink-volume @DEFAULT_SINK@ -5% + bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle + bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle + bindsym XF86MonBrightnessDown exec brightnessctl set 5%- + bindsym XF86MonBrightnessUp exec brightnessctl set 5%+ + bindsym XF86AudioPlay exec playerctl play-pause + bindsym XF86AudioNext exec playerctl next + bindsym XF86AudioPrev exec playerctl previous + bindsym XF86Search exec $menu + + #shortcuts for applications + bindsym $mod+Shift+f exec firefox + bindsym $mod+Shift+c exec code + + + + #screenshot + bindsym $mod+f11 exec grim -g "$(slurp)" ~/Pictures/screenshots/"screenshot-`date +%F-%T`".png + bindsym $mod+Print exec grim -g "$(slurp)" ~/Pictures/screenshots/"screenshot-`date +%F-%T`".png + + ''; + + + }; }; - #TODO: add sway config with home manager to get proper dotfiles. - - - } + diff --git a/machines/eowyn/configuration.nix b/machines/eowyn/configuration.nix index 88f65eb..285299d 100644 --- a/machines/eowyn/configuration.nix +++ b/machines/eowyn/configuration.nix @@ -73,7 +73,9 @@ sway dmenu wofi - foot + foot + + libfprint ]; diff --git a/profiles/desktop.nix b/profiles/desktop.nix index 4e63088..167c04c 100644 --- a/profiles/desktop.nix +++ b/profiles/desktop.nix @@ -9,7 +9,7 @@ imports = ../packages/vim.nix #../home/home-full.nix - ../home/sway.nix + #./sway.nix ../packages/steam.nix ]; @@ -40,6 +40,9 @@ imports = # Enable CUPS to print documents. services.printing.enable = true; + security.polkit.enable = true; + + services.displayManager.sddm.enable = true; services.desktopManager.plasma6.enable = true; services.desktopManager.plasma6.enableQt5Integration = true; diff --git a/profiles/sway.nix b/profiles/sway.nix new file mode 100644 index 0000000..11ef5d7 --- /dev/null +++ b/profiles/sway.nix @@ -0,0 +1,84 @@ +{ config, pkgs, lib, ... }: +{ +imports = + [ + + ]; + + environment.systemPackages = with pkgs; [ + libsForQt5.qt5ct + qt6Packages.qt6ct + + waybar + networkmanagerapplet + networkmanager + libsForQt5.networkmanager-qt + + wdisplays + + swaylock-effects + #swaylock-fancy #migth change to this default may look prettier. + + foot + ## possible other options + #kitty + #alacrity + + wofi + wofi-emoji + bemoji + + brightnessctl + + pavucontrol + + #screenshots + grim + slurp + + swaybg + + workstyle + #swayest-workstyle #migth switch to this. + autotiling-rs + wleave + + pass-wayland + + ]; + + fonts.packages = with pkgs; [ + noto-fonts + noto-fonts-cjk + noto-fonts-emoji + liberation_ttf + fira-code + fira-code-symbols + dina-font + proggyfonts + nerdfonts + ubuntu_font_family + zpix-pixel-font + + font-awesome + font-awesome_5 + font-awesome_4 + + ]; + + services.xserver.displayManager.sddm.enable = true; + + qt.platformTheme = "qt5ct"; + + # Configure keymap in X11 + services.xserver = { + layout = "no"; + xkbVariant = ""; + }; + + + #TODO: add sway config with home manager to get proper dotfiles. + + + +}