From ae60d53eba03aebd4cf72181de75a195d5fa8f14 Mon Sep 17 00:00:00 2001 From: winston Date: Tue, 28 Mar 2023 12:59:48 +0200 Subject: [PATCH] feat: sway & i3 overhaul --- .gitattributes | 1 + flake.lock | 65 ++++++---------- flake.nix | 6 -- home/apps/i3.nix | 114 ++++++++++++----------------- home/apps/wayland.nix | 3 +- home/default.nix | 1 + home/wallpapers/dhm_1610.png | 3 + machines/common/linux/default.nix | 26 +++++++ machines/common/linux/xsession.nix | 23 ++++-- 9 files changed, 118 insertions(+), 124 deletions(-) create mode 100644 home/wallpapers/dhm_1610.png diff --git a/.gitattributes b/.gitattributes index 441e1e6..b2244e2 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,4 @@ flake.lock -diff home/secrets/**/*.json -diff lazy-lock.json -diff +*.png filter=lfs diff=lfs merge=lfs -text diff --git a/flake.lock b/flake.lock index fa8ccb5..4b3bf40 100644 --- a/flake.lock +++ b/flake.lock @@ -111,11 +111,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1679684476, - "narHash": "sha256-WTYZFt9cJmOSp1n3hxAS+BQnu7smcBsC98RSgdp2qsE=", + "lastModified": 1679786039, + "narHash": "sha256-VNjswu0Q4bZOkWNuc0+dHvRdjUCj+MnDlRfw/Q0R3vI=", "owner": "nix-community", "repo": "home-manager", - "rev": "db37c537603d1d45d022cc0666ad45197455b364", + "rev": "cf662b6c98a0da81e06066fff0ecf9cbd4627727", "type": "github" }, "original": { @@ -146,11 +146,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1679472241, - "narHash": "sha256-VK2YDic2NjPvfsuneJCLIrWS38qUfoW8rLLimx0rWXA=", + "lastModified": 1679748960, + "narHash": "sha256-BP8XcYHyj1NxQi04RpyNW8e7KiXSoI+Fy1tXIK2GfdA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9ef6e7727f4c31507627815d4f8679c5841efb00", + "rev": "da26ae9f6ce2c9ab380c0f394488892616fc5a6a", "type": "github" }, "original": { @@ -160,22 +160,6 @@ "type": "github" } }, - "nixpkgs-master": { - "locked": { - "lastModified": 1679784606, - "narHash": "sha256-n5wGxz4KN90Wv00PgH1R1ZxaSDmdPeZ/rA9+FKM5mPo=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "2f0ff93fcff3f9675a7c6875742e7d16ad0d80a3", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "master", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-stable": { "locked": { "lastModified": 1678872516, @@ -194,11 +178,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1679163677, - "narHash": "sha256-VC0tc3EjJZFPXgucFQAYMIHce5nJWYR0kVCk4TVg6gg=", + "lastModified": 1679748960, + "narHash": "sha256-BP8XcYHyj1NxQi04RpyNW8e7KiXSoI+Fy1tXIK2GfdA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c3912035d00ef755ab19394488b41feab95d2e40", + "rev": "da26ae9f6ce2c9ab380c0f394488892616fc5a6a", "type": "github" }, "original": { @@ -210,11 +194,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1679614379, - "narHash": "sha256-2KddLHHmcIlJu0PuS/vISLKxihTyICUwKWGn0R//028=", + "lastModified": 1679793451, + "narHash": "sha256-JafTtgMDATE8dZOImBhWMA9RCn9AP8FVOpN+9K/tTlg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "994e2ef9e9c70b4dd7257f73452a94e871723685", + "rev": "0cd51a933d91078775b300cf0f29aa3495231aa2", "type": "github" }, "original": { @@ -242,11 +226,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1678987615, - "narHash": "sha256-lF4agoB7ysQGNHRXvOqxtSKIZrUZwClA85aASahQlYM=", + "lastModified": 1679734080, + "narHash": "sha256-z846xfGLlon6t9lqUzlNtBOmsgQLQIZvR6Lt2dImk1M=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "194c2aa446b2b059886bb68be15ef6736d5a8c31", + "rev": "dbf5322e93bcc6cfc52268367a8ad21c09d76fea", "type": "github" }, "original": { @@ -274,11 +258,11 @@ }, "nur": { "locked": { - "lastModified": 1679694339, - "narHash": "sha256-KkoBTJK7XBUVWGYPFh4cHys2NHO6p5Jh5NLP1KYA+AQ=", + "lastModified": 1679974621, + "narHash": "sha256-oKr2h7gH6xOwr8pQs0EEJelQ1vddfqs2SLWuZVSTIOs=", "owner": "nix-community", "repo": "NUR", - "rev": "2cd23c2a269fd3ebbb3a312e19e2e56ad770da7f", + "rev": "56069a9944ea44cc1bb7fe2459b4ec5afa696611", "type": "github" }, "original": { @@ -316,7 +300,6 @@ "home-manager": "home-manager", "nekowinston-nur": "nekowinston-nur", "nixpkgs": "nixpkgs", - "nixpkgs-master": "nixpkgs-master", "nixpkgs-unstable": "nixpkgs-unstable", "nur": "nur", "pre-commit-hooks": "pre-commit-hooks", @@ -330,11 +313,11 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1679377997, - "narHash": "sha256-O8rmc/b/qgNgoHj2tL5+3Ovkj7A+Sok7gazRoWbpnqg=", + "lastModified": 1679799335, + "narHash": "sha256-YrnDyftm0Mk4JLuw3sDBPNfSjk054N0dqQx8FW4JqDM=", "owner": "Mic92", "repo": "sops-nix", - "rev": "d8827a8368c307fbc6ed594c9a31d619e7360bed", + "rev": "4740f80ca6e756915aaaa0a9c5fbb61ba09cc145", "type": "github" }, "original": { @@ -349,11 +332,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1679331631, - "narHash": "sha256-tMoiwFO/AVTV7GoGMSu3XQimFnK8vv3yzf+D41kTJoE=", + "lastModified": 1679872473, + "narHash": "sha256-N9DbdFj4iehocp/Ysb29+UTbUGEdwjZNWGbeaFL9hQ4=", "owner": "willpower3309", "repo": "swayfx", - "rev": "7d5d7a3022eb17835cea7af7290b1a5d2fe4b03a", + "rev": "4d1af6500491bdc301b590916fd04f5d8ec6a2c2", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 5681503..1cfbcb2 100644 --- a/flake.nix +++ b/flake.nix @@ -4,7 +4,6 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable"; - nixpkgs-master.url = "github:nixos/nixpkgs/master"; darwin = { url = "github:lnl7/nix-darwin"; @@ -34,7 +33,6 @@ nekowinston-nur, nixpkgs, nixpkgs-unstable, - nixpkgs-master, nur, pre-commit-hooks, sops, @@ -46,10 +44,6 @@ system = prev.system; config.allowUnfree = true; }; - master = import nixpkgs-master { - system = prev.system; - config.allowUnfree = true; - }; nur = import nur { nurpkgs = prev; pkgs = prev; diff --git a/home/apps/i3.nix b/home/apps/i3.nix index 4684c95..fd233b7 100644 --- a/home/apps/i3.nix +++ b/home/apps/i3.nix @@ -27,6 +27,9 @@ { command = "${lib.getExe pkgs._1password-gui} --silent"; } + { + command = "${pkgs.volnoti}/bin/volnoti"; + } ]; workspaceAutoBackAndForth = true; terminal = "wezterm start --always-new-process"; @@ -46,9 +49,24 @@ screenshot = if wayland then "${lib.getExe pkgs.sway-contrib.grimshot} copy area" - else "${lib.getExe pkgs.flameshot} gui"; + else "${pkgs.flameshot}/bin/flameshot gui"; playerctl = lib.getExe pkgs.playerctl; wpctl = pkgs.wireplumber + "/bin/wpctl"; + volnotify = pkgs.writeShellScript "volnotify" '' + volumeRaw=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | head -n1) + volume=$(echo $volumeRaw | sed 's/Volume: //' | awk '{printf "%.0f\n", $1 * 100}') + if [[ "$volumeRaw" =~ "MUTED" ]]; then + volnoti-show -m + else + volnoti-show $volume + fi + ''; + gopassRofi = pkgs.writeShellScript "gopass-rofi" '' + ${gopass} ls --flat | \ + ${rofi} -dmenu -dpi $dpi | \ + ${xargs} --no-run-if-empty ${gopass} show -o | \ + ${xdotool} type --clearmodifiers --file - + ''; in { "${mod}+Shift+b" = "border none"; "${mod}+b" = "border pixel 2"; @@ -62,8 +80,8 @@ "${mod}+e" = "exec --no-startup-id ${thunar}"; "${mod}+Ctrl+x" = "exec --no-startup-id ${lib.getExe pkgs.xorg.xkill}"; # TODO: replace xdotool with wayland equivalent - "${hyper}+space" = "exec --no-startup-id ${gopass} ls --flat | ${rofi} -dmenu -dpi $dpi | ${xargs} --no-run-if-empty ${gopass} show -o | ${xdotool} type --clearmodifiers --file -"; - "${hyper}+p" = "--release exec --no-startup-id ${screenshot}"; + "${hyper}+space" = "exec --no-startup-id ${gopassRofi}"; + "${hyper}+p" = "exec --no-startup-id ${screenshot}"; # change focus "${modFocus}+h" = "focus left"; @@ -143,9 +161,9 @@ "${mod}+Shift+space" = "exec ${lib.getExe pkgs._1password-gui} --quick-access"; # audio - "XF86AudioRaiseVolume" = "exec --no-startup-id ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%+ -l 1.0"; - "XF86AudioLowerVolume" = "exec --no-startup-id ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%- -l 1.0"; - "XF86AudioMute" = "exec --no-startup-id ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle"; + "XF86AudioRaiseVolume" = "exec --no-startup-id ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%+ -l 1.0 && ${volnotify}"; + "XF86AudioLowerVolume" = "exec --no-startup-id ${wpctl} set-volume @DEFAULT_AUDIO_SINK@ 5%- -l 1.0 && ${volnotify}"; + "XF86AudioMute" = "exec --no-startup-id ${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle && ${volnotify}"; "XF86AudioNext" = "exec --no-startup-id ${playerctl} next"; "XF86AudioPrev" = "exec --no-startup-id ${playerctl} previous"; "XF86AudioPause" = "exec --no-startup-id ${playerctl} play-pause"; @@ -190,8 +208,6 @@ mode = "hide"; # use waybar if wayland command = lib.mkIf wayland "${lib.getExe config.programs.waybar.package}"; - # otherwise use i3status-rust - statusCommand = lib.mkIf (!wayland) "${config.programs.i3status-rust.package}/bin/i3status-rs ${config.xdg.configHome}/i3status-rust/config-default.toml"; position = "top"; workspaceNumbers = false; inherit fonts; @@ -331,70 +347,22 @@ in { packages = with pkgs; [ arandr blueberry + flameshot pavucontrol + sway-contrib.grimshot + volnoti xclip ]; }; - programs = lib.mkIf isLinux { - i3status-rust = { - enable = true; - bars.default = { - blocks = [ - { - block = "taskwarrior"; - data_location = config.programs.taskwarrior.dataLocation; - } - { - block = "pomodoro"; - notifier = "notifysend"; - notifier_path = "${lib.getExe pkgs.libnotify}"; - } - { - block = "sound"; - max_vol = 100; - on_click = "${lib.getExe pkgs.pavucontrol}"; - } - { - block = "time"; - interval = 5; - format = "%R"; - } - ]; - settings = { - icons.name = "material-nf"; - icons.overrides = { - pomodoro = " "; - pomodoro_break = " "; - }; - theme.overrides = { - idle_fg = "#cdd6f4"; - info_fg = "#89b4fa"; - good_fg = "#a6e3a1"; - warning_fg = "#fab387"; - critical_fg = "#f38ba8"; - separator = " "; - separator_bg = "auto"; - separator_fg = "auto"; - }; - }; - }; - }; - zathura.enable = true; - }; - services = lib.mkIf isLinux { dunst.enable = true; - flameshot = { - enable = true; - settings.General.showStartupLaunchMessage = false; - }; gnome-keyring = { enable = true; components = ["secrets"]; }; picom = { - enable = true; + enable = false; package = pkgs.nur.repos.nekowinston.picom-ft-labs; fade = false; backend = "glx"; @@ -425,13 +393,8 @@ in { ]; }; }; - redshift = { - enable = true; - latitude = 48.2; - longitude = 16.366667; - }; screen-locker = { - enable = true; + enable = false; inactiveInterval = 5; lockCmd = "${lib.getExe pkgs.i3lock} -n -c 000000"; }; @@ -453,7 +416,15 @@ in { windowManager.i3 = { enable = true; package = pkgs.unstable.i3; - config = commonConfig {wayland = false;}; + config = + commonConfig {wayland = false;} + // { + startup = [ + { + command = "${lib.getExe pkgs.flameshot}"; + } + ]; + }; extraConfig = '' set_from_resource $dpi Xft.dpi 140 ${commonExtraConfig} @@ -470,10 +441,15 @@ in { input."type:keyboard" = { xkb_options = "ctrl:nocaps"; }; - output = {"*" = {scale = "2";};}; + output = { + "*" = { + scale = "2"; + bg = "${flakePath}/home/wallpapers/dhm_1610.png fill #171320"; + }; + }; startup = [ { - command = "${lib.getExe pkgs.nur.repos.nekowinston.swww} init"; + command = "wl-paste -t text --watch clipman store"; } ]; }; diff --git a/home/apps/wayland.nix b/home/apps/wayland.nix index b5aeb44..343f157 100644 --- a/home/apps/wayland.nix +++ b/home/apps/wayland.nix @@ -6,11 +6,10 @@ inherit (pkgs.stdenv.hostPlatform) isLinux; in { home.packages = lib.mkIf isLinux (with pkgs; [ - cliphist + clipman grim slurp wl-clipboard - nur.repos.nekowinston.swww ]); programs.waybar = lib.mkIf isLinux { diff --git a/home/default.nix b/home/default.nix index f24e97b..09928ca 100644 --- a/home/default.nix +++ b/home/default.nix @@ -86,6 +86,7 @@ in { enable = isLinux && machine.personal; package = pkgs.unstable.mangohud; }; + zathura.enable = true; }; xdg.configFile."ideavim/ideavimrc".source = config.lib.file.mkOutOfStoreSymlink "${flakePath}/home/apps/ideavim/ideavimrc"; diff --git a/home/wallpapers/dhm_1610.png b/home/wallpapers/dhm_1610.png new file mode 100644 index 0000000..2ce232d --- /dev/null +++ b/home/wallpapers/dhm_1610.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0c4d711bb6529120cc8bed43bf708a10ce7c33b70733d19c0f85cca5ffe8c76 +size 5607872 diff --git a/machines/common/linux/default.nix b/machines/common/linux/default.nix index 5c96661..5af771d 100644 --- a/machines/common/linux/default.nix +++ b/machines/common/linux/default.nix @@ -9,4 +9,30 @@ services.dbus.packages = [pkgs.gcr]; xdg.portal.enable = true; xdg.portal.wlr.enable = true; + + console.colors = [ + "1e1e2e" + "585b70" + + "bac2de" + "a6adc8" + + "f38ba8" + "f38ba8" + + "a6e3a1" + "a6e3a1" + + "f9e2af" + "f9e2af" + + "89b4fa" + "89b4fa" + + "f5c2e7" + "f5c2e7" + + "94e2d5" + "94e2d5" + ]; } diff --git a/machines/common/linux/xsession.nix b/machines/common/linux/xsession.nix index 569931e..f985b71 100644 --- a/machines/common/linux/xsession.nix +++ b/machines/common/linux/xsession.nix @@ -28,6 +28,21 @@ udisks2.enable = true; devmon.enable = true; + greetd = { + enable = true; + settings = { + default_session = let + swaycmd = pkgs.writeShellScript "swaycmd" '' + export NIXOS_OZONE_WL=1 XDG_CURRENT_DESKTOP=sway + sway > /tmp/sway.log 2>&1 + ''; + in { + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd ${swaycmd}"; + user = "greeter"; + }; + }; + }; + # thumbnails tumbler.enable = true; @@ -35,7 +50,7 @@ kanata = { enable = true; - package = pkgs.master.kanata; + package = pkgs.unstable.kanata; keyboards.keychron-k6 = { devices = ["/dev/input/by-id/usb-Keychron_Keychron_K6-event-kbd"]; config = '' @@ -62,11 +77,7 @@ xserver = { enable = true; desktopManager.xterm.enable = false; - displayManager = { - gdm.enable = true; - # one of these days, it'll be sway :COPIUM: - defaultSession = "none+i3"; - }; + displayManager.startx.enable = true; libinput.enable = true; windowManager.i3 = { enable = true;