From d725d12ee06f96a0ed16d37732d25a4c1ec6c72b Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Mon, 24 Jun 2024 16:35:26 +0200 Subject: [PATCH 1/7] Add lsof --- home/packages/cli/shared.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home/packages/cli/shared.nix b/home/packages/cli/shared.nix index a5c1873..ad44e8a 100644 --- a/home/packages/cli/shared.nix +++ b/home/packages/cli/shared.nix @@ -24,6 +24,7 @@ lm_sensors # tools for reading hw sensors p7zip # 7zip fork with some improvements e2fsprogs # tools for creating and checking ext filesystems + lsof # list open files # Rust replacements procs # better ps From fa9713258a439930097eaa0b7ed4fc7ee2d89e3c Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Mon, 24 Jun 2024 16:45:09 +0200 Subject: [PATCH 2/7] Addd volumePercentage spicetify extension --- home/programs/graphical/apps/spotify/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home/programs/graphical/apps/spotify/default.nix b/home/programs/graphical/apps/spotify/default.nix index 3f6620f..811b6fc 100644 --- a/home/programs/graphical/apps/spotify/default.nix +++ b/home/programs/graphical/apps/spotify/default.nix @@ -28,8 +28,10 @@ in { colorScheme = "mocha"; enabledExtensions = with spicePkgs.extensions; [ + #adblock # I currently have premium + volumePercentage fullAppDisplay - shuffle # shuffle+ (special characters are sanitized out of ext names) + shuffle hidePodcasts playlistIcons lastfm From 6efbedbe7d1dc25ea16aaabd6c45cb7142b22a9b Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Mon, 24 Jun 2024 16:54:45 +0200 Subject: [PATCH 3/7] Use home-manager native mpv program options --- home/packages/gui/default.nix | 1 - home/packages/gui/mpv.nix | 55 ------------------------ home/programs/graphical/apps/default.nix | 1 + home/programs/graphical/apps/mpv.nix | 51 ++++++++++++++++++++++ 4 files changed, 52 insertions(+), 56 deletions(-) delete mode 100644 home/packages/gui/mpv.nix create mode 100644 home/programs/graphical/apps/mpv.nix diff --git a/home/packages/gui/default.nix b/home/packages/gui/default.nix index 73bb692..bba9445 100644 --- a/home/packages/gui/default.nix +++ b/home/packages/gui/default.nix @@ -4,7 +4,6 @@ _: { ./stremio.nix ./nomacs.nix ./qbittorrent.nix - ./mpv.nix ./obs.nix ./qimgv.nix ]; diff --git a/home/packages/gui/mpv.nix b/home/packages/gui/mpv.nix deleted file mode 100644 index 7518265..0000000 --- a/home/packages/gui/mpv.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ - lib, - pkgs, - osConfig, - ... -}: let - inherit (lib) mkIf; - - cfg = osConfig.myOptions.home-manager.programs.applications.mpv; -in { - config = mkIf cfg.enable { - home.packages = with pkgs; [ - mpv - ]; - - xdg.configFile = { - "mpv/mpv.conf".text = '' - loop=yes - ''; - - "mpv/input.conf".text = '' - # Vim keys seeking - l seek 5 - h seek -5 - j seek -60 - k seek 60 - - # Set A-B Loop key to g, since l was rebound - g ab-loop - - # Swap i and I, use lowercase for toggle - i script-binding stats/display-stats-toggle - I script-binding stats/display-stats - - UP add volume 2 - DOWN add volume -2 - - # Zooming - - add video-zoom -.25 - + add video-zoom .25 - - # Moving/panning video - kp8 add video-pan-y .05 - kp6 add video-pan-x -.05 - kp2 add video-pan-y -.05 - kp4 add video-pan-x .05 - kp5 set video-pan-x 0; set video-pan-y 0; set video-zoom 0 - - # Rotation - ctrl+r cycle_values video-rotate "90" "180" "270" "0" - ''; - }; - }; -} - diff --git a/home/programs/graphical/apps/default.nix b/home/programs/graphical/apps/default.nix index 78d7bea..42e4049 100644 --- a/home/programs/graphical/apps/default.nix +++ b/home/programs/graphical/apps/default.nix @@ -3,5 +3,6 @@ _: { ./spotify ./vesktop ./webcord + ./mpv.nix ]; } diff --git a/home/programs/graphical/apps/mpv.nix b/home/programs/graphical/apps/mpv.nix new file mode 100644 index 0000000..91d5526 --- /dev/null +++ b/home/programs/graphical/apps/mpv.nix @@ -0,0 +1,51 @@ +{ + lib, + pkgs, + osConfig, + ... +}: let + inherit (lib) mkIf; + + cfg = osConfig.myOptions.home-manager.programs.applications.mpv; +in { + config = mkIf cfg.enable { + programs.mpv = { + enable = true; + + config = { + loop = "yes"; + }; + + bindings = { + l = "seek 5"; + h = "seek -5"; + j = "seek -60"; + k = "seek 60"; + + # Set A-B Loop key to g, since l was rebound + g = "ab-loop"; + + # Swap i and I, use lowercase for toggle + i = "script-binding stats/display-stats-toggle"; + I = "script-binding stats/display-stats"; + + UP = "add volume 2"; + DOWN = "add volume -2"; + + # Zooming + "-" = "add video-zoom -.25"; + "+" = "add video-zoom .25"; + + # Moving/panning video + kp8 = "add video-pan-y .05"; + kp6 = "add video-pan-x -.05"; + kp2 = "add video-pan-y -.05"; + kp4 = "add video-pan-x .05"; + kp5 = "set video-pan-x 0; set video-pan-y 0; set video-zoom 0"; + + # Rotation + "ctrl+r" = "cycle_values video-rotate '90' '180' '270' '0'"; + }; + }; + }; +} From aa057391a81141e0247499d332b3ed659e4d1244 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Mon, 24 Jun 2024 17:06:02 +0200 Subject: [PATCH 4/7] Use home-manager native obs-studio program options --- home/packages/gui/default.nix | 1 - home/programs/graphical/apps/default.nix | 1 + home/{packages/gui => programs/graphical/apps}/obs.nix | 4 +++- 3 files changed, 4 insertions(+), 2 deletions(-) rename home/{packages/gui => programs/graphical/apps}/obs.nix (84%) diff --git a/home/packages/gui/default.nix b/home/packages/gui/default.nix index bba9445..493a5f5 100644 --- a/home/packages/gui/default.nix +++ b/home/packages/gui/default.nix @@ -4,7 +4,6 @@ _: { ./stremio.nix ./nomacs.nix ./qbittorrent.nix - ./obs.nix ./qimgv.nix ]; } diff --git a/home/programs/graphical/apps/default.nix b/home/programs/graphical/apps/default.nix index 42e4049..771d9c0 100644 --- a/home/programs/graphical/apps/default.nix +++ b/home/programs/graphical/apps/default.nix @@ -4,5 +4,6 @@ _: { ./vesktop ./webcord ./mpv.nix + ./obs.nix ]; } diff --git a/home/packages/gui/obs.nix b/home/programs/graphical/apps/obs.nix similarity index 84% rename from home/packages/gui/obs.nix rename to home/programs/graphical/apps/obs.nix index 8d4428b..202d7df 100644 --- a/home/packages/gui/obs.nix +++ b/home/programs/graphical/apps/obs.nix @@ -9,11 +9,13 @@ cfg = osConfig.myOptions.home-manager.programs.applications.obs; in { config = mkIf cfg.enable { + programs.obs-studio.enable = true; + home.packages = with pkgs; [ - obs-studio obs-cli ]; }; } + From bac20edfabfaf5723553abdfced8a888b8a946cf Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Mon, 24 Jun 2024 17:06:42 +0200 Subject: [PATCH 5/7] Persist obs-studio settings --- hosts/voyager/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/voyager/default.nix b/hosts/voyager/default.nix index 8e17d6b..3e91cd1 100644 --- a/hosts/voyager/default.nix +++ b/hosts/voyager/default.nix @@ -71,6 +71,7 @@ ".config/vesktop" ".config/WebCord" ".local/share/Smart Code ltd/Stremio" + ".config/obs-studio" # Tools ".local/share/gnupg" From 56154c07586b4acd9c50e018effcd299ce573519 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Mon, 24 Jun 2024 17:27:35 +0200 Subject: [PATCH 6/7] Pass ctrl+f10 to obs as global kbd --- home/programs/graphical/wms/hyprland/config/keybinds.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/home/programs/graphical/wms/hyprland/config/keybinds.nix b/home/programs/graphical/wms/hyprland/config/keybinds.nix index 58d1d1d..22b4f17 100644 --- a/home/programs/graphical/wms/hyprland/config/keybinds.nix +++ b/home/programs/graphical/wms/hyprland/config/keybinds.nix @@ -181,6 +181,12 @@ "SUPER_SHIFT, mouse_up, focusmonitor, -1" "SUPER_SHIFT, bracketright, focusmonitor, +1" "SUPER_SHIFT, bracketleft, focusmonitor, -1" + + # + # Global keybinds (passing keys to other programs) + # + "CTRL, F10, pass, ^(com\.obsproject\.Studio)$" + ]; # Mouse bindings From 1c5581679fb84a939fbbc88af3624183eaa526e9 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Mon, 24 Jun 2024 18:20:29 +0200 Subject: [PATCH 7/7] Add iamb (tui matrix client) --- home/programs/terminal/tools/default.nix | 1 + home/programs/terminal/tools/iamb.nix | 48 ++++++++++++++++++++++ hosts/voyager/default.nix | 7 ++++ options/home/programs/default.nix | 4 ++ options/home/programs/iamb.nix | 51 ++++++++++++++++++++++++ 5 files changed, 111 insertions(+) create mode 100644 home/programs/terminal/tools/iamb.nix create mode 100644 options/home/programs/iamb.nix diff --git a/home/programs/terminal/tools/default.nix b/home/programs/terminal/tools/default.nix index 6dd48fb..ceff65d 100644 --- a/home/programs/terminal/tools/default.nix +++ b/home/programs/terminal/tools/default.nix @@ -14,5 +14,6 @@ _: { ./bottom.nix ./bat.nix ./nix-index.nix + ./iamb.nix ]; } diff --git a/home/programs/terminal/tools/iamb.nix b/home/programs/terminal/tools/iamb.nix new file mode 100644 index 0000000..31ad96d --- /dev/null +++ b/home/programs/terminal/tools/iamb.nix @@ -0,0 +1,48 @@ +{ + lib, + pkgs, + config, + osConfig, + ... +}: let + inherit (lib) mkIf; + + cfg = osConfig.myOptions.home-manager.programs.applications.iamb; +in { + config = mkIf cfg.enable { + home.packages = with pkgs; [ iamb ]; + + xdg.configFile."iamb/config.json".text = builtins.toJSON { + settings = { + log_level = "warn"; + reaction_display = true; + reaction_shortcode_display = false; + read_receipt_send = false; + read_receipt_display = true; + request_timeout = 15000; + typing_notice_send = true; + typing_notice_display = true; + + image_preview = { + protocol.type = "kitty"; + size = { + width = 80; + height = 24; + }; + }; + }; + + default_profile = cfg.defaultProfile; + profiles = lib.mapAttrs (name: profile: { + user_id = profile.userId; + url = profile.homeServer; + }) cfg.profiles; + + dirs = { + cache = "${config.xdg.cacheHome}/iamb/"; + logs = "${config.xdg.dataHome}/iamb/logs/"; + downloads = "${config.xdg.userDirs.download}/"; + }; + }; + }; +} diff --git a/hosts/voyager/default.nix b/hosts/voyager/default.nix index 3e91cd1..f7ee539 100644 --- a/hosts/voyager/default.nix +++ b/hosts/voyager/default.nix @@ -186,6 +186,13 @@ qimgv.enable = true; qbittorrent.enable = true; obs.enable = true; + iamb = { + enable = true; + profiles.default = { + userId = "@itsdrike:envs.net"; + homeServer = "https://matrix.envs.net"; + }; + }; }; }; diff --git a/options/home/programs/default.nix b/options/home/programs/default.nix index 73ae056..639dcc4 100644 --- a/options/home/programs/default.nix +++ b/options/home/programs/default.nix @@ -2,6 +2,10 @@ inherit (lib) mkEnableOption mkOption types; in { + imports = [ + ./iamb.nix + ]; + options.myOptions.home-manager.programs = { launchers = { wofi.enable = mkEnableOption "Wofi launcher"; diff --git a/options/home/programs/iamb.nix b/options/home/programs/iamb.nix new file mode 100644 index 0000000..fc99bd3 --- /dev/null +++ b/options/home/programs/iamb.nix @@ -0,0 +1,51 @@ +{ + lib, + config, + ... +}: let + inherit (lib) mkEnableOption mkOption types mkIf; + + cfg = config.myOptions.home-manager.programs.applications.iamb; +in +{ + options.myOptions.home-manager.programs.applications.iamb = { + enable = mkEnableOption "iamb (vim-inspired terminal Matrix client)"; + defaultProfile = mkOption { + type = types.str; + default = "default"; + description = "Default profile to be used when the app starts"; + }; + profiles = mkOption { + type = types.attrsOf (types.submodule { + options = { + userId = mkOption { + type = types.str; + example = "@itsdrike:envs.net"; + description = "Your Matrix user ID"; + }; + homeServer = mkOption { + type = types.nullOr types.str; + example = "https://matrix.envs.net"; + default = null; + description = '' + If your homeserver is located on a different domain than the server part + of the `userId`, then you can explicitly specify a homeserver URL to use. + ''; + }; + }; + }); + default = {}; + description = "Profiles for the iamb client, keyed by profile name"; + }; + }; + + config = mkIf cfg.enable { + assertions = [ + { + assertion = builtins.elem cfg.defaultProfile (lib.attrNames cfg.profiles); + message = "Default profile must be present in profiles configuration"; + } + ]; + }; +} +