diff --git a/.gitea/workflows/update-flake-lock.yml b/.gitea/workflows/update-flake-lock.yml new file mode 100644 index 0000000..5509aba --- /dev/null +++ b/.gitea/workflows/update-flake-lock.yml @@ -0,0 +1,40 @@ +name: Update flake lock + +on: + schedule: + # Gitea cron schedules use UTC. 07:00 UTC is 03:00 EDT. + - cron: "0 7 * * 0" + workflow_dispatch: + +permissions: + contents: write + +jobs: + update-flake-lock: + runs-on: ubuntu-latest + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Install upstream Nix + uses: cachix/install-nix-action@v31 + + - name: Update flake lock + run: nix flake update + + - name: Commit and push changes + shell: bash + run: | + set -euo pipefail + + if git diff --quiet -- flake.lock; then + echo "flake.lock is already up to date" + exit 0 + fi + + git config user.name "gitea-actions[bot]" + git config user.email "gitea-actions[bot]@noreply.localhost" + git add flake.lock + git commit -m "chore: update flake lock" + git push diff --git a/defaults/nvim/lua/plugins/user.lua b/defaults/nvim/lua/plugins/user.lua index 121089e..65ea261 100644 --- a/defaults/nvim/lua/plugins/user.lua +++ b/defaults/nvim/lua/plugins/user.lua @@ -1,85 +1,10 @@ -if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE - --- You can also add or configure plugins by creating files in this `plugins/` folder --- Here are some examples: - ---@type LazySpec return { - - -- == Examples of Adding Plugins == - - "andweeb/presence.nvim", - { - "ray-x/lsp_signature.nvim", - event = "BufRead", - config = function() require("lsp_signature").setup() end, - }, - - -- == Examples of Overriding Plugins == - - -- customize alpha options - { - "goolord/alpha-nvim", - opts = function(_, opts) - -- customize the dashboard header - opts.section.header.val = { - " █████ ███████ ████████ ██████ ██████", - "██ ██ ██ ██ ██ ██ ██ ██", - "███████ ███████ ██ ██████ ██ ██", - "██ ██ ██ ██ ██ ██ ██ ██", - "██ ██ ███████ ██ ██ ██ ██████", - " ", - " ███  ██ ██  ██ ██ ███  ███", - " ████  ██ ██  ██ ██ ████  ████", - " ██ ██  ██ ██  ██ ██ ██ ████ ██", - " ██  ██ ██  ██  ██  ██ ██  ██  ██", - " ██   ████   ████   ██ ██      ██", - } - return opts - end, - }, - - -- You can disable default plugins as follows: - { "max397574/better-escape.nvim", enabled = false }, - - -- You can also easily customize additional setup of plugins that is outside of the plugin's setup call - { - "L3MON4D3/LuaSnip", - config = function(plugin, opts) - require "astronvim.plugins.configs.luasnip"(plugin, opts) -- include the default astronvim config that calls the setup call - -- add more custom luasnip configuration such as filetype extend or custom snippets - local luasnip = require "luasnip" - luasnip.filetype_extend("javascript", { "javascriptreact" }) - end, - }, - - { - "windwp/nvim-autopairs", - config = function(plugin, opts) - require "astronvim.plugins.configs.nvim-autopairs"(plugin, opts) -- include the default astronvim config that calls the setup call - -- add more custom autopairs configuration such as custom rules - local npairs = require "nvim-autopairs" - local Rule = require "nvim-autopairs.rule" - local cond = require "nvim-autopairs.conds" - npairs.add_rules( - { - Rule("$", "$", { "tex", "latex" }) - -- don't add a pair if the next character is % - :with_pair(cond.not_after_regex "%%") - -- don't add a pair if the previous character is xxx - :with_pair( - cond.not_before_regex("xxx", 3) - ) - -- don't move right when repeat character - :with_move(cond.none()) - -- don't delete if the next character is xx - :with_del(cond.not_after_regex "xx") - -- disable adding a newline when you press - :with_cr(cond.none()), - }, - -- disable for .vim files, but it work for another filetypes - Rule("a", "a", "-vim") - ) - end, - }, + { "nvim-treesitter/nvim-treesitter" }, + { "neovim/nvim-lspconfig" }, + { "kylechui/nvim-surround" }, + { "nvim-neo-tree/neo-tree.nvim" }, + { "akinsho/toggleterm.nvim" }, + { "nvimtools/none-ls.nvim" }, + { "rebelot/heirline.nvim" }, } diff --git a/flake.lock b/flake.lock index 37e2f6e..76007ec 100644 --- a/flake.lock +++ b/flake.lock @@ -9,11 +9,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1783689476, - "narHash": "sha256-Ac4EGPZr9e+mPUdmavJFSTft4vgoXml40+YOFYKTXPg=", + "lastModified": 1789138122, + "narHash": "sha256-mh+ZiGCtHAo0xIi1yaNjHsftfnlWz9JiYwHCyT16yIE=", "owner": "ezKEa", "repo": "aagl-gtk-on-nix", - "rev": "af94408291ad477cae8eed964981ab41f90eb184", + "rev": "d82d6d6f66caf4b63fb154e62fad83c627874127", "type": "github" }, "original": { @@ -22,6 +22,29 @@ "type": "github" } }, + "caitsith": { + "inputs": { + "flake-schemas": "flake-schemas", + "nixpkgs": [ + "nur", + "nixpkgs" + ], + "rust-overlay": "rust-overlay_2" + }, + "locked": { + "lastModified": 1789283312, + "narHash": "sha256-Sv/2AyUTydH5d4eNk/ej1lHD1rpDvNjiB5Y3hmg/EGk=", + "ref": "refs/heads/master", + "rev": "31673a5c64497a0f40487d51820d3738dec13d60", + "revCount": 24, + "type": "git", + "url": "https://scm.wyattjmiller.com/wymiller/caitsith.git" + }, + "original": { + "type": "git", + "url": "https://scm.wyattjmiller.com/wymiller/caitsith.git" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -51,11 +74,11 @@ ] }, "locked": { - "lastModified": 1779036909, - "narHash": "sha256-zXcwYQGCT6pzinK+1dBB2ekTVtfxGZAapb3Evdcu4fY=", + "lastModified": 1786845137, + "narHash": "sha256-oQFip+v0luP8NIxJzmiW4Wu8bILsbFWom5l0zonl8hQ=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "56c666e108467d87d13508936aade6d567f2a501", + "rev": "4cff07de74b50e64bdd68cd4e722ab5b6b35ee48", "type": "github" }, "original": { @@ -96,6 +119,38 @@ "type": "github" } }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1777699697, + "narHash": "sha256-Eg9b/rq/ECYwNwEXs5i9wHyhxNI0JrYx2srdI2uZMaQ=", + "ref": "refs/heads/main", + "rev": "382052b74656a369c5408822af3f2501e9b1af81", + "revCount": 94, + "type": "git", + "url": "https://git.lix.systems/lix-project/flake-compat.git" + }, + "original": { + "type": "git", + "url": "https://git.lix.systems/lix-project/flake-compat.git" + } + }, "flake-schemas": { "locked": { "lastModified": 1780327564, @@ -110,6 +165,20 @@ "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A" } }, + "flake-schemas_2": { + "locked": { + "lastModified": 1780327564, + "narHash": "sha256-HiRPtA0spK+Dkgbhz/1zW9glXxNVB+L4Rj2VYmdawb8=", + "rev": "6cc9bd98891b1fc6bb2b8cb3277df8bc72799ca6", + "revCount": 149, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.5.0/019e83cf-9af3-78b1-ac5b-70e68ad1efe1/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%2A" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -149,18 +218,17 @@ "git-hooks": { "inputs": { "flake-compat": "flake-compat_2", - "gitignore": "gitignore", "nixpkgs": [ "go-overlay", "nixpkgs" ] }, "locked": { - "lastModified": 1778507602, - "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=", + "lastModified": 1788267358, + "narHash": "sha256-nt+lUqYVpc9Y6JeMd2WmXzCDojasdadKo0mWcluvY2Y=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a", + "rev": "27555e2624241fb116b49095df4caaee85a25691", "type": "github" }, "original": { @@ -169,25 +237,26 @@ "type": "github" } }, - "gitignore": { + "git-hooks_2": { "inputs": { + "flake-compat": "flake-compat_3", "nixpkgs": [ + "nur", "go-overlay", - "git-hooks", "nixpkgs" ] }, "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "lastModified": 1788267358, + "narHash": "sha256-nt+lUqYVpc9Y6JeMd2WmXzCDojasdadKo0mWcluvY2Y=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "27555e2624241fb116b49095df4caaee85a25691", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", + "owner": "cachix", + "repo": "git-hooks.nix", "type": "github" } }, @@ -198,11 +267,34 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1783668331, - "narHash": "sha256-mMfzU9jvq9XQyyssR9w0Rki8/Ec4Ez+bLkFWc7BaGGg=", + "lastModified": 1789623807, + "narHash": "sha256-pqmP+T+fR2+MDen+ro2iF7mdH7S83AUuvNZwVDl3jUk=", "owner": "purpleclay", "repo": "go-overlay", - "rev": "423eed783363fa154fc7f0c049f7effa910d2440", + "rev": "b19679b19d64dc29b96caf07e3282c250611ac57", + "type": "github" + }, + "original": { + "owner": "purpleclay", + "repo": "go-overlay", + "type": "github" + } + }, + "go-overlay_2": { + "inputs": { + "flake-utils": "flake-utils_2", + "git-hooks": "git-hooks_2", + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1789623807, + "narHash": "sha256-pqmP+T+fR2+MDen+ro2iF7mdH7S83AUuvNZwVDl3jUk=", + "owner": "purpleclay", + "repo": "go-overlay", + "rev": "b19679b19d64dc29b96caf07e3282c250611ac57", "type": "github" }, "original": { @@ -213,16 +305,19 @@ }, "hildibrand": { "inputs": { - "flake-schemas": "flake-schemas", - "nixpkgs": "nixpkgs_3", - "rust-overlay": "rust-overlay_2" + "flake-schemas": "flake-schemas_2", + "nixpkgs": [ + "nur", + "nixpkgs" + ], + "rust-overlay": "rust-overlay_3" }, "locked": { - "lastModified": 1785717646, - "narHash": "sha256-j6MlkwaYOLa3bogK4SbOnVI5eMZ9j2GdExSiKMaELPo=", + "lastModified": 1789887932, + "narHash": "sha256-ryX9MgESeWwjpFMgxlaF97FgtaRyfIELgFLEeUR8xLQ=", "ref": "refs/heads/master", - "rev": "9588520925513ed0e47711a5798c6e9958143a0a", - "revCount": 5, + "rev": "70288a728cc39eb5f390f71ae24d4a58763216b1", + "revCount": 14, "type": "git", "url": "https://scm.wyattjmiller.com/wymiller/hildibrand.git" }, @@ -238,11 +333,11 @@ ] }, "locked": { - "lastModified": 1783740085, - "narHash": "sha256-qajyHfZY29G2oEQk+uHxmsJcRoBUBXP9maTpFlwP/dI=", + "lastModified": 1789267039, + "narHash": "sha256-LWiBv9yAYFi2LPbUhDGHPGKYskJQjj2fw12OlyO1uQo=", "owner": "nix-community", "repo": "home-manager", - "rev": "3cd22efe6471dc7365c822bd9ad73a21e55f38fb", + "rev": "ec172013fa62135f58fb58dd17ae9651e8f39727", "type": "github" }, "original": { @@ -254,14 +349,17 @@ }, "home-manager_2": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": [ + "nur", + "nixpkgs" + ] }, "locked": { - "lastModified": 1779507042, - "narHash": "sha256-7wOwi8B6D0BYsieZCnHZZj2sNUzgJhLoIVSfkwB7lxQ=", + "lastModified": 1789867870, + "narHash": "sha256-sOag/7DTqw4tXLI7UxjrZxPGV+dlTe6zFtJn0VSkgFM=", "owner": "nix-community", "repo": "home-manager", - "rev": "509ed3c603349a9d43de9e2ae6613baea6bd5b34", + "rev": "d2a22a3659a6ae99847ea9176114f6957b8ac62e", "type": "github" }, "original": { @@ -270,6 +368,21 @@ "type": "github" } }, + "mnw": { + "locked": { + "lastModified": 1780772958, + "narHash": "sha256-VKKe8r4pwCGWZ3Yr9CPN129R4S3CKLSrlYqdYz3vKpM=", + "owner": "Gerg-L", + "repo": "mnw", + "rev": "0871dbf63a53610c95db04439ed8ea4d6ec9c160", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "mnw", + "type": "github" + } + }, "nix-flatpak": { "locked": { "lastModified": 1739444422, @@ -288,11 +401,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1778869304, - "narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=", + "lastModified": 1789286504, + "narHash": "sha256-eiEK7cKZORNEvX0GeF3RtNEF/JXhgf2RqSp3230q13E=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d233902339c02a9c334e7e593de68855ad26c4cb", + "rev": "ef34387ddd751e1ab8857adf4676492d32eb24ec", "type": "github" }, "original": { @@ -304,11 +417,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1783703440, - "narHash": "sha256-O3/YajjWo001VUIgD8BwaRdSNLUFe7nZ1qV5TwhRBcw=", + "lastModified": 1789749394, + "narHash": "sha256-cFTsMQz8Hzn8MT49oaeLSHg62tE86NykugCWkeM2ypk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8f0500b9660505dc3cb647775fe9a978a74b5283", + "rev": "cf9d2fb3e50fa1cd5114c47505ea9177f7ff5f49", "type": "github" }, "original": { @@ -320,41 +433,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1784280462, - "narHash": "sha256-DtoqIqM7VkR6NxAkcLpMwmi02USwWb3JdmNGLyhthc0=", - "rev": "293d6abedf0478e681a4dfcfcb35b30fc796a32f", - "revCount": 1009740, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.2605.1009740%2Brev-293d6abedf0478e681a4dfcfcb35b30fc796a32f/019f73de-20f7-7ec2-98c8-65726640dbf9/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/NixOS/nixpkgs/%2A" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1778443072, - "narHash": "sha256-zi7/fsqM/kFdNuED//4WOCUtezGtKKqRNORjMvfwjnA=", + "lastModified": 1789749394, + "narHash": "sha256-cFTsMQz8Hzn8MT49oaeLSHg62tE86NykugCWkeM2ypk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "da5ad661ba4e5ef59ba743f0d112cbc30e474f32", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_5": { - "locked": { - "lastModified": 1780902259, - "narHash": "sha256-q8yYEC5f1mFlQO9RGna4LTc9QrcvWunX6FYp83munkQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "bd0ff2d3eac24699c3664d5966b9ef36f388e2ca", + "rev": "cf9d2fb3e50fa1cd5114c47505ea9177f7ff5f49", "type": "github" }, "original": { @@ -364,7 +447,20 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_4": { + "locked": { + "lastModified": 1787498568, + "narHash": "sha256-FoOSoBG7tEvOlGRTpWnVdY506Ner4y7r7UYO3OGgmE8=", + "rev": "56c02bc00adcf003215cc4bd996d6efaf4cff188", + "type": "tarball", + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1060451.56c02bc00adc/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" + } + }, + "nixpkgs_5": { "locked": { "lastModified": 1744536153, "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", @@ -382,18 +478,20 @@ }, "nur": { "inputs": { + "caitsith": "caitsith", "darwin": "darwin_2", - "flake-utils": "flake-utils_2", + "go-overlay": "go-overlay_2", "hildibrand": "hildibrand", "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_3", + "rust-overlay": "rust-overlay_4" }, "locked": { - "lastModified": 1786304454, - "narHash": "sha256-2ovOgwFWnKqUMoQfxbobtIWQ+TSN62llX9eJVb9hFoY=", + "lastModified": 1789887979, + "narHash": "sha256-ln0cOIfvEFNd4IdVbiYfdtxS01E5npnstm0YCTOxpJY=", "ref": "refs/heads/master", - "rev": "ea7094e4e33fbb030edf28383de37073fc8b84e0", - "revCount": 43, + "rev": "39c33599b191ae2d595b3cc38e8ad4bf2766cd89", + "revCount": 99, "type": "git", "url": "https://scm.wyattjmiller.com/wymiller/nur.git" }, @@ -402,6 +500,26 @@ "url": "https://scm.wyattjmiller.com/wymiller/nur.git" } }, + "nvf": { + "inputs": { + "flake-compat": "flake-compat_4", + "mnw": "mnw", + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1789854559, + "narHash": "sha256-6GDssza3F+ukpUujSuTL50vW5AHaoG+4vjsDgWqRyeQ=", + "owner": "notashelf", + "repo": "nvf", + "rev": "85bf39cd0409ad8a7fa5b3ad0d29e89e9da97a0e", + "type": "github" + }, + "original": { + "owner": "notashelf", + "repo": "nvf", + "type": "github" + } + }, "root": { "inputs": { "aagl": "aagl", @@ -411,7 +529,8 @@ "nix-flatpak": "nix-flatpak", "nixpkgs": "nixpkgs_2", "nur": "nur", - "rust-overlay": "rust-overlay_3" + "nvf": "nvf", + "rust-overlay": "rust-overlay_5" } }, "rust-overlay": { @@ -422,11 +541,11 @@ ] }, "locked": { - "lastModified": 1782875958, - "narHash": "sha256-5eqDcnBjb1424HRQdnhuhNOBZguq1Z2tqSa2OMF/m2c=", + "lastModified": 1785476452, + "narHash": "sha256-/CXwCFPS41rb/JI2VitKCgVK6V5E6/sfw5ke3B9zyVQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "13139aefa973f3d96c60c0fbab801de058ae25ca", + "rev": "6ef009bf4c4873cdc1a621826722bdea7c03e62c", "type": "github" }, "original": { @@ -439,16 +558,16 @@ "inputs": { "nixpkgs": [ "nur", - "hildibrand", + "caitsith", "nixpkgs" ] }, "locked": { - "lastModified": 1784438913, - "narHash": "sha256-NYF7ZM5ip0u+w1pBFDpIGEbrbgN/wpnLFAmBkWkYMXw=", + "lastModified": 1789196581, + "narHash": "sha256-yJr1Bt4fKkKIpPYbsKGqJ0VFdoDnURgRwuffmBQ2WzY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "afacd6819d3765a05814ee8e3de74c77d42ac799", + "rev": "228ecefb6329d5a531b77b46b581a2f0c26ee056", "type": "github" }, "original": { @@ -459,14 +578,57 @@ }, "rust-overlay_3": { "inputs": { - "nixpkgs": "nixpkgs_6" + "nixpkgs": [ + "nur", + "hildibrand", + "nixpkgs" + ] }, "locked": { - "lastModified": 1783834461, - "narHash": "sha256-FCmrs1StAghJDKfqy56KM96KZtxpYzgeq6zM3QO8wjA=", + "lastModified": 1789802016, + "narHash": "sha256-QVFfArbYaQMGK4dFV+5RUL72Ci+hNHVhaF/R9qJfDhs=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "a286e5b998e852297a403786f063fb2c9fe7f57a", + "rev": "26a71e661c47bd21a05d06fec749f3f7c75e9d12", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_4": { + "inputs": { + "nixpkgs": [ + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1789802016, + "narHash": "sha256-QVFfArbYaQMGK4dFV+5RUL72Ci+hNHVhaF/R9qJfDhs=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "26a71e661c47bd21a05d06fec749f3f7c75e9d12", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_5": { + "inputs": { + "nixpkgs": "nixpkgs_5" + }, + "locked": { + "lastModified": 1789802016, + "narHash": "sha256-QVFfArbYaQMGK4dFV+5RUL72Ci+hNHVhaF/R9qJfDhs=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "26a71e661c47bd21a05d06fec749f3f7c75e9d12", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index db3ee42..501fd6d 100644 --- a/flake.nix +++ b/flake.nix @@ -17,6 +17,7 @@ url = "github:ezKEa/aagl-gtk-on-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + nvf.url = "github:notashelf/nvf"; nur.url = "git+https://scm.wyattjmiller.com/wymiller/nur.git"; }; @@ -30,12 +31,13 @@ go-overlay, aagl, nur, + nvf, ... }: let userName = "wyatt"; userEmail = "wyatt@wyattjmiller.com"; extraSpecialArgs = { - inherit userName userEmail nur; + inherit userName userEmail nur nvf; }; myOverlays = { ... }: { @@ -48,6 +50,10 @@ }; in { meta = import ./meta; + formatter = nixpkgs.lib.genAttrs [ + "x86_64-linux" + "aarch64-darwin" + ] (system: nixpkgs.legacyPackages.${system}.nixfmt); common = { overlays = import ./modules/common/overlays.nix; @@ -217,7 +223,7 @@ nixosConfigurations."yshtola" = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { - inherit userName userEmail; + inherit userName userEmail nur; hostname = "yshtola"; role = "server"; }; @@ -273,7 +279,7 @@ pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { - inherit userName userEmail hostname; + inherit userName userEmail hostname nvf; isNixOS = false; role = "workstation"; }; diff --git a/home/neovim.nix b/home/neovim.nix index eebfd50..b212f57 100644 --- a/home/neovim.nix +++ b/home/neovim.nix @@ -1,18 +1,111 @@ -{...}: let - dirs = { - defaults = ../defaults; - }; -in { - programs.neovim = { - enable = true; - defaultEditor = true; - vimAlias = true; - }; +{ nvf, ... }: { + imports = [ + nvf.homeManagerModules.default + ]; - xdg.configFile = { - nvim = { - onChange = "nvim --headless -c 'if exists(\":LuaCacheClear\") | :LuaCacheClear' +quitall"; - source = dirs.defaults + /nvim; + programs.nvf = { + enable = true; + settings = { + vim = { + viAlias = true; + vimAlias = true; + lsp.enable = true; + treesitter.enable = true; + autocomplete.nvim-cmp.enable = true; + autopairs.nvim-autopairs.enable = true; + + languages = { + nix.enable = true; + rust.enable = true; + go.enable = true; + python.enable = true; + markdown.enable = true; + css.enable = true; + scss.enable = true; + tsx.enable = true; + typescript = { + enable = true; + lsp.servers = [ "typescript-language-server" "deno" ]; + }; + }; + + utility.surround.enable = true; + telescope.enable = true; + mini.icons.enable = true; + notes.obsidian = { + enable = true; + setupOpts.workspaces = [ + { + name = "personal"; + path = "~/Documents/Obsidian/notes"; + } + ]; + }; + + terminal.toggleterm = { + enable = true; + lazygit = { + enable = true; + mappings.open = "gg"; + }; + }; + filetree.neo-tree.enable = true; + binds.whichKey.enable = true; + + clipboard = { + enable = true; + registers = "unnamedplus"; + providers = { + wl-copy.enable = true; + xclip.enable = true; + }; + }; + + lsp.null-ls = { + enable = true; + setupOpts = {}; + }; + lsp.trouble.enable = true; + + theme = { + enable = true; + name = "catppuccin"; + style = "mocha"; + transparent = false; + }; + + dashboard.alpha.enable = true; + + statusline.lualine.enable = true; + tabline.nvimBufferline.enable = true; + + keymaps = [ + { + key = ""; + mode = "n"; + action = "w"; + silent = true; + noremap = true; + } + { key = "o"; mode = "n"; action = "Neotree toggle"; silent = true; noremap = true; } + { key = "tf"; mode = "n"; action = "ToggleTerm direction=float"; silent = true; noremap = true; } + { key = "th"; mode = "n"; action = "ToggleTerm direction=horizontal"; silent = true; noremap = true; } + { key = "tv"; mode = "n"; action = "ToggleTerm direction=vertical"; silent = true; noremap = true; } + { key = "n"; mode = "n"; action = ""; desc = "Notes"; silent = true; noremap = true; } + { key = "nd"; mode = "n"; action = "Obsidian today"; desc = "Obsidian daily note"; silent = true; noremap = true; } + { key = "nf"; mode = "n"; action = "Obsidian quick_switch"; desc = "Obsidian find note"; silent = true; noremap = true; } + { key = "ns"; mode = "n"; action = "Obsidian search"; desc = "Obsidian search notes"; silent = true; noremap = true; } + { key = "nn"; mode = "n"; action = "Obsidian new"; desc = "Obsidian new note"; silent = true; noremap = true; } + { key = "ff"; mode = "n"; action = "Telescope find_files"; silent = true; noremap = true; } + { key = "fD"; mode = "n"; action = "lua require('telescope.builtin').find_files({ cwd = vim.fn.input('Dir: ', vim.loop.cwd() .. '/', 'dir') })"; silent = true; noremap = true; } + { key = "fg"; mode = "n"; action = "Telescope live_grep"; silent = true; noremap = true; } + { key = "/"; mode = "n"; action = "Telescope current_buffer_fuzzy_find"; silent = true; noremap = true; } + { key = "gb"; mode = "n"; action = "Telescope git_branches"; silent = true; noremap = true; } + { key = "gc"; mode = "n"; action = "Telescope git_commits"; silent = true; noremap = true; } + { key = "gl"; mode = "n"; action = "Telescope git_bcommits"; silent = true; noremap = true; } + { key = "gr"; mode = "n"; action = "Telescope git_status"; silent = true; noremap = true; } + ]; + }; }; }; } diff --git a/modules/apps/gaming.nix b/modules/apps/gaming.nix index e871dce..30435bf 100644 --- a/modules/apps/gaming.nix +++ b/modules/apps/gaming.nix @@ -76,6 +76,16 @@ in { enable = lib.mkEnableOption "OpenGL/Vulkan overlay tool shown in games presenting FPS, CPU/GPU/memory utilization, load, etc."; }; + proton = { + enable = lib.mkEnableOption "Proton compatibility tool management"; + + manager = lib.mkOption { + type = lib.types.enum ["protonplus" "protonup-qt"]; + default = "protonup-qt"; + description = "Graphical Proton compatibility tool manager to install"; + }; + }; + lutris = { enable = lib.mkEnableOption "Lutris game manager and launcher"; package = lib.mkOption { @@ -93,14 +103,7 @@ in { }; }; - # Compatibility layers for Lutris compatibility = { - protonSupport = lib.mkOption { - type = lib.types.bool; - default = true; - description = "Enable Proton-like compatibility layers for Lutris"; - }; - extraTools = lib.mkOption { type = lib.types.listOf lib.types.package; default = []; @@ -153,14 +156,27 @@ in { archon = { enable = lib.mkEnableOption "Archon from NUR"; }; + + opengoal = { + enable = lib.mkEnableOption "OpenGOAL, a game engine used in a certain PlayStation 2 franchise"; + }; }; config = let agl = cfg.aagl; nurPkgs = import "${nur.outPath}/pkgs" { inherit pkgs; }; + protonManager = { + protonplus = pkgs.protonplus; + protonup-qt = pkgs.protonup-qt; + }.${cfg.proton.manager}; in { programs.steam = lib.mkIf cfg.steam.enable { enable = true; + extraPackages = with pkgs; [ + gamescope + gamemode + ]; + remotePlay.openFirewall = cfg.steam.firewall.remotePlay; localNetworkGameTransfers.openFirewall = cfg.steam.firewall.localNetworkGameTransfers; }; @@ -214,13 +230,10 @@ in { cfg.lutris.wine.package pkgs.winetricks ]) ++ - (lib.optionals cfg.lutris.compatibility.protonSupport [ - pkgs.protonup-ng - pkgs.protonup-qt - ]) ++ cfg.lutris.compatibility.extraTools ++ cfg.lutris.extraPackages )) ++ + (lib.optionals cfg.proton.enable [protonManager]) ++ (lib.optionals cfg.minecraft.enable [pkgs.prismlauncher]) ++ (lib.optionals cfg.ffxiv.enable [pkgs.xivlauncher pkgs.fflogs]) ++ (lib.optionals cfg.vintage-story.enable [nurPkgs.vintage-story]) ++ diff --git a/modules/graphics/default.nix b/modules/graphics/default.nix index 47fc13f..16acfe4 100644 --- a/modules/graphics/default.nix +++ b/modules/graphics/default.nix @@ -43,6 +43,11 @@ in { vulkan-tools mesa-demos ]; + + hardware.graphics = { + enable = true; + enable32Bit = true; + }; } (mkIf (cfg.gpuVendor == "nvidia") { @@ -61,9 +66,6 @@ in { (mkIf (cfg.gpuVendor == "amd") { services.xserver.videoDrivers = ["amdgpu"]; - # hardware.graphics.extraPackages = with pkgs; [ - # amdvlk - # ]; environment.systemPackages = with pkgs; [ radeontop ]; @@ -82,7 +84,6 @@ in { environment.sessionVariables = { MOZ_ENABLE_WAYLAND = "1"; QT_QPA_PLATFORM = "wayland"; - SDL_VIDEODRIVER = "wayland"; }; }) diff --git a/modules/machine/cloud/configuration.nix b/modules/machine/cloud/configuration.nix index 85cd474..d5fe10e 100644 --- a/modules/machine/cloud/configuration.nix +++ b/modules/machine/cloud/configuration.nix @@ -3,7 +3,6 @@ pkgs, userName, aagl, - nur, ... }: let flatpakPackages = [ @@ -85,9 +84,6 @@ in { ollama-rocm newelle vlc - mediainfo - makemkv - ffmpeg ]; # Enable Polkit @@ -114,21 +110,21 @@ in { gamemode.enable = true; gamescope.enable = true; mangohud.enable = true; + proton = { + enable = true; + manager = "protonplus"; + }; lutris = { enable = true; wine = { enable = true; package = pkgs.wine-staging; }; - compatibility = { - protonSupport = true; - }; }; ffxiv.enable = true; archon.enable = true; minecraft.enable = true; - aagl.wavey-launcher.enable = true; vintage-story.enable = true; }; diff --git a/modules/machine/yshtola/configuration.nix b/modules/machine/yshtola/configuration.nix index 187f301..e8b97a9 100644 --- a/modules/machine/yshtola/configuration.nix +++ b/modules/machine/yshtola/configuration.nix @@ -1,8 +1,10 @@ { + nur, pkgs, userName, ... -}: let +}: +let # INFO: set these to your liking matrixFqdn = "chat.wyattjmiller.com"; rtcFqdn = "rtc.wyattjmiller.com"; @@ -10,16 +12,50 @@ supportEmail = "wyatt@wyattjmiller.com"; livekitKeyFile = "/var/lib/livekit/livekit.key"; matrixRegistrationTokenFile = "/var/lib/matrix.key"; -in { + + sableWeb = nur.packages.${pkgs.stdenv.hostPlatform.system}.sable-web; + + sableConfig = pkgs.writeTextDir "config.json" ( + builtins.toJSON { + defaultHomeserver = 0; + homeserverList = [ matrixFqdn ]; + allowCustomHomeservers = false; + + disableAccountSwitcher = false; + hideUsernamePasswordFields = false; + + hashRouter = { + enabled = false; + basename = "/"; + }; + + featuredCommunities = { + spaces = [ + "#seventhdawn:chat.wyattjmiller.com" + ]; + rooms = [ + "#general:chat.wyattjmiller.com" + "#gposeglams:chat.wyattjmiller.com" + "#lobby-vc:chat.wyattjmiller.com" + "#annoucements:chat.wyattjmiller.com" + ]; + }; + } + ); +in +{ imports = [ ../../pwrMgmt ]; # Enable flakes for NixOS - nix.settings.experimental-features = ["nix-command" "flakes"]; + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; nix.settings = { - download-buffer-size = 134217728; # 128 MiB in bytes + download-buffer-size = 134217728; # 128 MiB in bytes }; # Custom kernel/boot stuff @@ -79,13 +115,13 @@ in { 8448 ]; - allowedUDPPortRanges =[ + allowedUDPPortRanges = [ # TURN UDP relays - { + { from = 49000; to = 50000; } - # + # { from = 50100; to = 50200; @@ -99,7 +135,11 @@ in { "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFV9eSc9L+aJLoKoexq2f/jb5rpyZnhuGiyhS8YQAbaS wyatt@wyattjmiller.com" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4WKvKnnYpTbzZHFEslOKyfiiMqWxhW3AfX6E7ACmYU wyatt@wyattjmiller.com" ]; - extraGroups = ["wheel" "video" "network"]; + extraGroups = [ + "wheel" + "video" + "network" + ]; }; # fail2ban @@ -144,11 +184,13 @@ in { server = "${matrixFqdn}:443"; support_email = supportEmail; support_mxid = "@wymiller:${matrixFqdn}"; - - rtc_transports = [{ - type = "livekit"; - livekit_service_url = "https://${rtcFqdn}"; - }]; + + rtc_transports = [ + { + type = "livekit"; + livekit_service_url = "https://${rtcFqdn}"; + } + ]; }; }; }; @@ -176,8 +218,37 @@ in { virtualHosts = { "${matrixFqdn}" = { extraConfig = '' - encode zstd gzip - reverse_proxy localhost:8008 + @matrixEndpoints path \ + /_matrix/* \ + /_tuwunel/* \ + /.well-known/matrix/* + + handle @matrixEndpoints { + reverse_proxy 127.0.0.1:8008 + } + + @sableConfig path /config.json + handle @sableConfig { + root * ${sableConfig} + header Cache-Control "no-store" + file_server + } + + handle { + root * ${sableWeb} + + encode zstd gzip + try_files {path} /index.html + + file_server { + precompressed br + } + + header /assets/* Cache-Control "public, max-age=31536000, immutable" + header /sw.js Cache-Control "no-cache" + header /index.html Cache-Control "no-cache" + header Document-Policy "js-profiling" + } ''; }; "${matrixFqdn}:8448" = { @@ -220,7 +291,10 @@ in { matrix-registration-token-gen = { before = [ "tuwunel.service" ]; wantedBy = [ "multi-user.target" ]; - path = with pkgs; [ coreutils openssl ]; + path = with pkgs; [ + coreutils + openssl + ]; script = '' set -eu @@ -242,9 +316,15 @@ in { }; livekit-key-gen = { - before = [ "lk-jwt-service.service" "livekit.service" ]; + before = [ + "lk-jwt-service.service" + "livekit.service" + ]; wantedBy = [ "multi-user.target" ]; - path = with pkgs; [ coreutils openssl ]; + path = with pkgs; [ + coreutils + openssl + ]; script = '' set -eu diff --git a/modules/sound/pipewire.nix b/modules/sound/pipewire.nix index fc7513e..292ab62 100644 --- a/modules/sound/pipewire.nix +++ b/modules/sound/pipewire.nix @@ -3,6 +3,11 @@ services.pipewire = { enable = true; pulse.enable = true; + + alsa = { + enable = true; + support32Bit = true; + }; }; environment.systemPackages = with pkgs; [