From b7a0a946557526563ce094c8ae815ebfde89a462 Mon Sep 17 00:00:00 2001 From: Matei Adriel <rafaeladriel11@gmail.com> 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: | \<leader\>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 | +| <leader>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 = { "<C-h>", "<C-j>", "<C-k>", "<C-l>" }, 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( + "<leader>lc", + "<cmd>RustOpenCargo<cr>", + "Open [c]argo.toml", + true, + true + ) + + lspconfig.on_attach(client, bufnr) + end, }, }) - - K.nmap( - "<leader>lc", - "<cmd>RustOpenCargo<cr>", - "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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 HP6<r_GQ(*& 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; }; }