1
Fork 0

Move away from wezterm

This commit is contained in:
prescientmoon 2024-08-05 20:31:34 +02:00
parent afea4bacd0
commit 3a4d400fef
Signed by: prescientmoon
SSH key fingerprint: SHA256:UUF9JT2s8Xfyv76b8ZuVL7XrmimH4o49p4b+iexbVH4
19 changed files with 217 additions and 314 deletions

View file

@ -6,7 +6,7 @@ In case you are not familiar with nix/nixos, this is a collection of configurati
## Features this repository includes: ## Features this repository includes:
- Sets up all the apps I use — including git, neovim, fish, tmux, starship, hyprland, anyrun, discord, zathura, wezterm & much more. - Sets up all the apps I use — including git, neovim, fish, tmux, starship, hyprland, anyrun, discord, zathura, foot & much more.
- Sets up my entire homelab — including zfs-based [impermanence](https://grahamc.com/blog/erase-your-darlings), automatic let's-encrypt certificates, tailscale, syncthing, vaultwarden, whoogle, pounce, calico, smos, intray, actual & more. - Sets up my entire homelab — including zfs-based [impermanence](https://grahamc.com/blog/erase-your-darlings), automatic let's-encrypt certificates, tailscale, syncthing, vaultwarden, whoogle, pounce, calico, smos, intray, actual & more.
- Consistent base16 theming using [stylix](https://github.com/danth/stylix) - Consistent base16 theming using [stylix](https://github.com/danth/stylix)
- Declarative secret management using [sops-nix](https://github.com/Mic92/sops-nix) - Declarative secret management using [sops-nix](https://github.com/Mic92/sops-nix)
@ -79,7 +79,7 @@ Here's some things you might want to check out:
- [Dunst](https://dunst-project.org/) — notification daemon - [Dunst](https://dunst-project.org/) — notification daemon
- [Wlsunset](https://sr.ht/~kennylevinsen/wlsunset/) — day/night screen gamma adjustments - [Wlsunset](https://sr.ht/~kennylevinsen/wlsunset/) — day/night screen gamma adjustments
- [Anyrun](https://github.com/Kirottu/anyrun) — program launcher - [Anyrun](https://github.com/Kirottu/anyrun) — program launcher
- [Wezterm](https://wezfurlong.org/wezterm/) — terminal emulator - [Foot](https://codeberg.org/dnkl/foot) — terminal emulator
- [Zathura](https://pwmt.org/projects/zathura/) — pdf viewer - [Zathura](https://pwmt.org/projects/zathura/) — pdf viewer
- [Firefox](https://www.mozilla.org/en-US/firefox/) — web browser - [Firefox](https://www.mozilla.org/en-US/firefox/) — web browser
- [Tesseract](https://github.com/tesseract-ocr/tesseract) — OCR engine - [Tesseract](https://github.com/tesseract-ocr/tesseract) — OCR engine
@ -134,6 +134,7 @@ Most services are served over [tailscale](https://tailscale.com/), using certifi
Includes links to stuff which used to be in the previous section but is not used anymore. Only created this section in June 2023, so stuff I used earlier might not be here. Sorted with the most recently dropped things at the top. Includes links to stuff which used to be in the previous section but is not used anymore. Only created this section in June 2023, so stuff I used earlier might not be here. Sorted with the most recently dropped things at the top.
- [Wezterm](https://github.com/wez/wezterm) — I switched to [Foot](https://codeberg.org/dnkl/foot), as wezterm was laggy, unstable, and kept breaking between releases
- [Ranger](https://github.com/ranger/ranger) — I switched to [Yazi](https://github.com/sxyazi/yazi) - [Ranger](https://github.com/ranger/ranger) — I switched to [Yazi](https://github.com/sxyazi/yazi)
- [firenvim](https://glacambre/firenvim) - the concept is cool, but I found the whole thing pretty annoying at times - [firenvim](https://glacambre/firenvim) - the concept is cool, but I found the whole thing pretty annoying at times
- [venn.nvim](https://jbyuki/venn.nvim) — the concept is cool, but I would use it about once a year - [venn.nvim](https://jbyuki/venn.nvim) — the concept is cool, but I would use it about once a year

View file

@ -1,5 +1,11 @@
{ config, pkgs, inputs, ... }: {
let workflowDir = "${config.home.homeDirectory}/productivity/smos"; config,
pkgs,
inputs,
...
}:
let
workflowDir = "${config.home.homeDirectory}/productivity/smos";
in in
{ {
sops.secrets.smos_password.sopsFile = ../secrets.yaml; sops.secrets.smos_password.sopsFile = ../secrets.yaml;
@ -32,9 +38,7 @@ in
}; };
# }}} # }}}
# {{{ Storage & secrets # {{{ Storage & secrets
satellite.persistence.at.data.apps.smos.directories = [ satellite.persistence.at.data.apps.smos.directories = [ config.programs.smos.workflowDir ];
config.programs.smos.workflowDir
];
sops.secrets.smos_github_token = { sops.secrets.smos_github_token = {
sopsFile = ../secrets.yaml; sopsFile = ../secrets.yaml;
@ -48,9 +52,11 @@ in
type = "Application"; type = "Application";
terminal = false; terminal = false;
icon = ../../../../../common/icons/smos.svg; icon = ../../../../../common/icons/smos.svg;
exec = builtins.toString (pkgs.writeShellScript "smostui" '' exec = builtins.toString (
wezterm start --class "org.wezfurlong.wezterm.smos" --cwd ${workflowDir} smos pkgs.writeShellScript "smostui" ''
''); foot -a Smos -D ${workflowDir} smos
''
);
}; };
# }}} # }}}
} }

View file

@ -1,6 +1,6 @@
{ pkgs, ... }: { { pkgs, ... }:
{
imports = [ imports = [
./wezterm # terminal
./dunst.nix # notifaction handler ./dunst.nix # notifaction handler
]; ];

View file

@ -1,4 +1,10 @@
{ config, lib, pkgs, inputs, ... }: {
config,
lib,
pkgs,
inputs,
...
}:
let let
# {{{ Global extensions # {{{ Global extensions
extensions = with inputs.firefox-addons.packages.${pkgs.system}; [ extensions = with inputs.firefox-addons.packages.${pkgs.system}; [
@ -23,8 +29,8 @@ let
unpaywall unpaywall
user-agent-string-switcher user-agent-string-switcher
]; ];
# }}}
in in
# }}}
{ {
programs.firefox = { programs.firefox = {
enable = true; enable = true;
@ -66,7 +72,8 @@ in
# {{{ Extensions # {{{ Extensions
extensions = extensions =
with inputs.firefox-addons.packages.${pkgs.system}; with inputs.firefox-addons.packages.${pkgs.system};
with lib.lists; flatten [ with lib.lists;
flatten [
extensions extensions
# List of profile-specific extensions # List of profile-specific extensions
[ [
@ -91,80 +98,119 @@ in
search.engines = search.engines =
let let
# {{{ Search engine creation helpers # {{{ Search engine creation helpers
mkBasicSearchEngine = { aliases, url, param, icon ? null }: { mkBasicSearchEngine =
urls = [{ {
aliases,
url,
param,
icon ? null,
}:
{
urls = [
{
template = url; template = url;
params = [ params = [
{ name = param; value = "{searchTerms}"; } {
name = param;
value = "{searchTerms}";
}
];
}
]; ];
}];
definedAliases = aliases; definedAliases = aliases;
} // (if icon == null then { } else { inherit icon; }); }
// (if icon == null then { } else { inherit icon; });
mkNixPackagesEngine = { aliases, type }: mkNixPackagesEngine =
mkBasicSearchEngine { aliases, type }:
{ mkBasicSearchEngine {
aliases = aliases; aliases = aliases;
url = "https://search.nixos.org/${type}"; url = "https://search.nixos.org/${type}";
param = "query"; param = "query";
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
}; };
# }}}
in in
# }}}
# {{{ Engine declarations # {{{ Engine declarations
{ {
"Nix Packages" = mkNixPackagesEngine { "Nix Packages" = mkNixPackagesEngine {
aliases = [ "@np" "@nix-packages" ]; aliases = [
"@np"
"@nix-packages"
];
type = "packages"; type = "packages";
}; };
"Nix options" = mkNixPackagesEngine { "Nix options" = mkNixPackagesEngine {
aliases = [ "@no" "@nix-options" ]; aliases = [
"@no"
"@nix-options"
];
type = "options"; type = "options";
}; };
"Pursuit" = mkBasicSearchEngine { "Pursuit" = mkBasicSearchEngine {
url = "https://pursuit.purescript.org/search"; url = "https://pursuit.purescript.org/search";
param = "q"; param = "q";
aliases = [ "@ps" "@pursuit" ]; aliases = [
"@ps"
"@pursuit"
];
}; };
"Hoogle" = mkBasicSearchEngine { "Hoogle" = mkBasicSearchEngine {
url = "https://hoogle.haskell.org"; url = "https://hoogle.haskell.org";
param = "hoogle"; param = "hoogle";
aliases = [ "@hg" "@hoogle" ]; aliases = [
"@hg"
"@hoogle"
];
}; };
"Wikipedia" = mkBasicSearchEngine { "Wikipedia" = mkBasicSearchEngine {
url = "https://en.wikipedia.org/wiki/Special:Search"; url = "https://en.wikipedia.org/wiki/Special:Search";
param = "search"; param = "search";
aliases = [ "@wk" "@wikipedia" ]; aliases = [
"@wk"
"@wikipedia"
];
}; };
"Github" = mkBasicSearchEngine { "Github" = mkBasicSearchEngine {
url = "https://github.com/search"; url = "https://github.com/search";
param = "q"; param = "q";
aliases = [ "@gh" "@github" ]; aliases = [
"@gh"
"@github"
];
}; };
"Invidious" = mkBasicSearchEngine { "Invidious" = mkBasicSearchEngine {
url = "https://yt.moonythm.dev/results"; url = "https://yt.moonythm.dev/results";
param = "search_query"; param = "search_query";
aliases = [ "@yt" "@invidious" ]; aliases = [
"@yt"
"@invidious"
];
}; };
"Youtube" = mkBasicSearchEngine { "Youtube" = mkBasicSearchEngine {
url = "https://www.youtube.com/results"; url = "https://www.youtube.com/results";
param = "search_query"; param = "search_query";
aliases = [ "@gyt" "@youtube" ]; aliases = [
"@gyt"
"@youtube"
];
}; };
"Arcaea wiki" = mkBasicSearchEngine { "Arcaea wiki" = mkBasicSearchEngine {
url = "https://arcaea.fandom.com/wiki/Special:Search?scope=internal&navigationSearch=true"; url = "https://arcaea.fandom.com/wiki/Special:Search?scope=internal&navigationSearch=true";
param = "query"; param = "query";
aliases = [ "@ae" "@arcaea" ]; aliases = [
"@ae"
"@arcaea"
];
}; };
"Noita wiki" = mkBasicSearchEngine { "Noita wiki" = mkBasicSearchEngine {
@ -176,31 +222,46 @@ in
"Rain world wiki" = mkBasicSearchEngine { "Rain world wiki" = mkBasicSearchEngine {
url = "https://rainworld.miraheze.org/w/index.php"; url = "https://rainworld.miraheze.org/w/index.php";
param = "search"; param = "search";
aliases = [ "@rw" "@rain-world" ]; aliases = [
"@rw"
"@rain-world"
];
}; };
"Arch wiki" = mkBasicSearchEngine { "Arch wiki" = mkBasicSearchEngine {
url = "https://wiki.archlinux.org/index.php"; url = "https://wiki.archlinux.org/index.php";
param = "search"; param = "search";
aliases = [ "@aw" "@arch-wiki" ]; aliases = [
"@aw"
"@arch-wiki"
];
}; };
"Factorio wiki" = mkBasicSearchEngine { "Factorio wiki" = mkBasicSearchEngine {
url = "https://wiki.factorio.com/index.php"; url = "https://wiki.factorio.com/index.php";
param = "search"; param = "search";
aliases = [ "@fw" "@factorio-wiki" ]; aliases = [
"@fw"
"@factorio-wiki"
];
}; };
"Factorio mod portal" = mkBasicSearchEngine { "Factorio mod portal" = mkBasicSearchEngine {
url = "https://mods.factorio.com/"; url = "https://mods.factorio.com/";
param = "query"; param = "query";
aliases = [ "@fm" "@factorio-mods" ]; aliases = [
"@fm"
"@factorio-mods"
];
}; };
"Moonythm" = mkBasicSearchEngine { "Moonythm" = mkBasicSearchEngine {
url = "https://search.moonythm.dev/search"; url = "https://search.moonythm.dev/search";
param = "q"; param = "q";
aliases = [ "@m" "@moonythm" ]; aliases = [
"@m"
"@moonythm"
];
icon = ../../../../common/icons/whoogle.webp; icon = ../../../../common/icons/whoogle.webp;
}; };
@ -232,15 +293,12 @@ in
"widget.dmabuf.force-enabled" = true; # Required in recent Firefoxes "widget.dmabuf.force-enabled" = true; # Required in recent Firefoxes
# }}} # }}}
# {{{ New tab page # {{{ New tab page
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false;
false; "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false;
"browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" =
false;
"browser.newtabpage.activity-stream.feeds.snippets" = false; "browser.newtabpage.activity-stream.feeds.snippets" = false;
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = ""; "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.havePinned" = "";
"browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines" = ""; "browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts.searchEngines" = "";
"browser.newtabpage.activity-stream.section.highlights.includePocket" = "browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
false;
"browser.newtabpage.activity-stream.showSponsored" = false; "browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false; "browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.newtabpage.pinned" = false; "browser.newtabpage.pinned" = false;
@ -310,7 +368,11 @@ in
stylix.targets.firefox = { stylix.targets.firefox = {
enable = true; enable = true;
profileNames = [ config.home.username "desmos" "monkey-type" ]; profileNames = [
config.home.username
"desmos"
"monkey-type"
];
}; };
# {{{ Make firefox the default # {{{ Make firefox the default
@ -335,4 +397,3 @@ in
]; ];
# }}} # }}}
} }

View file

@ -1,4 +1,4 @@
{ {
programs.foot.enable=true; programs.foot.enable = true;
stylix.targets.foot.enable=true; stylix.targets.foot.enable = true;
} }

View file

@ -1,4 +1,5 @@
{ config, pkgs, ... }: { { config, pkgs, ... }:
{
home.packages = [ pkgs.obsidian ]; home.packages = [ pkgs.obsidian ];
# Start nvim with a custom class so our WM can move it to the correct workspace # Start nvim with a custom class so our WM can move it to the correct workspace
@ -8,10 +9,13 @@
icon = "obsidian"; icon = "obsidian";
terminal = false; terminal = false;
exec = exec =
let vaultDir = "${config.xdg.userDirs.extraConfig.XDG_PROJECTS_DIR}/stellar-sanctum"; let
vaultDir = "${config.xdg.userDirs.extraConfig.XDG_PROJECTS_DIR}/stellar-sanctum";
in in
builtins.toString (pkgs.writeShellScript "obsidiantui" '' builtins.toString (
wezterm start --class "org.wezfurlong.wezterm.obsidian" --cwd ${vaultDir} nvim pkgs.writeShellScript "obsidiantui" ''
''); foot -a Obsidian -D ${vaultDir} nvim
''
);
}; };
} }

View file

@ -1,10 +0,0 @@
{ inputs, pkgs, config, ... }: {
home.packages = [pkgs.wezterm ];
xdg.configFile."wezterm/nix".source =
config.satellite.lib.lua.writeFile
"." "colorscheme"
"return ${config.satellite.colorscheme.lua}";
xdg.configFile."wezterm/wezterm.lua".source =
config.satellite.dev.path "home/features/desktop/wezterm/wezterm.lua";
}

View file

@ -1,184 +0,0 @@
-- {{{ Import stuff & create config object
local wezterm = require("wezterm")
local colorscheme = require("nix.colorscheme") -- injected by nix!
-- This table will hold the configuration.
local config = {}
-- In newer versions of wezterm, use the config_builder which will
-- help provide clearer error messages
if wezterm.config_builder then
config = wezterm.config_builder()
end
-- }}}
local font_size = 20.0
-- {{{ Theming
local themeMap = {
["Gruvbox light, soft"] = "Gruvbox light, soft (base16)",
["Gruvbox dark, soft"] = "Gruvbox dark, soft (base16)",
}
config.color_scheme = themeMap[colorscheme.name]
config.colors = {}
-- config.colors = wezterm.color.load_base16_scheme(colorscheme.source)
-- {{{ Window frame
config.window_frame = {
font = wezterm.font({ family = colorscheme.fonts.sansSerif }),
font_size = font_size - 3,
active_titlebar_bg = "none",
inactive_titlebar_bg = "none",
}
config.window_padding = {
left = "1cell",
right = "1cell",
top = "0.4cell",
bottom = "0.4cell",
}
-- }}}
-- {{{ Tab bar colors
config.colors.tab_bar = {
background = "none",
active_tab = {
bg_color = colorscheme.transparency.terminal.base00,
fg_color = colorscheme.base05,
},
inactive_tab = {
bg_color = "none",
fg_color = colorscheme.base05,
},
inactive_tab_hover = {
bg_color = colorscheme.base00,
fg_color = colorscheme.base05,
},
new_tab = {
bg_color = colorscheme.base02,
fg_color = colorscheme.base05,
},
new_tab_hover = {
bg_color = colorscheme.base02,
fg_color = colorscheme.base05,
italic = true,
},
-- The color of the inactive tab bar edge/divider
inactive_tab_edge = "none",
}
-- }}}
-- {{{ Other visual things
config.window_background_opacity = colorscheme.transparency.terminal.value
-- }}}
-- }}}
-- {{{ Main config options
config.automatically_reload_config = true
config.warn_about_missing_glyphs = false
config.check_for_updates = false
-- {{{ Fonts
config.adjust_window_size_when_changing_font_size = false -- Makes it work with fixed window sizes.
config.font_size = font_size
config.font = wezterm.font(colorscheme.fonts.monospace)
-- }}}
-- {{{ Tab bar
config.tab_bar_at_bottom = false
config.use_fancy_tab_bar = true
config.hide_tab_bar_if_only_one_tab = true
config.show_tab_index_in_tab_bar = false
config.show_new_tab_button_in_tab_bar = false
-- }}}
-- {{{ Keycodes
config.disable_default_key_bindings = false
-- config.enable_kitty_keyboard = true -- Let's apps recognise more distinct keys
config.enable_csi_u_key_encoding = true -- For some reason I need this for all keybinds to work inside neovim.
-- }}}
-- }}}
-- {{{ Keybinds
local function unmap(key, mods)
return {
key = key,
mods = mods,
action = wezterm.action.DisableDefaultAssignment,
}
end
local function bind_if(cond, key, mods, action)
local function callback(win, pane)
if cond(pane) then
win:perform_action(action, pane)
else
win:perform_action(
wezterm.action.SendKey({ key = key, mods = mods }),
pane
)
end
end
return { key = key, mods = mods, action = wezterm.action_callback(callback) }
end
-- {{{ Detect nvim processes
local function is_inside_vim(pane)
local tty = pane:get_tty_name()
if tty == nil then
return false
end
local success, _, _ = wezterm.run_child_process({
"sh",
"-c",
"ps -o state= -o comm= -t"
.. wezterm.shell_quote_arg(tty)
.. " | "
.. "grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|l?n?vim?x?)(diff)?$'",
})
return success
end
local function is_outside_vim(pane)
return not is_inside_vim(pane)
end
-- }}}
config.keys = {
-- {{{ Disable certain default keybinds
unmap("f", "CTRL|SHIFT"),
unmap("w", "CTRL|SHIFT"),
unmap("Enter", "ALT"),
-- }}}
-- {{{ Nvim nevigation keybinds
bind_if(
is_outside_vim,
"h",
"CTRL",
wezterm.action.ActivatePaneDirection("Left")
),
bind_if(
is_outside_vim,
"j",
"CTRL",
wezterm.action.ActivatePaneDirection("Down")
),
bind_if(
is_outside_vim,
"k",
"CTRL",
wezterm.action.ActivatePaneDirection("Up")
),
bind_if(
is_outside_vim,
"l",
"CTRL",
wezterm.action.ActivatePaneDirection("Right")
),
-- }}}
}
-- }}}
config.enable_wayland = false
-- and finally, return the configuration to wezterm
return config

View file

@ -1,5 +1,6 @@
# Common wayland stuff # Common wayland stuff
{ lib, pkgs, ... }: { { lib, pkgs, ... }:
{
imports = [ imports = [
./wlsunset.nix ./wlsunset.nix
./wlogout.nix ./wlogout.nix
@ -35,9 +36,10 @@
| ${wl-copy} | ${wl-copy}
${_ pkgs.libnotify} "Scanned qr code on area with output \"$(${wl-paste})\"" ${_ pkgs.libnotify} "Scanned qr code on area with output \"$(${wl-paste})\""
''; '';
# }}}
in in
with pkgs; [ # }}}
with pkgs;
[
libnotify # Send notifications libnotify # Send notifications
wl-ocr # Custom ocr script wl-ocr # Custom ocr script
wl-qr # Custom qr scanner script wl-qr # Custom qr scanner script

View file

@ -1,6 +1,18 @@
{ pkgs, lib, config, ... }:
{ {
imports = [ ../global.nix ./hyprpaper.nix ]; pkgs,
lib,
config,
...
}:
{
imports = [
../global.nix
./hyprpaper.nix
];
home.packages = [
pkgs.gtk3 # Contains gtk-launch
];
stylix.targets.hyprland.enable = true; stylix.targets.hyprland.enable = true;
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
@ -23,13 +35,14 @@
passes = config.satellite.theming.blur.passes; passes = config.satellite.theming.blur.passes;
contrast = config.satellite.theming.blur.contrast; contrast = config.satellite.theming.blur.contrast;
brightness = config.satellite.theming.blur.brightness; brightness = config.satellite.theming.blur.brightness;
noise = 0.05; noise = 5.0e-2;
}; };
}; };
# }}} # }}}
# {{{ Monitors # {{{ Monitors
# Configure monitor properties # Configure monitor properties
monitor = lib.forEach config.satellite.monitors (m: monitor = lib.forEach config.satellite.monitors (
m:
lib.concatStringsSep "," [ lib.concatStringsSep "," [
m.name m.name
"${toString m.width}x${toString m.height}@${toString m.refreshRate}" "${toString m.width}x${toString m.height}@${toString m.refreshRate}"
@ -39,11 +52,10 @@
); );
# Map monitors to workspaces # Map monitors to workspaces
workspace = lib.lists.concatMap workspace = lib.lists.concatMap (
(m: lib.lists.optional (m.workspace != null) "${m.name},${m.workspace}") m: lib.lists.optional (m.workspace != null) "${m.name},${m.workspace}"
config.satellite.monitors; ) config.satellite.monitors;
# }}} # }}}
}; };
}; };
} }

View file

@ -21,6 +21,9 @@ layerrule = blur,logout_dialog
layerrule = blur,anyrun layerrule = blur,anyrun
layerrule = blur,waybar layerrule = blur,waybar
layerrule = ignorezero,gtk-layer-shell
layerrule = ignorezero,osd
layerrule = ignorezero,waybar
layerrule = ignorezero,anyrun layerrule = ignorezero,anyrun
layerrule = ignorezero,waybar layerrule = ignorezero,waybar
@ -51,7 +54,7 @@ animations {
} }
# Execute apps at launch # Execute apps at launch
exec-once = wezterm & firefox & discocss & spotify & obsidiantui & smostui exec-once = foot & firefox & discocss & gtk-launch obsidiantui & gtk-launch smostui
# Without this, xdg-open doesn't work # Without this, xdg-open doesn't work
exec = systemctl --user import-environment PATH && systemctl --user restart xdg-desktop-portal.service exec = systemctl --user import-environment PATH && systemctl --user restart xdg-desktop-portal.service
@ -59,17 +62,11 @@ exec = systemctl --user import-environment PATH && systemctl --user restart xdg-
# {{{ Window rules # {{{ Window rules
# {{{ Automatically move stuff to workspaces # {{{ Automatically move stuff to workspaces
windowrulev2 = workspace 2 silent, title:^(.*Firefox.*)$ windowrulev2 = workspace 2 silent, title:^(.*Firefox.*)$
windowrulev2 = workspace 3 silent, title:^(.*(Disc|WebC)ord.*)$ windowrulev2 = workspace 3 silent, title:^(.*(Disc|WebC)ord.*)$
windowrulev2 = workspace 3 silent, title:^(.*Element.*)$ windowrulev2 = workspace 3 silent, title:^(.*Element.*)$
windowrulev2 = workspace 6 silent, title:^(.*(S|s)pot(ify)?.*)$ windowrulev2 = workspace 6 silent, title:^(.*(S|s)pot(ify)?.*)$
windowrulev2 = workspace 7 silent, class:^(.*Obsidian.*)$
windowrulev2 = workspace 7 silent, title:^(.*Obsidian.*)$ windowrulev2 = workspace 8 silent, class:^(.*Smos.*)$
windowrulev2 = workspace 7 silent, title:^(.*stellar-sanctum)$
windowrulev2 = workspace 7 silent, class:^(org\.wezfurlong\.wezterm\.obsidian)$
windowrulev2 = workspace 8 silent, class:^(org\.wezfurlong\.wezterm\.smos)$
# }}} # }}}
# {{{ Idleinhibit rules # {{{ Idleinhibit rules
# - while firefox is fullscreen # - while firefox is fullscreen
@ -87,7 +84,7 @@ bind = $mod, C, killactive, # Kill current
bind = $mod, F, fullscreen, # Fullscreen bind = $mod, F, fullscreen, # Fullscreen
# Execute external things # Execute external things
bind = $mod, return, exec, wezterm bind = $mod, return, exec, foot
bind = $mod, T, exec, wl-ocr bind = $mod, T, exec, wl-ocr
bind = $mod SHIFT, T, exec, wl-qr bind = $mod SHIFT, T, exec, wl-qr
bind = $mod CONTROL, T, exec, hyprpicker | wl-copy && libnotify "Copied color $(wp-paste)" # Color picker bind = $mod CONTROL, T, exec, hyprpicker | wl-copy && libnotify "Copied color $(wp-paste)" # Color picker
@ -95,7 +92,7 @@ bind = $mod, Q, exec, wlogout # Show logout menu
bind = $mod, L, exec, loginctl lock-session # Lock screen bind = $mod, L, exec, loginctl lock-session # Lock screen
bind = $mod, P, exec, anyrun bind = $mod, P, exec, anyrun
bind = $mod, B, exec, wlsunset-toggle # Toggle blue light filter thingy bind = $mod, B, exec, wlsunset-toggle # Toggle blue light filter thingy
bind = $mod, V, exec, wezterm start vimclip # Vim anywhere! bind = $mod, V, exec, foot vimclip # Vim anywhere!
bind = $mod, W, exec, ~/projects/form-filler/type.sh bind = $mod, W, exec, ~/projects/form-filler/type.sh
# Work with the special workspace # Work with the special workspace

View file

@ -1,4 +1,5 @@
{ config, ... }: { { config, ... }:
{
sops.secrets.wireless.sopsFile = ../../secrets.yaml; sops.secrets.wireless.sopsFile = ../../secrets.yaml;
# https://github.com/NixOS/nixpkgs/blob/nixos-22.11/nixos/modules/services/networking/wpa_supplicant.nix # https://github.com/NixOS/nixpkgs/blob/nixos-22.11/nixos/modules/services/networking/wpa_supplicant.nix
@ -21,6 +22,7 @@
"Ziggo1721699".psk = "@NL_PLACE_1_PASS@"; "Ziggo1721699".psk = "@NL_PLACE_1_PASS@";
"Konijntjes".psk = "@NL_PLACE_1_PODS_PASS@"; "Konijntjes".psk = "@NL_PLACE_1_PODS_PASS@";
"InfoEdu12".psk = "@INFOEDU_PASS@"; "InfoEdu12".psk = "@INFOEDU_PASS@";
"CNU19".psk = "@INFOEDU_PASS@";
"ZTE_F7A321".psk = "@MADALINA_PASS@"; "ZTE_F7A321".psk = "@MADALINA_PASS@";
# [Working solution](https://bbs.archlinux.org/viewtopic.php?id=271336) # [Working solution](https://bbs.archlinux.org/viewtopic.php?id=271336)

View file

@ -43,7 +43,7 @@ main =
[ ("M-p", spawn "rofi -show drun"), [ ("M-p", spawn "rofi -show drun"),
("M-g", spawn myBrowser), ("M-g", spawn myBrowser),
("M-d", spawn "Discord"), ("M-d", spawn "Discord"),
("M-v", spawn "wezterm start vimclip"), ("M-v", spawn "$TERMLAUNCH vimclip"),
("M-s", spawn "spectacle -rcb"), ("M-s", spawn "spectacle -rcb"),
("M-S-s", spawn "spectacle -mcb"), ("M-S-s", spawn "spectacle -mcb"),
("M-C-s", spawn "spectacle -ucb"), ("M-C-s", spawn "spectacle -ucb"),
@ -61,7 +61,7 @@ main =
myLayoutHook = spacingHook layouts myLayoutHook = spacingHook layouts
startupApps = [] startupApps = []
-- [ (0, "wezterm"), -- [ (0, "$TERMSTART"),
-- (1, "firefox"), -- (1, "firefox"),
-- (2, "Discord") -- (2, "Discord")
-- ] -- ]

View file

@ -1,6 +1,9 @@
{ config, ... }: { config, ... }:
{ {
imports = [ ../xserver.nix ../touchpad.nix ]; imports = [
../xserver.nix
../touchpad.nix
];
services.xserver = { services.xserver = {
enable = true; enable = true;
@ -9,13 +12,11 @@
enable = true; enable = true;
enableContribAndExtras = true; enableContribAndExtras = true;
config = builtins.readFile (config.lib.stylix.colors { # TODO: substitute the missing $TERM* variables
template = builtins.readFile ./Main.hs; config = builtins.readFile (config.lib.stylix.colors { template = builtins.readFile ./Main.hs; });
});
}; };
# Proper wallpaper zooming # Proper wallpaper zooming
desktopManager.wallpaper.mode = "fill"; desktopManager.wallpaper.mode = "fill";
}; };
} }

View file

@ -1,4 +1,4 @@
wireless: ENC[AES256_GCM,data:Ib0PdBd2r/DPyE6Ah9NffT8Tw8c2y+seGFrE0e9GkyRaStdYMiiIlWCiaBO0u1HHaVV+2MQ33MnMdqyCGRlqGk45kl0GIwVR5iAiSYnobj/6wcse+kx/+5mzNOHXD1kJRGJBm5+SN9ntiGABNkQXJdn/Qoc/ukY1uaGe2nBeFKmGdD9JL7KfgdI5jYjQYyDbCL9JUszxkXNcplIRBAAy8JDaBVeo9HgI0QDIZToPKwuEeQoA9XzdimrjbCazlZy3ZvjAuoQXmrc1nIRHF5GabSRGTFTnTfcBeW2fGpUxmIhLyucn2DIQBXLm+RDdMLWoqcGbKiLVqKyUXck3ZZyoHMf2b9N52xMUwcS7,iv:ozkDwWmurWTD8TZHGvWL9Yh8cOrP1PzSBkz+1bBZybo=,tag:iGPjRaOoGRcOWJMweTL2yA==,type:str] wireless: ENC[AES256_GCM,data:uHQOb3ilMi0kHsLFz9QZpSiYB6w9cTjCKwBN+TONY+H4arV4EUxzTottEDKQAFZbrNIeq2BU22QpfYMdmiH/6QiODLybWDJQ4fG3L2RzzUTlqZ9uL/uvkRmIXVh9Y4yHn9F+HftYvUaPgKEuVtHfqWleNCjOl6caKZcWEGM0/ow4nGcEfpT5PZsFn27yzKpcVn8A6XUJLTGhdvSSnkixauybEsQh9IszESVb44QYabjEemB7w05bBHn3R148OqDXaBs4LdrDQNjEIJlGTaMeE4WRrRMXu6DMcYexUFRUHZQBJ+RbOkL+qh0U2127AoC7lUTSO0isHw+LG1U78he80sQzvqBBAeK3Crgk,iv:Rmqsj4j69JEKkmuJTn7+JR9q72Fx+Ko7DZeGakxPCFc=,tag:zKXYbjdvgCkvuZLQEubt9g==,type:str]
pilot_password: ENC[AES256_GCM,data:PiKJCv5x68O9HFM4UvqLnsSPtqFslBLeAg67OkvFAbw7WaqbXh/p5SQblhPHcJ7jQDc4kI3XesOxruZrfJ0aZNDV1g7MWecgKg==,iv:EVs/m83Zfx2NRQMO52cF6pCe1ETpYfaR6lmXg2Na/DI=,tag:dl2x1aTsaTgtHEZYdW2lmg==,type:str] pilot_password: ENC[AES256_GCM,data:PiKJCv5x68O9HFM4UvqLnsSPtqFslBLeAg67OkvFAbw7WaqbXh/p5SQblhPHcJ7jQDc4kI3XesOxruZrfJ0aZNDV1g7MWecgKg==,iv:EVs/m83Zfx2NRQMO52cF6pCe1ETpYfaR6lmXg2Na/DI=,tag:dl2x1aTsaTgtHEZYdW2lmg==,type:str]
cloudflare_dns_api_token: ENC[AES256_GCM,data:QlLxQ/4AQsdqdWJC//FRgbMRqR0Ni51JgCDlyXfNe4pfPtiPs+Gb6Q==,iv:7SS+EzeHk0J1DzVvKxd40AuZUidV2asoQbSr5vyxl+U=,tag:T1KGXOsZ26sICYbrcmU8+w==,type:str] cloudflare_dns_api_token: ENC[AES256_GCM,data:QlLxQ/4AQsdqdWJC//FRgbMRqR0Ni51JgCDlyXfNe4pfPtiPs+Gb6Q==,iv:7SS+EzeHk0J1DzVvKxd40AuZUidV2asoQbSr5vyxl+U=,tag:T1KGXOsZ26sICYbrcmU8+w==,type:str]
backup_password: ENC[AES256_GCM,data:Tu7ODTALfQLX7Mbo/BqiM6gaErGv07urwN1iHwGgurKWDuuE1h5NMV5J0cJqW6orTIloVtoZTJgSJ2lZlMcfUQ==,iv:78ha833ZzgEDChIuGjCMVA89U4qY9lWqUmfPCiiQeQM=,tag:u8KWw/060UVP+OOoPhbjRA==,type:str] backup_password: ENC[AES256_GCM,data:Tu7ODTALfQLX7Mbo/BqiM6gaErGv07urwN1iHwGgurKWDuuE1h5NMV5J0cJqW6orTIloVtoZTJgSJ2lZlMcfUQ==,iv:78ha833ZzgEDChIuGjCMVA89U4qY9lWqUmfPCiiQeQM=,tag:u8KWw/060UVP+OOoPhbjRA==,type:str]
@ -35,8 +35,8 @@ sops:
WFd4ZFNHWG5Cakw5cU9MRE9HWHQ4THMKr/S7v1Oj3zQziMtI/NuFVm6AaJF5JV5U WFd4ZFNHWG5Cakw5cU9MRE9HWHQ4THMKr/S7v1Oj3zQziMtI/NuFVm6AaJF5JV5U
sEr2nEptYFz4G6YL5psQGXHaKzQKBg+crgKRbYL4akhqT7pfYPC0bQ== sEr2nEptYFz4G6YL5psQGXHaKzQKBg+crgKRbYL4akhqT7pfYPC0bQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2024-07-08T00:25:56Z" lastmodified: "2024-07-29T19:34:39Z"
mac: ENC[AES256_GCM,data:v+p223kf9JLRMJ6moIpA5wZOemJY0+BSnX30MY8g28RBGaR+I7AbUHOrd+GUPAXLqwfqtrFdPt8pULT+fzuxL4wnlB9NPZxCYFMhSGGj8HysmDuytYXfSD1LZWD9fymE4KuyTZHv7I/coEM/iobbvutu9cmTKN05i1atjeh4B30=,iv:hPiQkvbeFjLyzTNoHMqqPikMPuDvT2X2iAo7JBlEpHY=,tag:fdHvvH+qPrv8UhwIA6aZSA==,type:str] mac: ENC[AES256_GCM,data:ruCV2JKgFN6BiTYjOwlhNmjDCh9ZRJ9E+H0x0uVevZnsTEcFlTUh5iNSiw3uJtcKcA4H4kuGPXlolyxuGVGsAhVFD4G3zR84i9TTHmGT4STC2dNebcA9VUXVnfPhEUFAExrPRxbEqvx3o0QPZIfGonPQzl3xhJzOPahYsRJOwTQ=,iv:rSuuhOgzOgE7DosgVEWDT1jenF3m+NqnCSEKjoCBrfE=,tag:7pAV4jKvJYG1vPqEEMqOPg==,type:str]
pgp: [] pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.8.1 version: 3.8.1

View file

@ -1,4 +1,10 @@
{ config, lib, pkgs, ... }: { {
config,
lib,
pkgs,
...
}:
{
# {{{ Imports # {{{ Imports
imports = [ imports = [
../common/global ../common/global
@ -34,9 +40,14 @@
hardware.opengl.enable = true; hardware.opengl.enable = true;
hardware.opentabletdriver.enable = true; hardware.opentabletdriver.enable = true;
hardware.keyboard.qmk.enable = true; hardware.keyboard.qmk.enable = true;
powerManagement.cpuFreqGovernor = "ondemand"; powerManagement.cpuFreqGovernor = "performance";
services.tlp.enable = true; services.tlp = {
services.thermald.enable = true; enable = true;
settings = {
CPU_SCALING_GOVERNOR_ON_BAT = "performance";
CPU_SCALING_GOVERNOR_ON_AC = "performance";
};
};
# }}} # }}}
# {{{ A few ad-hoc programs # {{{ A few ad-hoc programs
programs.kdeconnect.enable = true; programs.kdeconnect.enable = true;

View file

@ -1,9 +1,9 @@
# (https://nixos.wiki/wiki/Module). # (https://nixos.wiki/wiki/Module).
{ {
# example = import ./example.nix; # example = ./example.nix;
lua-lib = import ./lua-lib.nix; lua-lib = ./lua-lib.nix;
lua-colorscheme = import ./lua-colorscheme.nix; lua-colorscheme = ./lua-colorscheme.nix;
theming = import ./theming.nix; theming = ./theming.nix;
toggles = import ./toggles.nix; toggles = ./toggles.nix;
} }

View file

@ -2,11 +2,11 @@
{ {
# Personal things # Personal things
dev = import ./dev.nix; dev = ./dev.nix;
firefox = import ./firefox; firefox = ./firefox;
monitors = import ./monitors.nix; monitors = ./monitors.nix;
satellite-persistence = import ./persistence.nix; satellite-persistence = ./persistence.nix;
# Should upstream # Should upstream
discord = import ./discord.nix; discord = ./discord.nix;
} }

View file

@ -1,12 +1,12 @@
# (https://nixos.wiki/wiki/Module). # (https://nixos.wiki/wiki/Module).
{ {
# example = import ./example.nix; # example = ./example.nix;
cloudflared = import ./cloudflared.nix; cloudflared = ./cloudflared.nix;
ports = import ./ports.nix; ports = ./ports.nix;
nginx = import ./nginx.nix; nginx = ./nginx.nix;
pilot = import ./pilot.nix; pilot = ./pilot.nix;
pounce = import ./pounce.nix; pounce = ./pounce.nix;
dns = import ./dns.nix; dns = ./dns.nix;
dns-assertions = import ./dns-assertions.nix; dns-assertions = ./dns-assertions.nix;
} }