From b7a0a946557526563ce094c8ae815ebfde89a462 Mon Sep 17 00:00:00 2001 From: Matei Adriel Date: Thu, 18 May 2023 01:56:19 +0200 Subject: [PATCH] Too many things (should have commited more often) --- devshells/default.nix | 1 + devshells/typst.nix | 8 ++ dotfiles/neovim/README.md | 1 + dotfiles/neovim/lazy-lock.json | 1 + dotfiles/neovim/lua/my/plugins/init.lua | 10 ++- dotfiles/neovim/lua/my/plugins/lspconfig.lua | 5 +- dotfiles/neovim/lua/my/plugins/rust-tools.lua | 20 +++-- flake.lock | 12 +-- flake.nix | 2 +- .../desktop/common/firefox/default.nix | 51 +++++++---- .../common/firefox/icons/monkeytype.png | Bin 0 -> 23385 bytes .../desktop/common/wezterm/wezterm.lua | 5 ++ home/adrielus/features/neovim/default.nix | 13 +-- home/adrielus/tethys.nix | 9 +- hosts/nixos/common/optional/xdg-portal.nix | 2 + modules/home-manager/firefox/default.nix | 83 +++++++++++------- 16 files changed, 143 insertions(+), 80 deletions(-) create mode 100644 devshells/typst.nix create mode 100644 home/adrielus/features/desktop/common/firefox/icons/monkeytype.png diff --git a/devshells/default.nix b/devshells/default.nix index 9e9a8f4..9b0b4f1 100644 --- a/devshells/default.nix +++ b/devshells/default.nix @@ -1,5 +1,6 @@ args: { visonum = import ./visonum.nix args; rwtw = import ./rwtw.nix args; + typst = import ./typst.nix args; } diff --git a/devshells/typst.nix b/devshells/typst.nix new file mode 100644 index 0000000..04002bd --- /dev/null +++ b/devshells/typst.nix @@ -0,0 +1,8 @@ +# Shell for using a pinned version of typst +{ pkgs, upkgs, inputs, ... }: +pkgs.mkShell { + nativeBuildInputs = [ + # REASON: not on nixpkgs-stable + upkgs.typst + ]; +} diff --git a/dotfiles/neovim/README.md b/dotfiles/neovim/README.md index 6a3a324..3f42ea4 100644 --- a/dotfiles/neovim/README.md +++ b/dotfiles/neovim/README.md @@ -217,6 +217,7 @@ The following keybinds are available only when running inside firenvim: | \h | Add file to harpoon | harpoon | | C-a | Harpoon quick menu | harpoon | | C-s q/w/e/r/a/s/d/f/z | Open harpoon file with index 0-9 | harpoon | +| lc | Open [l]ocal [c]argo.toml | rust-tools | ### Undocumented diff --git a/dotfiles/neovim/lazy-lock.json b/dotfiles/neovim/lazy-lock.json index d4e1352..1d24ef2 100644 --- a/dotfiles/neovim/lazy-lock.json +++ b/dotfiles/neovim/lazy-lock.json @@ -64,6 +64,7 @@ "telescope-file-browser.nvim": { "branch": "master", "commit": "e0fcb12702ad0d2873544a31730f9aaef04fd032" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "580b6c48651cabb63455e97d7e131ed557b8c7e2" }, "telescope.nvim": { "branch": "master", "commit": "e960efa60e97df58e089b00270f09d60f27202c8" }, + "typst.vim": { "branch": "main", "commit": "a9bb264d29331c52ef462e42e0501e3411bc3efb" }, "undotree": { "branch": "master", "commit": "485f01efde4e22cb1ce547b9e8c9238f36566f21" }, "venn.nvim": { "branch": "main", "commit": "c114563960b8fb1197695d42798d1f3e7190b798" }, "vim-abolish": { "branch": "master", "commit": "cb3dcb220262777082f63972298d57ef9e9455ec" }, diff --git a/dotfiles/neovim/lua/my/plugins/init.lua b/dotfiles/neovim/lua/my/plugins/init.lua index 565bc2d..4cdaa41 100644 --- a/dotfiles/neovim/lua/my/plugins/init.lua +++ b/dotfiles/neovim/lua/my/plugins/init.lua @@ -53,6 +53,12 @@ return { ft = { "yml", "yaml" }, cond = env.vscode.not_active(), }, + + { + "kaarmu/typst.vim", + ft = { "typst" }, + cond = env.vscode.not_active(), + }, --}}} { @@ -106,8 +112,8 @@ return { "christoomey/vim-tmux-navigator", keys = { "", "", "", "" }, cond = env.vscode.not_active() - and env.neovide.not_active() - and env.firenvim.not_active(), + and env.neovide.not_active() + and env.firenvim.not_active(), }, { diff --git a/dotfiles/neovim/lua/my/plugins/lspconfig.lua b/dotfiles/neovim/lua/my/plugins/lspconfig.lua index 45ca17a..f1cafdb 100644 --- a/dotfiles/neovim/lua/my/plugins/lspconfig.lua +++ b/dotfiles/neovim/lua/my/plugins/lspconfig.lua @@ -172,6 +172,7 @@ local servers = { cssls = {}, jsonls = {}, dhall_lsp_server = {}, + typst_lsp = {}, -- pylsp = {}, -- pyright = {}, } @@ -182,7 +183,7 @@ M.capabilities = function() local c = require("cmp_nvim_lsp").default_capabilities() -- Add folding capabilities c.textDocument.foldingRange = - { dynamicRegistration = false, lineFoldingOnly = true } + { dynamicRegistration = false, lineFoldingOnly = true } return c end -- }}} @@ -218,7 +219,7 @@ function lspconfig.config() require("lspconfig")[lsp].setup({ on_attach = details.on_attach, - settings = details.settings, -- Specific per-language settings + settings = details.settings, -- Specific per-language settings flags = { debounce_text_changes = 150, -- This will be the default in neovim 0.7+ }, diff --git a/dotfiles/neovim/lua/my/plugins/rust-tools.lua b/dotfiles/neovim/lua/my/plugins/rust-tools.lua index d08be39..9b7597a 100644 --- a/dotfiles/neovim/lua/my/plugins/rust-tools.lua +++ b/dotfiles/neovim/lua/my/plugins/rust-tools.lua @@ -6,17 +6,19 @@ local M = { config = function() require("rust-tools").setup({ server = { - on_attach = lspconfig.on_attach, + on_attach = function(client, bufnr) + K.nmap( + "lc", + "RustOpenCargo", + "Open [c]argo.toml", + true, + true + ) + + lspconfig.on_attach(client, bufnr) + end, }, }) - - K.nmap( - "lc", - "RustOpenCargo", - "Open [c]argo.toml", - true, - true - ) end, } diff --git a/flake.lock b/flake.lock index 3ea04c9..ee148fd 100644 --- a/flake.lock +++ b/flake.lock @@ -310,11 +310,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1682493015, - "narHash": "sha256-KiMOAe8u83QDF40Z25kWMkZbqr9U+mvjvEJy5Qvw0nw=", + "lastModified": 1684171562, + "narHash": "sha256-BMUWjVWAUdyMWKk0ATMC9H0Bv4qAV/TXwwPUvTiC5IQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "60c0f762658916a4a5b5a36b3e06486f8301daf4", + "rev": "55af203d468a6f5032a519cba4f41acf5a74b638", "type": "github" }, "original": { @@ -326,11 +326,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1681737997, - "narHash": "sha256-pHhjgsIkRMu80LmVe8QoKIZB6VZGRRxFmIvsC5S89k4=", + "lastModified": 1683408522, + "narHash": "sha256-9kcPh6Uxo17a3kK3XCHhcWiV1Yu1kYj22RHiymUhMkU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f00994e78cd39e6fc966f0c4103f908e63284780", + "rev": "897876e4c484f1e8f92009fd11b7d988a121a4e7", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index c97c20f..e25f110 100644 --- a/flake.nix +++ b/flake.nix @@ -42,7 +42,7 @@ rosepine-base16.url = github:edunfelt/base16-rose-pine-scheme; rosepine-base16.flake = false; - # Impermanence + # Impermanence impermanence.url = "github:nix-community/impermanence"; # Slambda diff --git a/home/adrielus/features/desktop/common/firefox/default.nix b/home/adrielus/features/desktop/common/firefox/default.nix index 5286056..66e49d7 100644 --- a/home/adrielus/features/desktop/common/firefox/default.nix +++ b/home/adrielus/features/desktop/common/firefox/default.nix @@ -1,7 +1,29 @@ { pkgs, inputs, ... }: +let + # {{{ Global extensions + extensions = with inputs.firefox-addons.packages.${pkgs.system}; [ + buster-captcha-solver + bypass-paywalls-clean + clearurls # removes ugly args from urls + don-t-fuck-with-paste # disallows certain websites from disabling pasting + gesturefy # mouse gestures + i-dont-care-about-cookies + localcdn # caches libraries locally + privacy-badger # blocks some trackers + privacy-pass # captcha stuff + skip-redirect # attempts to skip to the final reddirect for certain urls + terms-of-service-didnt-read + translate-web-pages + ublock-origin + unpaywall + user-agent-string-switcher + ]; + # }}} +in { programs.firefox = { enable = true; + profiles.adrielus = { # {{{ High level user settings # Unique user id @@ -20,30 +42,15 @@ userContent = builtins.readFile ./userContent.css; # }}} # {{{ Extensions - extensions = with inputs.firefox-addons.packages.${pkgs.system}; [ - buster-captcha-solver - bypass-paywalls-clean - clearurls # removes ugly args from urls - don-t-fuck-with-paste # disallows certain websites from disabling pasting + extensions = with inputs.firefox-addons.packages.${pkgs.system}; extensions ++ [ firenvim # summon a nvim instance inside the browser - gesturefy # mouse gestures - i-dont-care-about-cookies - localcdn # caches libraries locally lovely-forks # displays forks on github octolinker # github import to link thingy octotree # github file tree - privacy-badger # blocks some trackers - privacy-pass # captcha stuff refined-github # a bunch of github modifications return-youtube-dislikes steam-database # adds info from steamdb on storepages sponsorblock # skip youtube sponsors - skip-redirect # attempts to skip to the final reddirect for certain urls - terms-of-service-didnt-read - translate-web-pages - ublock-origin - unpaywall - user-agent-string-switcher vimium-c # vim keybinds youtube-shorts-block ]; @@ -156,7 +163,8 @@ }; # {{{ Standalone "apps" which actually run inside a browser. - apps = { + apps.extensions = extensions; + apps.app = { # {{{ Job stuff asana = { url = "https://app.asana.com/"; @@ -171,7 +179,6 @@ displayName = "Clockodo"; id = 2; }; - # }}} gitlab = { @@ -187,6 +194,13 @@ displayName = "Desmos"; id = 4; }; + + monkey-type = { + url = "https://monkeytype.com/"; + icon = ./icons/monkeytype.png; + displayName = "Monkeytype"; + id = 5; + }; }; # }}} }; @@ -203,6 +217,7 @@ # Tell apps firefox is the default browser using an env var. home.sessionVariables.BROWSER = "firefox"; # }}} + # {{{ Persistence home.persistence."/persist/home/adrielus".directories = [ ".cache/mozilla/firefox" # Non important cache diff --git a/home/adrielus/features/desktop/common/firefox/icons/monkeytype.png b/home/adrielus/features/desktop/common/firefox/icons/monkeytype.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe0c6bb11570d874aad3d4f6523a6d9e27f6be1 GIT binary patch literal 23385 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 literal 0 HcmV?d00001 diff --git a/home/adrielus/features/desktop/common/wezterm/wezterm.lua b/home/adrielus/features/desktop/common/wezterm/wezterm.lua index 1d7cbd2..35158c9 100644 --- a/home/adrielus/features/desktop/common/wezterm/wezterm.lua +++ b/home/adrielus/features/desktop/common/wezterm/wezterm.lua @@ -57,6 +57,11 @@ config.adjust_window_size_when_changing_font_size = false -- Makes it work with config.automatically_reload_config = true config.font_size = font_size config.use_fancy_tab_bar = false +config.disable_default_key_bindings = true +-- 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 -- }}} -- and finally, return the configuration to wezterm diff --git a/home/adrielus/features/neovim/default.nix b/home/adrielus/features/neovim/default.nix index dfb4a99..405a5c0 100644 --- a/home/adrielus/features/neovim/default.nix +++ b/home/adrielus/features/neovim/default.nix @@ -14,10 +14,11 @@ let dhall-lsp-server # dhall tectonic # something related to latex (?) texlab # latex - nodePackages_latest.vscode-langservers-extracted # Web stuff - python310Packages.python-lsp-server # Python - pyright # Python + nodePackages_latest.vscode-langservers-extracted # web stuff + python310Packages.python-lsp-server # python + pyright # python rust-analyzer # rust + upkgs.typst-lsp # typst # Formatters luaformatter # Lua @@ -29,6 +30,7 @@ let nodePackages_latest.purs-tidy # Purescript nodePackages_latest.prettier # Js & friends nodePackages_latest.prettier_d_slim # Js & friends + upkgs.typst-fmt # Typst # Linters ruff # Python linter @@ -52,10 +54,11 @@ let # Preview zathura # Pdf reader xdotool # For zathura reverse search or whatever it's called - glow #Mmd preview in terminal + glow # Md preview in terminal pandoc # Md processing - libsForQt5.falkon # Aparently needed for md preview + libsForQt5.falkon # Needed for one of the md preview plugins I tried + # Latex setup texlive.combined.scheme-full # Latex stuff python38Packages.pygments # required for latex syntax highlighting sage diff --git a/home/adrielus/tethys.nix b/home/adrielus/tethys.nix index f6787c1..997e387 100644 --- a/home/adrielus/tethys.nix +++ b/home/adrielus/tethys.nix @@ -53,7 +53,10 @@ # Temp stuff - xsession.initExtra = '' - command -v dbus-update-activation-environment >/dev/null 2>&1 && dbus-update-activation-environment --systemd XDG_SESSION_CLASS XDG_CONFIG_DIRS XDG_DATA_DIRS XDG_SESSION_DESKTOP XDG_CURRENT_DESKTOP XDG_SESSION_TYPE DCONF_PROFILE XDG_DESKTOP_PORTAL_DIR DISPLAY WAYLAND_DISPLAY SWAYSOCK XMODIFIERS XCURSOR_SIZE XCURSOR_THEME GDK_PIXBUF_MODULE_FILE GIO_EXTRA_MODULES GTK_IM_MODULE QT_PLUGIN_PATH QT_QPA_PLATFORMTHEME QT_STYLE_OVERRIDE QT_IM_MODULE NIXOS_OZONE_WL || systemctl --user import-environment XDG_SESSION_CLASS XDG_CONFIG_DIRS XDG_DATA_DIRS XDG_SESSION_DESKTOP XDG_CURRENT_DESKTOP XDG_SESSION_TYPE DCONF_PROFILE XDG_DESKTOP_PORTAL_DIR DISPLAY WAYLAND_DISPLAY SWAYSOCK XMODIFIERS XCURSOR_SIZE XCURSOR_THEME GDK_PIXBUF_MODULE_FILE GIO_EXTRA_MODULES GTK_IM_MODULE QT_PLUGIN_PATH QT_QPA_PLATFORMTHEME QT_STYLE_OVERRIDE QT_IM_MODULE NIXOS_OZONE_WL - ''; + # systemd.servinces.dbus-update-activation-environment = { + # script = lib.escapeShellArgs "${pkgs.dbu}/bin/dbus-update-activation-environment --systemd --all"; + # serviceConfig.Restart = "no"; + # serviceConfig.User = config.home.user; + # }; + xsession.initExtra = "${pkgs.dbus}/bin/dbus-update-activation-environment --systemd --all"; } diff --git a/hosts/nixos/common/optional/xdg-portal.nix b/hosts/nixos/common/optional/xdg-portal.nix index b51721d..a251f8e 100644 --- a/hosts/nixos/common/optional/xdg-portal.nix +++ b/hosts/nixos/common/optional/xdg-portal.nix @@ -7,4 +7,6 @@ # HACK: copied from @lily on discord. systemd.user.services.xdg-desktop-portal.path = lib.mkAfter [ "/run/current-system/sw" ]; + + services.gnome.at-spi2-core.enable = true; } diff --git a/modules/home-manager/firefox/default.nix b/modules/home-manager/firefox/default.nix index c4c2567..9f04202 100644 --- a/modules/home-manager/firefox/default.nix +++ b/modules/home-manager/firefox/default.nix @@ -1,43 +1,58 @@ +# Allows installing web apps as desktop apps { lib, pkgs, config, ... }: let cfg = config.programs.firefox.apps; in { - options.programs.firefox.apps = lib.mkOption { - type = lib.types.attrsOf - (lib.types.submodule ({ name, ... }: { - options = { - name = lib.mkOption { - type = lib.types.str; - description = "The name of the app"; - default = name; - }; + options.programs.firefox.apps = { + extensions = lib.mkOption { + type = lib.types.listOf lib.types.package; + description = "Extensions to install for all apps"; + default = [ ]; + }; - id = lib.mkOption { - type = lib.types.int; - description = "The id of the firefox profile for the app"; - example = 3; - }; + app = lib.mkOption { + type = lib.types.attrsOf + (lib.types.submodule ({ name, ... }: { + options = { + name = lib.mkOption { + type = lib.types.str; + description = "The name of the app"; + default = name; + }; - displayName = lib.mkOption { - type = lib.types.str; - description = "The name of the app in stuff like menus"; - default = name; - }; + id = lib.mkOption { + type = lib.types.int; + description = "The id of the firefox profile for the app"; + example = 3; + }; - url = lib.mkOption { - type = lib.types.str; - description = "The url the app should point to"; - example = "https://example.com"; - }; + displayName = lib.mkOption { + type = lib.types.str; + description = "The name of the app in stuff like menus"; + default = name; + }; - icon = lib.mkOption { - type = lib.types.path; - description = "The icon to use for the app"; - }; - }; - })); + url = lib.mkOption { + type = lib.types.str; + description = "The url the app should point to"; + example = "https://example.com"; + }; - description = "Attr set of firefox web apps to install as desktop apps"; + icon = lib.mkOption { + type = lib.types.path; + description = "The icon to use for the app"; + }; + + extensions = lib.mkOption { + type = lib.types.listOf lib.types.package; + description = "Extensions to install for this app"; + default = [ ]; + }; + }; + })); + + description = "Attr set of firefox web apps to install as desktop apps"; + }; }; config = @@ -52,7 +67,7 @@ in }; userChrome = builtins.readFile ./theme.css; - + extensions = cfg.extensions ++ app.extensions; isDefault = false; id = app.id; }; @@ -66,7 +81,7 @@ in }; in { - programs.firefox.profiles = lib.mapAttrs (_: mkProfile) cfg; - xdg.desktopEntries = lib.mapAttrs (_: mkDesktopEntry) cfg; + programs.firefox.profiles = lib.mapAttrs (_: mkProfile) cfg.app; + xdg.desktopEntries = lib.mapAttrs (_: mkDesktopEntry) cfg.app; }; }