From 16752e40d51485755473ddd10bc369d83d39d409 Mon Sep 17 00:00:00 2001 From: Matei Adriel Date: Mon, 14 Aug 2023 14:49:55 +0300 Subject: [PATCH] More shells, and beautiful wlogout theming --- common/themes/default.nix | 78 ++++++++++++----- devshells/default.nix | 3 +- devshells/haskell.nix | 6 ++ devshells/purescript.nix | 6 ++ devshells/rwtw.nix | 5 +- devshells/typst.nix | 4 +- devshells/visonum.nix | 7 -- dotfiles/neovim/lazy-lock.json | 82 +++++++++--------- dotfiles/neovim/lua/my/keymaps.lua | 17 +++- dotfiles/neovim/lua/my/neovide.lua | 9 +- dotfiles/neovim/lua/my/plugins/cmp.lua | 6 +- dotfiles/neovim/lua/my/plugins/init.lua | 1 + dotfiles/neovim/lua/my/plugins/lspconfig.lua | 8 +- .../lua/my/plugins/themes/catppuccin.lua | 2 +- flake.nix | 6 +- home/features/desktop/discord/default.nix | 5 +- home/features/desktop/eww/default.nix | 19 +++-- home/features/desktop/eww/widgets/bar.yuck | 84 +++++++++++++++++++ .../desktop/eww/widgets/dashboard.yuck | 12 --- home/features/desktop/spotify.nix | 3 +- home/features/wayland/default.nix | 5 +- home/features/wayland/hyprland/hyprland.conf | 5 ++ home/features/wayland/wlogout.nix | 45 ++++++++++ home/features/xorg/default.nix | 1 - modules/common/default.nix | 1 + modules/common/theming.nix | 61 ++++++++++++++ modules/home-manager/default.nix | 1 + modules/home-manager/eww-hyprland.nix | 71 ++++++++++++++++ 28 files changed, 434 insertions(+), 119 deletions(-) create mode 100644 devshells/haskell.nix create mode 100644 devshells/purescript.nix delete mode 100644 devshells/visonum.nix create mode 100644 home/features/desktop/eww/widgets/bar.yuck delete mode 100644 home/features/desktop/eww/widgets/dashboard.yuck create mode 100644 home/features/wayland/wlogout.nix create mode 100644 modules/common/theming.nix create mode 100644 modules/home-manager/eww-hyprland.nix diff --git a/common/themes/default.nix b/common/themes/default.nix index 6410b0d..6ee385e 100644 --- a/common/themes/default.nix +++ b/common/themes/default.nix @@ -1,45 +1,79 @@ { inputs, ... }: let themes = { + # {{{ Catppuccin variants catppuccin-mocha = { - image = ./wallpapers/auto/catppuccin-mocha-rain-world.png; - base16Scheme = "${inputs.catppuccin-base16}/base16/mocha.yaml"; - polarity = "dark"; + stylix = { + image = ./wallpapers/auto/catppuccin-mocha-rain-world.png; + base16Scheme = "${inputs.catppuccin-base16}/base16/mocha.yaml"; + polarity = "dark"; + }; + satellite = { + transparency.value = 1.0; + }; }; catppuccin-latte = { - # image = ./wallpapers/eye.png; - image = ./wallpapers/watercag.png; - base16Scheme = "${inputs.catppuccin-base16}/base16/latte.yaml"; - polarity = "light"; + stylix = { + # image = ./wallpapers/eye.png; + image = ./wallpapers/watercag.png; + base16Scheme = "${inputs.catppuccin-base16}/base16/latte.yaml"; + polarity = "light"; + }; + satellite = { + transparency.value = 0.6; + }; }; - + # }}} + # {{{ Rosepine variants rosepine-dawn = { - image = ./wallpapers/rosepine_light_field.png; - base16Scheme = "${inputs.rosepine-base16}/rose-pine-dawn.yaml"; - polarity = "light"; + stylix = { + image = ./wallpapers/rosepine_light_field.png; + base16Scheme = "${inputs.rosepine-base16}/rose-pine-dawn.yaml"; + polarity = "light"; + }; + satellite = { + transparency.value = 1.0; + }; }; - + # }}} + # {{{ Experiment: AI generated themes gpt = { monopurple-light = { - image = ./wallpapers/auto/catppuccin-latte-city.png; - base16Scheme = ./gpt-themes/monopurple-light.yaml; - polarity = "light"; + stylix = { + image = ./wallpapers/auto/catppuccin-latte-city.png; + base16Scheme = ./gpt-themes/monopurple-light.yaml; + polarity = "light"; + }; + satellite = { + transparency.value = 1.0; + }; }; purplepink-light = { - image = ./wallpapers/auto/catppuccin-latte-city.png; - base16Scheme = ./gpt-themes/purplepink-light.yaml; - polarity = "light"; + stylix = { + image = ./wallpapers/auto/catppuccin-latte-city.png; + base16Scheme = ./gpt-themes/purplepink-light.yaml; + polarity = "light"; + }; + satellite = { + transparency.value = 1.0; + }; }; }; + # }}} }; + + # Select your current theme here! + currentTheme = themes.catppuccin-latte; in { - # Select your current theme here! - imports = [ - { stylix = themes.catppuccin-latte; } - ]; + # We apply the current theme here. + # The rest is handled by the respective modules! + imports = [{ + stylix = currentTheme.stylix; + satellite.theming = currentTheme.satellite; + }]; # Requires me to manually turn targets on! stylix.autoEnable = false; diff --git a/devshells/default.nix b/devshells/default.nix index 9b0b4f1..54d9d58 100644 --- a/devshells/default.nix +++ b/devshells/default.nix @@ -1,5 +1,6 @@ args: { - visonum = import ./visonum.nix args; + haskell = import ./haskell.nix args; + purescript = import ./purescript.nix args; rwtw = import ./rwtw.nix args; typst = import ./typst.nix args; } diff --git a/devshells/haskell.nix b/devshells/haskell.nix new file mode 100644 index 0000000..13a3b26 --- /dev/null +++ b/devshells/haskell.nix @@ -0,0 +1,6 @@ +# shell containing the tools i most commonly use for haskell work! +{ pkgs, ... }: +pkgs.mkShell { + nativebuildinputs = with pkgs; [ ghc hpack stack cabal-install ]; +} + diff --git a/devshells/purescript.nix b/devshells/purescript.nix new file mode 100644 index 0000000..60047b2 --- /dev/null +++ b/devshells/purescript.nix @@ -0,0 +1,6 @@ +# shell containing the tools i most commonly use for purescript work! +{ pkgs, upkgs, ... }: +pkgs.mkShell { + # reason: purescript 0.15.10 + nativebuildinputs = with pkgs; [ upkgs.purescript spago typescript nodejs ]; +} diff --git a/devshells/rwtw.nix b/devshells/rwtw.nix index 56565ba..3a42cf1 100644 --- a/devshells/rwtw.nix +++ b/devshells/rwtw.nix @@ -1,7 +1,10 @@ # Shell for running the rain world tech wiki locally -{ pkgs, inputs, ... }: +{ pkgs, ... }: let + # Python packages the zola obsidian project expects. pythonDeps = ps: with ps; [ python-slugify rtoml ]; + + # Plugins used by the zola obsidian project zolaObsidianPython = pkgs.python3.withPackages pythonDeps; in pkgs.mkShell { diff --git a/devshells/typst.nix b/devshells/typst.nix index 04002bd..1bf358b 100644 --- a/devshells/typst.nix +++ b/devshells/typst.nix @@ -1,8 +1,8 @@ # Shell for using a pinned version of typst -{ pkgs, upkgs, inputs, ... }: +{ pkgs, upkgs, ... }: pkgs.mkShell { nativeBuildInputs = [ - # REASON: not on nixpkgs-stable + # REASON: version 0.7.0 upkgs.typst ]; } diff --git a/devshells/visonum.nix b/devshells/visonum.nix deleted file mode 100644 index 68ff0c6..0000000 --- a/devshells/visonum.nix +++ /dev/null @@ -1,7 +0,0 @@ -# Shell containing the tools I most commonly use for work -{ pkgs, upkgs, ... }: -pkgs.mkShell { - system = - # REASON: purescript 0.15.7 and it's associated spago - nativeBuildInputs = [ upkgs.purescript upkgs.spago pkgs.typescript pkgs.nodejs ]; -} diff --git a/dotfiles/neovim/lazy-lock.json b/dotfiles/neovim/lazy-lock.json index c2e5137..87bffff 100644 --- a/dotfiles/neovim/lazy-lock.json +++ b/dotfiles/neovim/lazy-lock.json @@ -1,79 +1,77 @@ { - "LuaSnip": { "branch": "master", "commit": "51ebb4b6637290e1b8e0fb0d6f38b605d3c24940" }, + "LuaSnip": { "branch": "master", "commit": "99a94cc35ec99bf06263d0346128e908a204575c" }, "abbreinder.nvim": { "branch": "main", "commit": "5b2b5ff08a9ada42238d733aeebc6d3d96314d77" }, "abbremand.nvim": { "branch": "main", "commit": "d633341f632b0b2666dfc6dfe6b9842ba1610a1d" }, + "catppuccin": { "branch": "main", "commit": "490078b1593c6609e6a50ad5001e7902ea601824" }, "clipboard-image.nvim": { "branch": "main", "commit": "af8fdaad7e6fed0741e18dbf2f57bdc7494adaee" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-cmdline": { "branch": "main", "commit": "5af1bb7d722ef8a96658f01d6eb219c4cf746b32" }, + "cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "0e6b2ed705ddcff9738ec4ea838141654f12eeef" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" }, - "crates.nvim": { "branch": "main", "commit": "3648f8787656d7572740560331553abdaa8cb982" }, - "dashboard-nvim": { "branch": "master", "commit": "0af0ad181db271ef8d5a332f4cfcec9118340497" }, + "crates.nvim": { "branch": "main", "commit": "d5caf28aba49e81ac4099426231f3cf3c151013a" }, + "dashboard-nvim": { "branch": "master", "commit": "c17d3210b3dec8798b4fc82a11c542989251f85d" }, "dhall-vim": { "branch": "master", "commit": "68500ef46ff3706f46c99db3be7a0c8abcf6a3ae" }, - "dressing.nvim": { "branch": "master", "commit": "f19cbd56f7f8cad212c58a7285d09c5d9c273896" }, + "dressing.nvim": { "branch": "master", "commit": "6bde51adabba06f7fd4a469885a85f36d78a5f52" }, "fidget.nvim": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" }, - "firenvim": { "branch": "master", "commit": "e2d5a0f97d1f41e03c8d2a3c71ee60b1a4a6bb83" }, "github-actions-yaml.vim": { "branch": "master", "commit": "f2f16243447cea174daa6b4a9ffd3ff9213814ef" }, "gitlinker.nvim": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" }, - "glow.nvim": { "branch": "main", "commit": "bbd0473d72a45094495ee5600b5577823543eefe" }, + "glow.nvim": { "branch": "main", "commit": "8942dfb05794f436af4fbc90a34393f1fd36f361" }, "harpoon": { "branch": "master", "commit": "21f4c47c6803d64ddb934a5b314dcb1b8e7365dc" }, "hydra.nvim": { "branch": "master", "commit": "3ced42c0b6a6c85583ff0f221635a7f4c1ab0dd0" }, - "hyprland-vim-syntax": { "branch": "main", "commit": "254df6b476db5784bc6bfe3f612129b73dfc43b5" }, + "hyprland-vim-syntax": { "branch": "main", "commit": "8488a24b50882da969979103b4d668c70e7995b9" }, "idris2-nvim": { "branch": "main", "commit": "3a2b4d2b5ffeab9e47298456c59c31b4e1ddebc9" }, - "inc-rename.nvim": { "branch": "main", "commit": "fb1b7468f27d874feb209eac46be5205e20b7fd3" }, - "iron.nvim": { "branch": "master", "commit": "792dd11752c4699ea52c737b5e932d6f21b25834" }, + "inc-rename.nvim": { "branch": "main", "commit": "ed0f6f2b917cac4eb3259f907da0a481b27a3b7e" }, + "iron.nvim": { "branch": "master", "commit": "7f876ee3e1f4ea1e5284b1b697cdad5b256e8046" }, "jupytext.vim": { "branch": "master", "commit": "32c1e37b2edf63a7e38d0deb92cc3f1462cc4dcd" }, "kmonad-vim": { "branch": "master", "commit": "37978445197ab00edeb5b731e9ca90c2b141723f" }, - "knap": { "branch": "main", "commit": "8c083d333b8a82421a521539eb1c450b06c90eb6" }, + "knap": { "branch": "main", "commit": "503010f541696e99ed5c62f658620e546cebf8b0" }, "kotlin-vim": { "branch": "master", "commit": "53fe045906df8eeb07cb77b078fc93acda6c90b8" }, - "lazy.nvim": { "branch": "main", "commit": "e6bf3a0d9c4899dcf832270f79bb1cee8fbc506e" }, - "lean.nvim": { "branch": "main", "commit": "ea68b6abc252e65f88a08305a3d6e1578a27b720" }, - "leap": { "branch": "main", "commit": "be918a8e6aa00a6cfa7270d4bfcc11b2f80d6902" }, - "live-command.nvim": { "branch": "main", "commit": "bc7e094e7ff52caf682c1430ff3a43ff55f6a58b" }, + "lazy.nvim": { "branch": "main", "commit": "dac844ed617dda4f9ec85eb88e9629ad2add5e05" }, + "lean.nvim": { "branch": "main", "commit": "67580fab5bed73920fa3fdd712fc8e805c389c3d" }, + "leap": { "branch": "main", "commit": "5efe985cf68fac3b6a6dfe7a75fbfaca8db2af9c" }, "lspkind.nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" }, - "lualine.nvim": { "branch": "master", "commit": "05d78e9fd0cdfb4545974a5aa14b1be95a86e9c9" }, - "magma-nvim": { "branch": "main", "commit": "395b48e2e202d82fca76c15d2dcd8785c125d686" }, + "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" }, + "magma-nvim": { "branch": "main", "commit": "ff3deba8a879806a51c005e50782130246143d06" }, "mind.nvim": { "branch": "master", "commit": "002137dd7cf97865ebd01b6a260209d2daf2da66" }, - "neoconf.nvim": { "branch": "main", "commit": "ee205ffd079f96d32c837dcf29af259e0dde8557" }, - "neodev.nvim": { "branch": "main", "commit": "358f11c585fdccfcb5e8eae720c423fbed6d92de" }, - "neogit": { "branch": "master", "commit": "80be328067b370744c39323674a2ebaf515dea14" }, - "neorg": { "branch": "main", "commit": "e0fcf254fbdb95fa0918692aee1c93b938e883f8" }, - "neorg-telescope": { "branch": "main", "commit": "d24f445c912451ddbf17cbe8da36561b51b10d39" }, - "nui.nvim": { "branch": "main", "commit": "2b2732528e4a79eb8542568bd51d25f710395bd6" }, - "null-ls.nvim": { "branch": "main", "commit": "c89333e034a8daba654ebfcf9a4ec9f87765f01e" }, - "nvim-autopairs": { "branch": "master", "commit": "59df87a84c80a357ca8d8fe86e451b93ac476ccc" }, - "nvim-cmp": { "branch": "main", "commit": "fc0f694af1a742ada77e5b1c91ff405c746f4a26" }, + "neoconf.nvim": { "branch": "main", "commit": "08f146d53e075055500dca35e93281faff95716b" }, + "neodev.nvim": { "branch": "main", "commit": "9a5c0f0de5c15fba52d4fb83d425d3f4fa7abfa1" }, + "neogit": { "branch": "master", "commit": "e4c428239928425829cb5247e430f26d25d5788e" }, + "neorg": { "branch": "main", "commit": "66e5a4e4ed7645590ac8388abdedb8f840b88f0d" }, + "neorg-telescope": { "branch": "main", "commit": "1310d4aaefd8149c9839bbe1d5610e94389e2f0e" }, + "nui.nvim": { "branch": "main", "commit": "9e3916e784660f55f47daa6f26053ad044db5d6a" }, + "null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" }, + "nvim-autopairs": { "branch": "master", "commit": "ae5b41ce880a6d850055e262d6dfebd362bb276e" }, + "nvim-cmp": { "branch": "main", "commit": "51f1e11a89ec701221877532ee1a23557d291dd5" }, "nvim-comment": { "branch": "main", "commit": "e9ac16ab056695cad6461173693069ec070d2b23" }, - "nvim-lspconfig": { "branch": "master", "commit": "fefba589c56a5568a089299e36a4c8242502faaa" }, - "nvim-tree.lua": { "branch": "master", "commit": "e2a4c9d09d205ebe5f071264f43f73a0077c43a3" }, - "nvim-treesitter": { "branch": "master", "commit": "62146fe415193879290c523b54cb5072e1f5dbbc" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "95b76b95eff25e1e64f363938cd853852355d70a" }, - "nvim-web-devicons": { "branch": "master", "commit": "2a125024a137677930efcfdf720f205504c97268" }, - "nvim_context_vt": { "branch": "master", "commit": "dcfd29699e614035dd6ab863039e1c1811cace91" }, + "nvim-lspconfig": { "branch": "master", "commit": "a981d4447b92c54a4d464eb1a76b799bc3f9a771" }, + "nvim-tree.lua": { "branch": "master", "commit": "0a54dcb76b02f3a4e2da370c7a3f6f2b7b43ef01" }, + "nvim-treesitter": { "branch": "master", "commit": "bc52938ddde0ff6b3d51ff215d2c66f2e39b7099" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "9e519b6146512c8e2e702faf8ac48420f4f5deec" }, + "nvim-web-devicons": { "branch": "master", "commit": "ab899311f8ae00a47eae8e0879506cead8eb1561" }, + "nvim_context_vt": { "branch": "master", "commit": "f44f46ecad6e6983fd04dac84c5a5c03815d3427" }, "paperplanes.nvim": { "branch": "master", "commit": "d704b2e1e594b32d454cc7e0c5f2cf9b391e3cc1" }, - "plenary.nvim": { "branch": "master", "commit": "499e0743cf5e8075cd32af68baa3946a1c76adf1" }, + "plenary.nvim": { "branch": "master", "commit": "267282a9ce242bbb0c5dc31445b6d353bed978bb" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, "purescript-vim": { "branch": "main", "commit": "82348352e6568fcc0385bd7c99a8ead3a479feea" }, "rasi.vim": { "branch": "main", "commit": "eac9969cf935cd4380987dc99bfa10d69d3f34a6" }, - "rose-pine": { "branch": "main", "commit": "15aac8c529bb38ac39fdb22f7be7f37c0e39dd0c" }, - "rust-tools.nvim": { "branch": "master", "commit": "71d2cf67b5ed120a0e31b2c8adb210dd2834242f" }, + "rust-tools.nvim": { "branch": "master", "commit": "0cc8adab23117783a0292a0c8a2fbed1005dc645" }, "scrap.nvim": { "branch": "main", "commit": "16db44ae9403ec9c4b140394f294475d1af80a18" }, - "smart-splits.nvim": { "branch": "master", "commit": "e9a8f08b9db566ebc2b942b4776567f981b2986c" }, - "telescope-file-browser.nvim": { "branch": "master", "commit": "6cf29d5139601993343c4e70ee2d1f67959d9cc5" }, + "smart-splits.nvim": { "branch": "master", "commit": "7aad6019dee974a01333523a5b8e122b7e7da454" }, + "telescope-file-browser.nvim": { "branch": "master", "commit": "ad7b637c72549713b9aaed7c4f9c79c62bcbdff0" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "9bc8237565ded606e6c366a71c64c0af25cd7a50" }, "telescope.nvim": { "branch": "master", "commit": "e960efa60e97df58e089b00270f09d60f27202c8" }, - "typst.vim": { "branch": "main", "commit": "6750b01970045affed30efe063d7e21b399f1efc" }, - "undotree": { "branch": "master", "commit": "485f01efde4e22cb1ce547b9e8c9238f36566f21" }, + "typst.vim": { "branch": "main", "commit": "6a99324a138c2da69589a8ab2e49375774e43d77" }, + "undotree": { "branch": "master", "commit": "0e11ba7325efbbb3f3bebe06213afa3e7ec75131" }, "venn.nvim": { "branch": "main", "commit": "c114563960b8fb1197695d42798d1f3e7190b798" }, "vim-abolish": { "branch": "master", "commit": "cb3dcb220262777082f63972298d57ef9e9455ec" }, "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" }, "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" }, "vim-teal": { "branch": "master", "commit": "d2aa107b257879e774680792a2aebaf9cd5742e0" }, "vim-tmux-navigator": { "branch": "master", "commit": "cdd66d6a37d991bba7997d593586fc51a5b37aa8" }, - "vim-wakatime": { "branch": "master", "commit": "02be9238319937e04afea73fd0fc7da5413ee041" }, + "vim-wakatime": { "branch": "master", "commit": "018fa9a80c27ccf2a8967b9e27890372e5c2fb4f" }, "vimux": { "branch": "master", "commit": "616fcb4799674a7a809b14ca2dc155bb6ba25788" }, - "which-key.nvim": { "branch": "main", "commit": "e271c28118998c93a14d189af3395812a1aa646c" }, + "which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" }, "yuck.vim": { "branch": "master", "commit": "9b5e0370f70cc30383e1dabd6c215475915fe5c3" } } \ No newline at end of file diff --git a/dotfiles/neovim/lua/my/keymaps.lua b/dotfiles/neovim/lua/my/keymaps.lua index 6fd8e0a..5e73161 100644 --- a/dotfiles/neovim/lua/my/keymaps.lua +++ b/dotfiles/neovim/lua/my/keymaps.lua @@ -41,7 +41,12 @@ function M.nmap(from, to, desc, silent, isLocal) isLocal = false end - vim.keymap.set("n", from, to, { desc = desc, silent = silent, buffer = isLocal }) + vim.keymap.set( + "n", + from, + to, + { desc = desc, silent = silent, buffer = isLocal } + ) end -- }}} @@ -100,6 +105,16 @@ function M.setup() }) -- }}} + -- {{{ Winblend + vim.api.nvim_create_autocmd("FileType", { + pattern = { "Telescope*" }, + group = vim.api.nvim_create_augroup("WinblendSettings", {}), + callback = function() + vim.opt.winblend = 0 + end, + }) + -- }}} + return M end diff --git a/dotfiles/neovim/lua/my/neovide.lua b/dotfiles/neovim/lua/my/neovide.lua index eb81548..7f286d4 100644 --- a/dotfiles/neovim/lua/my/neovide.lua +++ b/dotfiles/neovim/lua/my/neovide.lua @@ -2,10 +2,11 @@ local M = {} function M.setup() local default_length = 0.04 - vim.g.neovide_floating_blur_amount_x = 3.0 - vim.g.neovide_floating_blur_amount_y = 3.0 - vim.g.neovide_transparency = 1.0 - vim.g.pumblend = 30 + vim.g.neovide_floating_blur_amount_x = 10.0 + vim.g.neovide_floating_blur_amount_y = 10.0 + vim.g.neovide_transparency = 0.6 + -- vim.g.transparency = 0.6 + vim.g.pumblend = 100 vim.g.neovide_cursor_animation_length = default_length vim.g.neovide_cursor_animate_in_insert_mode = false end diff --git a/dotfiles/neovim/lua/my/plugins/cmp.lua b/dotfiles/neovim/lua/my/plugins/cmp.lua index af703f2..425cd26 100644 --- a/dotfiles/neovim/lua/my/plugins/cmp.lua +++ b/dotfiles/neovim/lua/my/plugins/cmp.lua @@ -34,12 +34,13 @@ function M.config() local options = { window = { - completion = { + documentation = cmp.config.window.bordered(), + completion = cmp.config.window.bordered({ winhighlight = "Normal:Pmenu,FloatBorder:Pmenu,Search:None", col_offset = -3, side_padding = 0, completeopt = "menu,menuone,noinsert", - }, + }), }, formatting = { fields = { "kind", "abbr", "menu" }, @@ -116,6 +117,7 @@ function M.config() { name = "cmdline" }, }), }) + end return M diff --git a/dotfiles/neovim/lua/my/plugins/init.lua b/dotfiles/neovim/lua/my/plugins/init.lua index c395a75..4c979ab 100644 --- a/dotfiles/neovim/lua/my/plugins/init.lua +++ b/dotfiles/neovim/lua/my/plugins/init.lua @@ -140,6 +140,7 @@ return { { -- show progress for lsp stuff "j-hui/fidget.nvim", + tag = "legacy", event = "BufReadPre", cond = env.vscode.not_active(), config = true, diff --git a/dotfiles/neovim/lua/my/plugins/lspconfig.lua b/dotfiles/neovim/lua/my/plugins/lspconfig.lua index b28efaf..64c121a 100644 --- a/dotfiles/neovim/lua/my/plugins/lspconfig.lua +++ b/dotfiles/neovim/lua/my/plugins/lspconfig.lua @@ -210,10 +210,10 @@ end function lspconfig.config() diagnostics_icons() -- -- {{{ Change on-hover borders - -- vim.lsp.handlers["textDocument/hover"] = - -- vim.lsp.with(vim.lsp.handlers.hover, { border = "single" }) - -- vim.lsp.handlers["textDocument/signatureHelp"] = - -- vim.lsp.with(vim.lsp.handlers.signature_help, { border = "single" }) + vim.lsp.handlers["textDocument/hover"] = + vim.lsp.with(vim.lsp.handlers.hover, { border = "single" }) + vim.lsp.handlers["textDocument/signatureHelp"] = + vim.lsp.with(vim.lsp.handlers.signature_help, { border = "single" }) -- -- }}} local capabilities = M.capabilities() diff --git a/dotfiles/neovim/lua/my/plugins/themes/catppuccin.lua b/dotfiles/neovim/lua/my/plugins/themes/catppuccin.lua index 47d3a07..54542fc 100644 --- a/dotfiles/neovim/lua/my/plugins/themes/catppuccin.lua +++ b/dotfiles/neovim/lua/my/plugins/themes/catppuccin.lua @@ -13,7 +13,7 @@ function M.config() catppuccin.setup({ transparent_background = true, - integrations = { nvimtree = true }, + integrations = { nvimtree = true, telescope = true }, }) vim.cmd([[highlight NotifyINFOIcon guifg=#d6b20f]]) diff --git a/flake.nix b/flake.nix index c6c99f7..6269dbe 100644 --- a/flake.nix +++ b/flake.nix @@ -237,9 +237,9 @@ # Taken from [the deploy-rs docs](https://github.com/serokell/deploy-rs). checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) inputs.deploy-rs.lib; # }}} - # {{{ Apps - apps.x86_64-linux = (inputs.nixinate.nixinate.x86_64-linux self); - # }}} + # # {{{ Apps + # apps.x86_64-linux = (inputs.nixinate.nixinate.x86_64-linux self); + # # }}} }; # {{{ Caching and whatnot diff --git a/home/features/desktop/discord/default.nix b/home/features/desktop/discord/default.nix index e7f75e2..6594a8d 100644 --- a/home/features/desktop/discord/default.nix +++ b/home/features/desktop/discord/default.nix @@ -11,10 +11,7 @@ in }; home.packages = [ pkgs.discocss ]; - - xdg.configFile."discocss/custom.css".source = - themeMap.${config.lib.stylix.scheme.scheme} - or themeMap.default.${config.stylix.polarity}; + xdg.configFile."discocss/custom.css".source = config.satellite.theming.get themeMap; satellite.persistence.at.state.apps.Discord.directories = [ "${config.xdg.configHome}/discord" # Why tf does discord store it's state here 💀 diff --git a/home/features/desktop/eww/default.nix b/home/features/desktop/eww/default.nix index 39f01e6..7c333a1 100644 --- a/home/features/desktop/eww/default.nix +++ b/home/features/desktop/eww/default.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, ... }: let base16-eww = config.lib.stylix.colors { template = builtins.readFile ./template.yuck; @@ -7,12 +7,15 @@ let widgets = config.satellite.dev.path "home/features/desktop/eww/widgets"; in { - home.packages = [ pkgs.eww ]; - xdg.configFile."eww/eww.yuck".text = '' - # Color scheme - (include ${base16-eww}) + programs.eww-hyprland = { + enable = true; + autoReload = true; + extraConfig = '' + ; Color scheme + (include "${base16-eww}") - # My widgets - (include ${widgets}/dashboard) - ''; + ; My widgets + (include "${widgets}/bar.yuck") + ''; + }; } diff --git a/home/features/desktop/eww/widgets/bar.yuck b/home/features/desktop/eww/widgets/bar.yuck new file mode 100644 index 0000000..0650d3d --- /dev/null +++ b/home/features/desktop/eww/widgets/bar.yuck @@ -0,0 +1,84 @@ +(defwindow bar + :monitor 0 + :stacking "fg" + :focusable false + :exclusive true + + :geometry (geometry + :width "80px" + :height "96%" + :x "20px" + :anchor "center left") + + (bar-layout)) + +(defwidget bar-layout [] + (centerbox + :orientation "v" + :style "background:transparent" + (bar-start) + (bar-center) + (bar-end))) + +(defwidget bar-start [] + (box + :orientation "v" + :valign "start" + (workspaces))) + +(defwidget bar-center [] + (box + :orientation "v" + :valign "fill" + :space-evenly false + :style "background:blue" + (time) + (date))) + +(defwidget bar-end [] + (box + :orientation "v" + :valign "end" + :style "background:red" + :height 400 + :spacing 20 + (volume) + (battery) + (cpu-usage))) + +(defwidget workspaces [] + (box + :class "workspaces" + :orientation "v" + :space-evenly true + :spacing 10 + (button 1) + (button 2) + (button 3) + (button 4) + (button 5) + (button 6))) + +(defwidget date [] + (label :text "today")) + +(defwidget time [] + (label :text "time")) + +(defwidget volume [] + (circular-progress + :orientation "v" + :value 60 + :thickness 5)) + +(defwidget battery [] + (circular-progress + :orientation "v" + :value 60 + :thickness 5)) + +(defwidget cpu-usage [] + (circular-progress + :orientation "v" + :value 60 + :thickness 5)) diff --git a/home/features/desktop/eww/widgets/dashboard.yuck b/home/features/desktop/eww/widgets/dashboard.yuck deleted file mode 100644 index 1f9e972..0000000 --- a/home/features/desktop/eww/widgets/dashboard.yuck +++ /dev/null @@ -1,12 +0,0 @@ -(defwindow dashboard - :stacking "bg" - ; :windowtype "normal" - :wm-ignore false - :reserve (struts :distance "40px" :side "left") - :geometry (geometry - :width "40px" - :height "100%") - (dashboard_layout)) - -(defwidget dashboard_layout [] - (label :text "A")) diff --git a/home/features/desktop/spotify.nix b/home/features/desktop/spotify.nix index 3712e8b..7236820 100644 --- a/home/features/desktop/spotify.nix +++ b/home/features/desktop/spotify.nix @@ -16,8 +16,7 @@ in programs.spicetify = { enable = true; - theme = themeMap.${config.lib.stylix.scheme.scheme} - or themeMap.default.${config.stylix.polarity}; + theme = config.satellite.theming.get themeMap; enabledExtensions = with spicePkgs.extensions; [ fullAppDisplayMod diff --git a/home/features/wayland/default.nix b/home/features/wayland/default.nix index 18b0112..2fd30b1 100644 --- a/home/features/wayland/default.nix +++ b/home/features/wayland/default.nix @@ -1,12 +1,13 @@ # Common wayland stuff -{ lib, pkgs, upkgs, inputs, ... }: { - +{ lib, pkgs, upkgs, ... }: { imports = [ ./wofi.nix ./dunst.nix ./wlsunset.nix + ./wlogout.nix ../desktop/wezterm # Default hyprland terminal ../desktop/batsignal.nix + ../desktop/eww ]; # Makes some stuff run on wayland (?) diff --git a/home/features/wayland/hyprland/hyprland.conf b/home/features/wayland/hyprland/hyprland.conf index 9a9db44..7126a93 100644 --- a/home/features/wayland/hyprland/hyprland.conf +++ b/home/features/wayland/hyprland/hyprland.conf @@ -21,9 +21,13 @@ decoration { contrast = 1 brightness = 1.2 noise = 0.05 + xray = true } } +# Blur eww widgets +blurls=gtk-layer-shell + input { kb_layout = us @@ -49,6 +53,7 @@ misc { # Execute apps at launch exec-once = wezterm & firefox & discocss & spotify & obsidian + # {{{ Window rules # {{{ Automatically move stuff to workspaces windowrulev2 = workspace 2 silent, title:^(.*Firefox.*)$ diff --git a/home/features/wayland/wlogout.nix b/home/features/wayland/wlogout.nix new file mode 100644 index 0000000..e954432 --- /dev/null +++ b/home/features/wayland/wlogout.nix @@ -0,0 +1,45 @@ +{ config +, pkgs +, ... +}: +let bgImageSection = name: '' + #${name} { + background-image: image(url("${pkgs.wlogout}/share/wlogout/icons/${name}.png")); + } +''; +in +{ + xdg.configFile."wlogout/style.css".text = '' + * { + background-image: none; + font-family: ${config.stylix.fonts.sansSerif.name}; + } + + window { + background-color: rgba(${config.satellite.theming.colors.rgba "base00"}); + } + + button { + color: rgb(${config.satellite.theming.colors.rgb "base05"}); + background: rgba(${config.satellite.theming.colors.rgb "base01"}, 0.2); + border-radius: 8px; + box-shadow: .5px .5px 1.5px 1.5px rgba(0, 0, 0, .5); + margin: 1rem; + background-repeat: no-repeat; + background-position: center; + background-size: 25%; + } + + button:focus, button:active, button:hover { + background-color: rgba(${config.satellite.theming.colors.rgb "base02"}, 0.5); + outline-style: none; + } + + ${bgImageSection "lock"} + ${bgImageSection "logout"} + ${bgImageSection "suspend"} + ${bgImageSection "hibernate"} + ${bgImageSection "shutdown"} + ${bgImageSection "reboot"} + ''; +} diff --git a/home/features/xorg/default.nix b/home/features/xorg/default.nix index 47f0b11..1c8cc53 100644 --- a/home/features/xorg/default.nix +++ b/home/features/xorg/default.nix @@ -1,6 +1,5 @@ { pkgs, ... }: { imports = [ - ../desktop/eww ../desktop/batsignal.nix ./rofi ./polybar diff --git a/modules/common/default.nix b/modules/common/default.nix index 11cb41d..1634475 100644 --- a/modules/common/default.nix +++ b/modules/common/default.nix @@ -3,4 +3,5 @@ { # example = import ./example.nix; lua-colorscheme = import ./lua-colorscheme.nix; + theming = import ./theming.nix; } diff --git a/modules/common/theming.nix b/modules/common/theming.nix new file mode 100644 index 0000000..e848a82 --- /dev/null +++ b/modules/common/theming.nix @@ -0,0 +1,61 @@ +# Additional theming primitives not provided by stylix +{ lib, config, ... }: +let cfg = config.satellite.theming; +in +{ + options.satellite.theming = { + transparency = { + enable = lib.mkEnableOption "transparency for desktop apps"; + value = lib.mkOption { + description = "How transparent windows should be by default"; + example = 0.6; + type = lib.types.float; + }; + }; + + get = lib.mkOption { + # No generics:( + # The type of this is essentially (written in pseudocode): + # + # Record + # & { default?: T + # | {light?: T, dark?: T } } + # -> Option + type = lib.types.functionTo lib.types.anything; + description = "Index a theme map by the current theme"; + }; + + colors = { + rgb = lib.mkOption { + type = lib.types.functionTo lib.types.str; + description = "Returns comma separated rgb values for a color. To be used in css files:)"; + }; + + rgba = lib.mkOption { + type = lib.types.functionTo lib.types.str; + description = '' + Returns comma separated rgba values for a color. + The transparency is taken from `options.satellite.theming.transparency`. + ''; + }; + }; + }; + + config.satellite.theming = { + transparency.enable = cfg.transparency.value < 1.0; + + get = themeMap: + themeMap.${config.lib.stylix.scheme.scheme} + or themeMap.default.${config.stylix.polarity or "dark"} + or themeMap.default + or (throw "Theme ${config.lib.stylix.scheme.scheme} not found in theme map!"); + + colors.rgb = color: builtins.concatStringsSep "," [ + config.lib.stylix.scheme."${color}-rgb-r" + config.lib.stylix.scheme."${color}-rgb-g" + config.lib.stylix.scheme."${color}-rgb-b" + ]; + + colors.rgba = color: "${cfg.colors.rgb color},${toString cfg.transparency.value}"; + }; +} diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix index aa9812d..7d39b1e 100644 --- a/modules/home-manager/default.nix +++ b/modules/home-manager/default.nix @@ -8,6 +8,7 @@ monitors = import ./monitors.nix; satellite-dev = import ./satellite-dev.nix; satellite-persistence = import ./persistence.nix; + eww-hyprland = import ./eww-hyprland.nix; # Should upstream discord = import ./discord.nix; diff --git a/modules/home-manager/eww-hyprland.nix b/modules/home-manager/eww-hyprland.nix new file mode 100644 index 0000000..2c3adbf --- /dev/null +++ b/modules/home-manager/eww-hyprland.nix @@ -0,0 +1,71 @@ +{ config +, pkgs +, lib +, ... +}: +let + reload_script = pkgs.writeShellScript "reload_eww" '' + systemctl --user restart eww.service + ''; + + cfg = config.programs.eww-hyprland; +in +{ + options.programs.eww-hyprland = { + enable = lib.mkEnableOption "eww Hyprland config"; + + package = lib.mkOption { + type = lib.types.nullOr lib.types.package; + default = pkgs.eww-wayland; + defaultText = lib.literalExpression "pkgs.eww-wayland"; + description = "Eww package to use."; + }; + + autoReload = lib.mkOption { + type = lib.types.bool; + default = false; + defaultText = lib.literalExpression "false"; + description = "Whether to restart the eww daemon and windows on change."; + }; + + dependencies = lib.mkOption { + type = lib.types.listOf lib.types.package; + default = [ ]; + defaultText = lib.literalExpression "[]"; + description = "Extra packages eww should have access to."; + }; + + extraConfig = lib.mkOption { + type = lib.types.lines; + default = null; + description = "Extra configuration for eww."; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ cfg.package ]; + + # remove nix files + xdg.configFile."eww/eww.yuck" = { + text = cfg.extraConfig or ""; + + onChange = + if cfg.autoReload + then reload_script.outPath + else ""; + }; + + systemd.user.services.eww = { + Unit = { + Description = "Eww Daemon"; + PartOf = [ "graphical-session.target" ]; + }; + Service = { + Environment = "PATH=/run/wrappers/bin:${lib.makeBinPath cfg.dependencies}"; + ExecStart = "${cfg.package}/bin/eww daemon --no-daemonize"; + Restart = "on-failure"; + }; + Install.WantedBy = [ "graphical-session.target" ]; + }; + }; +}