From 7f4358f7b10a74deb00c40a93c1043c528010ae3 Mon Sep 17 00:00:00 2001 From: FinnPL Date: Wed, 30 Jul 2025 22:06:32 +0200 Subject: [PATCH 1/8] feat: update bootloader configuration to use GRUB with custom entry and modify Waybar tooltip format to include IP address --- hosts/centaur/configuration.nix | 15 ++++++++++++++- modules/hyprland/waybar.nix | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/hosts/centaur/configuration.nix b/hosts/centaur/configuration.nix index f1c6f60..cd53f95 100644 --- a/hosts/centaur/configuration.nix +++ b/hosts/centaur/configuration.nix @@ -19,7 +19,20 @@ # BOOT CONFIGURATION # ============================================================================ boot.loader = { - systemd-boot.enable = true; + grub = { + enable = true; + efiSupport = true; + device = "nodev"; + extraEntries = '' + menuentry "Red Hat Enterprise Linux 10" { + insmod part_gpt + insmod xfs + search --no-floppy --fs-uuid --set=root fd3258e6-5af2-4c09-9943-398267b04e5b + linux /vmlinuz-6.12.0-55.22.1.el10_0.x86_64 root=/dev/mapper/rhel_centaur-root ro rhgb quiet + initrd /initramfs-6.12.0-55.22.1.el10_0.x86_64.img + } + ''; + }; efi.canTouchEfiVariables = true; }; diff --git a/modules/hyprland/waybar.nix b/modules/hyprland/waybar.nix index d3d7f6c..45c5fb1 100644 --- a/modules/hyprland/waybar.nix +++ b/modules/hyprland/waybar.nix @@ -332,7 +332,7 @@ format-ethernet = "󰈀 100% "; format-linked = "{ifname} (No IP)"; format-wifi = " {signalStrength}%"; - tooltip-format = "Connected to {essid} {ifname} via {gwaddr}"; + tooltip-format = "Connected to {essid} {ifname} via {gwaddr} | IP: {ipaddr}"; on-click = "nm-connection-editor"; }; position = "top"; From a4de4f2a314fc1673c3ee345634b427e2f0c98a8 Mon Sep 17 00:00:00 2001 From: FinnPL Date: Wed, 30 Jul 2025 22:46:12 +0200 Subject: [PATCH 2/8] feat: add vesktop to startup applications with a delayed execution for it to actually show up in systemtray --- modules/hyprland/hyprland-config.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/hyprland/hyprland-config.nix b/modules/hyprland/hyprland-config.nix index 2a0be6d..a79039a 100644 --- a/modules/hyprland/hyprland-config.nix +++ b/modules/hyprland/hyprland-config.nix @@ -15,6 +15,7 @@ exec-once = waybar exec-once = mako exec-once = wl-paste --watch cliphist store + exec-once = sleep 3 && vesktop --start-minimized monitor = eDP-1,1920x1080@60,0x0,1 From acbf1ee564df0fee57952b543ad838e6bb99734b Mon Sep 17 00:00:00 2001 From: FinnPL Date: Wed, 30 Jul 2025 23:28:58 +0200 Subject: [PATCH 3/8] feat: add Neovim and Rust configurations with essential packages and plugins --- hosts/centaur/home.nix | 2 + modules/home-manager/jetbrains.nix | 6 +- modules/home-manager/neovim.nix | 377 +++++++++++++++++++++++++++++ modules/home-manager/rust.nix | 21 ++ 4 files changed, 405 insertions(+), 1 deletion(-) create mode 100644 modules/home-manager/neovim.nix create mode 100644 modules/home-manager/rust.nix diff --git a/hosts/centaur/home.nix b/hosts/centaur/home.nix index 67fd343..a7fe49e 100644 --- a/hosts/centaur/home.nix +++ b/hosts/centaur/home.nix @@ -21,6 +21,8 @@ ../../modules/home-manager/python-packages.nix ../../modules/home-manager/cli-tools.nix ../../modules/home-manager/discord.nix + ../../modules/home-manager/neovim.nix + ../../modules/home-manager/rust.nix ../../modules/hyprland/default.nix ]; diff --git a/modules/home-manager/jetbrains.nix b/modules/home-manager/jetbrains.nix index ab82787..c456b8e 100644 --- a/modules/home-manager/jetbrains.nix +++ b/modules/home-manager/jetbrains.nix @@ -21,7 +21,11 @@ in { home.packages = [ jetbrainsToolboxWithDesktop pkgs.openjdk - pkgs.gcc + pkgs.kotlin + + pkgs.clang + pkgs.cmake + pkgs.gnumake ]; home.sessionVariables = { diff --git a/modules/home-manager/neovim.nix b/modules/home-manager/neovim.nix new file mode 100644 index 0000000..3e09c89 --- /dev/null +++ b/modules/home-manager/neovim.nix @@ -0,0 +1,377 @@ +{ + config, + pkgs, + ... +}: { + programs.neovim = { + enable = true; + viAlias = true; + vimAlias = true; + vimdiffAlias = true; + + plugins = with pkgs.vimPlugins; [ + # Essential plugins + nvim-treesitter.withAllGrammars + nvim-lspconfig + nvim-cmp + cmp-nvim-lsp + cmp-buffer + cmp-path + luasnip + cmp_luasnip + + # File explorer and fuzzy finder + nvim-tree-lua + telescope-nvim + telescope-fzf-native-nvim + + # Git integration + gitsigns-nvim + fugitive + + # UI improvements + lualine-nvim + nvim-web-devicons + indent-blankline-nvim + + # Language support + vim-nix + rust-vim + typescript-vim + kotlin-vim + + # Utilities + comment-nvim + nvim-autopairs + which-key-nvim + plenary-nvim + ]; + + extraLuaConfig = '' + -- Basic settings + vim.opt.number = true + vim.opt.relativenumber = true + vim.opt.expandtab = true + vim.opt.shiftwidth = 2 + vim.opt.tabstop = 2 + vim.opt.smartindent = true + vim.opt.wrap = false + vim.opt.swapfile = false + vim.opt.backup = false + vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir" + vim.opt.undofile = true + vim.opt.hlsearch = false + vim.opt.incsearch = true + vim.opt.termguicolors = true + vim.opt.scrolloff = 8 + vim.opt.signcolumn = "yes" + vim.opt.isfname:append("@-@") + vim.opt.updatetime = 50 + vim.opt.colorcolumn = "80" + + -- Set leader key + vim.g.mapleader = " " + + -- Key mappings + local keymap = vim.keymap.set + + -- File explorer + keymap("n", "e", ":NvimTreeToggle") + + -- Telescope + keymap("n", "ff", ":Telescope find_files") + keymap("n", "fg", ":Telescope live_grep") + keymap("n", "fb", ":Telescope buffers") + keymap("n", "fh", ":Telescope help_tags") + + -- Window navigation + keymap("n", "", "h") + keymap("n", "", "j") + keymap("n", "", "k") + keymap("n", "", "l") + + -- Buffer management + keymap("n", "bn", ":bnext") + keymap("n", "bp", ":bprevious") + keymap("n", "bd", ":bdelete") + + -- Plugin configurations + + -- Nvim Tree + require("nvim-tree").setup({ + sort_by = "case_sensitive", + view = { + width = 30, + }, + renderer = { + group_empty = true, + }, + filters = { + dotfiles = true, + }, + }) + + -- Telescope + require("telescope").setup({ + defaults = { + mappings = { + i = { + [""] = require("telescope.actions").move_selection_previous, + [""] = require("telescope.actions").move_selection_next, + } + } + } + }) + require("telescope").load_extension("fzf") + + -- Treesitter + require("nvim-treesitter.configs").setup({ + highlight = { + enable = true, + }, + indent = { + enable = true, + }, + }) + + -- LSP Configuration + local lspconfig = require("lspconfig") + local capabilities = require("cmp_nvim_lsp").default_capabilities() + + -- C/C++ LSP + lspconfig.clangd.setup({ + capabilities = capabilities, + cmd = { + "clangd", + "--background-index", + "--clang-tidy", + "--header-insertion=iwyu", + "--completion-style=detailed", + "--function-arg-placeholders", + "--fallback-style=llvm", + }, + init_options = { + usePlaceholders = true, + }, + }) + + -- Python LSP + lspconfig.pyright.setup({ + capabilities = capabilities, + settings = { + python = { + analysis = { + autoSearchPaths = true, + diagnosticMode = "workspace", + useLibraryCodeForTypes = true, + }, + }, + }, + }) + + -- Java LSP + lspconfig.jdtls.setup({ + capabilities = capabilities, + cmd = { "jdtls" }, + settings = { + java = { + eclipse = { + downloadSources = true, + }, + configuration = { + updateBuildConfiguration = "interactive", + }, + maven = { + downloadSources = true, + }, + implementationsCodeLens = { + enabled = true, + }, + referencesCodeLens = { + enabled = true, + }, + references = { + includeDecompiledSources = true, + }, + format = { + enabled = true, + }, + }, + signatureHelp = { enabled = true }, + completion = { + favoriteStaticMembers = { + "org.hamcrest.MatcherAssert.assertThat", + "org.hamcrest.Matchers.*", + "org.hamcrest.CoreMatchers.*", + "org.junit.jupiter.api.Assertions.*", + "java.util.Objects.requireNonNull", + "java.util.Objects.requireNonNullElse", + "org.mockito.Mockito.*", + }, + }, + contentProvider = { preferred = "fernflower" }, + sources = { + organizeImports = { + starThreshold = 9999, + staticStarThreshold = 9999, + }, + }, + codeGeneration = { + toString = { + template = "$(object.className){$(member.name())=$(member.value), $(otherMembers)}", + }, + useBlocks = true, + }, + }, + }) + + -- Kotlin LSP + lspconfig.kotlin_language_server.setup({ + capabilities = capabilities, + }) + + -- Rust LSP + lspconfig.rust_analyzer.setup({ + capabilities = capabilities, + settings = { + ["rust-analyzer"] = { + imports = { + granularity = { + group = "module", + }, + prefix = "self", + }, + cargo = { + buildScripts = { + enable = true, + }, + }, + procMacro = { + enable = true, + }, + checkOnSave = { + command = "clippy", + }, + }, + }, + }) + + -- Nix LSP + lspconfig.nixd.setup({ + capabilities = capabilities, + }) + + -- TypeScript LSP + lspconfig.ts_ls.setup({ + capabilities = capabilities, + }) + + -- LSP key mappings + vim.api.nvim_create_autocmd("LspAttach", { + group = vim.api.nvim_create_augroup("UserLspConfig", {}), + callback = function(ev) + local opts = { buffer = ev.buf } + keymap("n", "gD", vim.lsp.buf.declaration, opts) + keymap("n", "gd", vim.lsp.buf.definition, opts) + keymap("n", "K", vim.lsp.buf.hover, opts) + keymap("n", "gi", vim.lsp.buf.implementation, opts) + keymap("n", "", vim.lsp.buf.signature_help, opts) + keymap("n", "rn", vim.lsp.buf.rename, opts) + keymap("n", "ca", vim.lsp.buf.code_action, opts) + keymap("n", "gr", vim.lsp.buf.references, opts) + keymap("n", "f", function() + vim.lsp.buf.format { async = true } + end, opts) + end, + }) + + -- Completion setup + local cmp = require("cmp") + local luasnip = require("luasnip") + + cmp.setup({ + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.abort(), + [""] = cmp.mapping.confirm({ select = true }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }), + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "buffer" }, + { name = "path" }, + }), + }) + + -- Lualine + require("lualine").setup({ + options = { + theme = "dracula", + component_separators = { left = "", right = ""}, + section_separators = { left = "", right = ""}, + }, + }) + + -- Git signs + require("gitsigns").setup() + + -- Comment plugin + require("Comment").setup() + + -- Autopairs + require("nvim-autopairs").setup() + + -- Which-key + require("which-key").setup() + + -- Indent blankline + require("ibl").setup() + ''; + }; + + # Additional packages that Neovim might need + home.packages = with pkgs; [ + # Language servers + nixd + rust-analyzer + nodePackages.typescript-language-server + pyright + clang-tools + jdt-language-server + kotlin-language-server + + # Additional tools + ripgrep + fd + tree-sitter + ]; +} diff --git a/modules/home-manager/rust.nix b/modules/home-manager/rust.nix new file mode 100644 index 0000000..bbfff85 --- /dev/null +++ b/modules/home-manager/rust.nix @@ -0,0 +1,21 @@ +{ + config, + pkgs, + ... +}: { + home.packages = with pkgs; [ + rustc + cargo + rust-analyzer + rustfmt + clippy + + cargo-watch + cargo-edit + cargo-outdated + ]; + + home.sessionVariables = { + RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; + }; +} From 97fb8abd425612d3c313a498f6834df5a6b59541 Mon Sep 17 00:00:00 2001 From: FinnPL Date: Sat, 30 Aug 2025 15:57:53 +0200 Subject: [PATCH 4/8] feat: update jetbrains toolbox installation script and add necessary permissions for desktop integration --- flake.lock | 110 ++++++++++++++--------------- hosts/centaur/home.nix | 11 ++- modules/home-manager/jetbrains.nix | 46 +++++++----- 3 files changed, 94 insertions(+), 73 deletions(-) diff --git a/flake.lock b/flake.lock index 2688a29..7e2d382 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1752743471, - "narHash": "sha256-4izhj1j7J4mE8LgljCXSIUDculqOsxxhdoC81VhqizM=", + "lastModified": 1755946532, + "narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "e31b575d19e7cf8a8f4398e2f9cffe27a1332506", + "rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada", "type": "github" }, "original": { @@ -70,11 +70,11 @@ "base16-helix": { "flake": false, "locked": { - "lastModified": 1748408240, - "narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=", + "lastModified": 1752979451, + "narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e", + "rev": "27cf1e66e50abc622fb76a3019012dc07c678fac", "type": "github" }, "original": { @@ -108,11 +108,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1752984247, - "narHash": "sha256-JIsQY8kDY/uicS4UqYmVM2UP7qa8YeQI7XMkX6EBYJM=", + "lastModified": 1756526623, + "narHash": "sha256-G8N9zjlLZyI/BkrlI/fSrP0Zif/ttr3JWq1m5VxTLR4=", "owner": "rycee", "repo": "nur-expressions", - "rev": "8633d2c796c8cb8ec3a206728d9a9278af51947f", + "rev": "702be0c726c76de3e069ae95c7b1dab5bd568000", "type": "gitlab" }, "original": { @@ -141,11 +141,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -237,11 +237,11 @@ ] }, "locked": { - "lastModified": 1752814804, - "narHash": "sha256-irfg7lnfEpJY+3Cffkluzp2MTVw1Uq9QGxFp6qadcXI=", + "lastModified": 1756496801, + "narHash": "sha256-IYIsnPy+cJxe8RbDHBrCtfJY0ry2bG2H7WvMcewiGS8=", "owner": "nix-community", "repo": "home-manager", - "rev": "d0300c8808e41da81d6edfc202f3d3833c157daf", + "rev": "77a71380c38fb2a440b4b5881bbc839f6230e1cb", "type": "github" }, "original": { @@ -266,11 +266,11 @@ ] }, "locked": { - "lastModified": 1749155331, - "narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=", + "lastModified": 1753964049, + "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80", + "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", "type": "github" }, "original": { @@ -295,11 +295,11 @@ ] }, "locked": { - "lastModified": 1752149140, - "narHash": "sha256-gbh1HL98Fdqu0jJIWN4OJQN7Kkth7+rbkFpSZLm/62A=", + "lastModified": 1755678602, + "narHash": "sha256-uEC5O/NIUNs1zmc1aH1+G3GRACbODjk2iS0ET5hXtuk=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "340494a38b5ec453dfc542c6226481f736cc8a9a", + "rev": "157cc52065a104fc3b8fa542ae648b992421d1c7", "type": "github" }, "original": { @@ -324,11 +324,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1752936500, - "narHash": "sha256-StLLgYbL3U2iDezMbfr/QjUtd2a0Mb+pScDSQxFElTg=", + "lastModified": 1756498600, + "narHash": "sha256-09FSU9GTVyDlTcXjsjzumfUkIJUwht1DESNh41kufdc=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "91d8a629ebfffaa46290331a74a54e249dec64fe", + "rev": "ea42041f936d5810c5cfa45d6bece12dde2fd9b6", "type": "github" }, "original": { @@ -354,11 +354,11 @@ ] }, "locked": { - "lastModified": 1752875239, - "narHash": "sha256-fyMI4mWt29sEdTSFJKhIdVQrrewycFWLmrOX/HRf4Ig=", + "lastModified": 1756461489, + "narHash": "sha256-MeRYPD6GTbBEcoEqwl8kqCSKtM8CJcYayvPfKGoQkzc=", "owner": "hyprwm", "repo": "Hyprland-Plugins", - "rev": "d4bf99e72243e035b15f34db8572d62d73b9a68c", + "rev": "376d08bbbd861f2125f5ef86e0003e3636ce110f", "type": "github" }, "original": { @@ -447,11 +447,11 @@ ] }, "locked": { - "lastModified": 1750371812, - "narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=", + "lastModified": 1753819801, + "narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "b13c7481e37856f322177010bdf75fccacd1adc8", + "rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc", "type": "github" }, "original": { @@ -476,11 +476,11 @@ ] }, "locked": { - "lastModified": 1750371198, - "narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=", + "lastModified": 1753622892, + "narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b", + "rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809", "type": "github" }, "original": { @@ -501,11 +501,11 @@ ] }, "locked": { - "lastModified": 1752252310, - "narHash": "sha256-06i1pIh6wb+sDeDmWlzuPwIdaFMxLlj1J9I5B9XqSeo=", + "lastModified": 1756117388, + "narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "bcabcbada90ed2aacb435dc09b91001819a6dc82", + "rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0", "type": "github" }, "original": { @@ -526,11 +526,11 @@ ] }, "locked": { - "lastModified": 1751897909, - "narHash": "sha256-FnhBENxihITZldThvbO7883PdXC/2dzW4eiNvtoV5Ao=", + "lastModified": 1755184602, + "narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "fcca0c61f988a9d092cbb33e906775014c61579d", + "rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d", "type": "github" }, "original": { @@ -541,11 +541,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1752687322, - "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", + "lastModified": 1756266583, + "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", + "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", "type": "github" }, "original": { @@ -557,11 +557,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1752950548, - "narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=", + "lastModified": 1756386758, + "narHash": "sha256-1wxxznpW2CKvI9VdniaUnTT2Os6rdRJcRUf65ZK9OtE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c87b95e25065c028d31a94f06a62927d18763fdf", + "rev": "dfb2f12e899db4876308eba6d93455ab7da304cd", "type": "github" }, "original": { @@ -622,11 +622,11 @@ ] }, "locked": { - "lastModified": 1750779888, - "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", + "lastModified": 1755960406, + "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", + "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", "type": "github" }, "original": { @@ -665,11 +665,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1752965417, - "narHash": "sha256-FDec+RoFgSrk3YPedcjNiBK+acaHO4Vt0YDTMdKdw1w=", + "lastModified": 1755997543, + "narHash": "sha256-/fejmCQ7AWa655YxyPxRDbhdU7c5+wYsFSjmEMXoBCM=", "owner": "danth", "repo": "stylix", - "rev": "f826d3214b8a9be3f158d5cc7514c4130674324b", + "rev": "f47c0edcf71e802378b1b7725fa57bb44fe85ee8", "type": "github" }, "original": { @@ -792,7 +792,7 @@ "wallpapers": { "flake": false, "locked": { - "lastModified": 1753205958, + "lastModified": 1753285086, "narHash": "sha256-COH3R0ZYkCM0OLj8lG4uo/YUQh7oHz9etmHgJDOPLNU=", "path": "/usr/share/wallpaper", "type": "path" @@ -830,11 +830,11 @@ ] }, "locked": { - "lastModified": 1751300244, - "narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=", + "lastModified": 1755354946, + "narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a", + "rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0", "type": "github" }, "original": { diff --git a/hosts/centaur/home.nix b/hosts/centaur/home.nix index a7fe49e..3de2375 100644 --- a/hosts/centaur/home.nix +++ b/hosts/centaur/home.nix @@ -40,7 +40,16 @@ home.packages = [ pkgs.texlive.combined.scheme-full pkgs.protonvpn-gui - pkgs.termius + (pkgs.termius.overrideAttrs (oldAttrs: { + autoPatchelfIgnoreMissingDeps = (oldAttrs.autoPatchelfIgnoreMissingDeps or []) ++ [ + "libsqlite3.so.0" + ]; + buildInputs = (oldAttrs.buildInputs or []) ++ [ + pkgs.libGL + pkgs.nss + pkgs.sqlite + ]; + })) # # Adds the 'hello' command to your environment. It prints a friendly # # "Hello, world!" when run. # pkgs.hello diff --git a/modules/home-manager/jetbrains.nix b/modules/home-manager/jetbrains.nix index c456b8e..1210b24 100644 --- a/modules/home-manager/jetbrains.nix +++ b/modules/home-manager/jetbrains.nix @@ -1,22 +1,34 @@ {pkgs, ...}: let - jetbrainsToolboxWithDesktop = pkgs.symlinkJoin { - name = "jetbrains-toolbox-with-desktop"; - paths = [pkgs.jetbrains-toolbox]; + jetbrainsToolboxWithDesktop = pkgs.runCommand "jetbrains-toolbox-with-desktop" { nativeBuildInputs = [pkgs.makeWrapper]; - postBuild = '' - mkdir -p $out/share/applications - cat > $out/share/applications/jetbrains-toolbox.desktop </dev/null || true + chmod -R u+w $out/share/ 2>/dev/null || true + fi + + # Ensure applications directory exists and is writable + mkdir -p $out/share/applications + chmod u+w $out/share/applications + + # Create the desktop file + cat > $out/share/applications/jetbrains-toolbox.desktop < Date: Wed, 12 Nov 2025 16:53:56 +0100 Subject: [PATCH 5/8] fmt --- hosts/centaur/home.nix | 20 ++++++---- modules/home-manager/jetbrains.nix | 61 +++++++++++++++--------------- 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/hosts/centaur/home.nix b/hosts/centaur/home.nix index 3de2375..7fa9403 100644 --- a/hosts/centaur/home.nix +++ b/hosts/centaur/home.nix @@ -41,14 +41,18 @@ pkgs.texlive.combined.scheme-full pkgs.protonvpn-gui (pkgs.termius.overrideAttrs (oldAttrs: { - autoPatchelfIgnoreMissingDeps = (oldAttrs.autoPatchelfIgnoreMissingDeps or []) ++ [ - "libsqlite3.so.0" - ]; - buildInputs = (oldAttrs.buildInputs or []) ++ [ - pkgs.libGL - pkgs.nss - pkgs.sqlite - ]; + autoPatchelfIgnoreMissingDeps = + (oldAttrs.autoPatchelfIgnoreMissingDeps or []) + ++ [ + "libsqlite3.so.0" + ]; + buildInputs = + (oldAttrs.buildInputs or []) + ++ [ + pkgs.libGL + pkgs.nss + pkgs.sqlite + ]; })) # # Adds the 'hello' command to your environment. It prints a friendly # # "Hello, world!" when run. diff --git a/modules/home-manager/jetbrains.nix b/modules/home-manager/jetbrains.nix index 1210b24..06bfefd 100644 --- a/modules/home-manager/jetbrains.nix +++ b/modules/home-manager/jetbrains.nix @@ -1,34 +1,35 @@ {pkgs, ...}: let - jetbrainsToolboxWithDesktop = pkgs.runCommand "jetbrains-toolbox-with-desktop" { - nativeBuildInputs = [pkgs.makeWrapper]; - } '' - mkdir -p $out/bin $out/share/applications - - # Link the jetbrains-toolbox binary - ln -s ${pkgs.jetbrains-toolbox}/bin/* $out/bin/ - - # Copy any existing share directory content (if exists) - if [ -d "${pkgs.jetbrains-toolbox}/share" ]; then - cp -rL ${pkgs.jetbrains-toolbox}/share/* $out/share/ 2>/dev/null || true - chmod -R u+w $out/share/ 2>/dev/null || true - fi - - # Ensure applications directory exists and is writable - mkdir -p $out/share/applications - chmod u+w $out/share/applications - - # Create the desktop file - cat > $out/share/applications/jetbrains-toolbox.desktop </dev/null || true + chmod -R u+w $out/share/ 2>/dev/null || true + fi + + # Ensure applications directory exists and is writable + mkdir -p $out/share/applications + chmod u+w $out/share/applications + + # Create the desktop file + cat > $out/share/applications/jetbrains-toolbox.desktop < Date: Wed, 12 Nov 2025 16:56:50 +0100 Subject: [PATCH 6/8] feat: update --- flake.lock | 249 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 140 insertions(+), 109 deletions(-) diff --git a/flake.lock b/flake.lock index 7e2d382..9294f85 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1755946532, - "narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=", + "lastModified": 1762356719, + "narHash": "sha256-qwd/xdoOya1m8FENle+4hWnydCtlXUWLAW/Auk6WL7s=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada", + "rev": "6d0b3567584691bf9d8fedb5d0093309e2f979c7", "type": "github" }, "original": { @@ -38,11 +38,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1746562888, - "narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=", + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", "type": "github" }, "original": { @@ -54,16 +54,17 @@ "base16-fish": { "flake": false, "locked": { - "lastModified": 1622559957, - "narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=", + "lastModified": 1754405784, + "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=", "owner": "tomyun", "repo": "base16-fish", - "rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", "type": "github" }, "original": { "owner": "tomyun", "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", "type": "github" } }, @@ -108,11 +109,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1756526623, - "narHash": "sha256-G8N9zjlLZyI/BkrlI/fSrP0Zif/ttr3JWq1m5VxTLR4=", + "lastModified": 1762920261, + "narHash": "sha256-VuUg2EP2Y0QrDTsDP6/3kN3Hurn6HfyMW3rGzdruhW8=", "owner": "rycee", "repo": "nur-expressions", - "rev": "702be0c726c76de3e069ae95c7b1dab5bd568000", + "rev": "8cd76837f50debe28b51820adb00b522df8ade91", "type": "gitlab" }, "original": { @@ -125,11 +126,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1748383148, - "narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=", + "lastModified": 1758112371, + "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf", + "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d", "type": "github" }, "original": { @@ -162,11 +163,11 @@ ] }, "locked": { - "lastModified": 1751413152, - "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", + "rev": "4524271976b625a4a605beefd893f270620fd751", "type": "github" }, "original": { @@ -237,11 +238,11 @@ ] }, "locked": { - "lastModified": 1756496801, - "narHash": "sha256-IYIsnPy+cJxe8RbDHBrCtfJY0ry2bG2H7WvMcewiGS8=", + "lastModified": 1762961767, + "narHash": "sha256-eaejVndX0ai9/t1Xrw1wuUPoVcjHq7hijBljX/l8+Ek=", "owner": "nix-community", "repo": "home-manager", - "rev": "77a71380c38fb2a440b4b5881bbc839f6230e1cb", + "rev": "747a9a774ed63380bfa08f7f88cf0ba136183d6e", "type": "github" }, "original": { @@ -295,11 +296,11 @@ ] }, "locked": { - "lastModified": 1755678602, - "narHash": "sha256-uEC5O/NIUNs1zmc1aH1+G3GRACbODjk2iS0ET5hXtuk=", + "lastModified": 1762462052, + "narHash": "sha256-6roLYzcDf4V38RUMSqycsOwAnqfodL6BmhRkUtwIgdA=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "157cc52065a104fc3b8fa542ae648b992421d1c7", + "rev": "ffc999d980c7b3bca85d3ebd0a9fbadf984a8162", "type": "github" }, "original": { @@ -313,8 +314,8 @@ "aquamarine": "aquamarine", "hyprcursor": "hyprcursor", "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", "hyprland-protocols": "hyprland-protocols", - "hyprland-qtutils": "hyprland-qtutils", "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", @@ -324,11 +325,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1756498600, - "narHash": "sha256-09FSU9GTVyDlTcXjsjzumfUkIJUwht1DESNh41kufdc=", + "lastModified": 1762901961, + "narHash": "sha256-Oh7zDVRVW12nTiJD43UeuhqTox4c9vJCKnGIHHDbdic=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "ea42041f936d5810c5cfa45d6bece12dde2fd9b6", + "rev": "308226a4fc2c9b63fa19894d5f85e79e05d75e03", "type": "github" }, "original": { @@ -337,104 +338,111 @@ "type": "github" } }, - "hyprland-plugins": { + "hyprland-guiutils": { "inputs": { - "hyprland": [ - "hyprland" + "aquamarine": [ + "hyprland", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" ], "nixpkgs": [ - "hyprland-plugins", "hyprland", "nixpkgs" ], "systems": [ - "hyprland-plugins", "hyprland", "systems" ] }, "locked": { - "lastModified": 1756461489, - "narHash": "sha256-MeRYPD6GTbBEcoEqwl8kqCSKtM8CJcYayvPfKGoQkzc=", + "lastModified": 1762755186, + "narHash": "sha256-ZjjETUHtoEhVN7JI1Cbt3p/KcXpK8ZQaPHx7UkG1OgA=", "owner": "hyprwm", - "repo": "Hyprland-Plugins", - "rev": "376d08bbbd861f2125f5ef86e0003e3636ce110f", + "repo": "hyprland-guiutils", + "rev": "66356e20a8ed348aa49c1b9ceace786e224225b3", "type": "github" }, "original": { "owner": "hyprwm", - "repo": "Hyprland-Plugins", + "repo": "hyprland-guiutils", "type": "github" } }, - "hyprland-protocols": { + "hyprland-plugins": { "inputs": { + "hyprland": [ + "hyprland" + ], "nixpkgs": [ + "hyprland-plugins", "hyprland", "nixpkgs" ], "systems": [ + "hyprland-plugins", "hyprland", "systems" ] }, "locked": { - "lastModified": 1749046714, - "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", + "lastModified": 1762893684, + "narHash": "sha256-YzNJ1S+ZnTsuz9xyi5HfR2VL+rqXgmqD+SU/OqCH5RM=", "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", + "repo": "Hyprland-Plugins", + "rev": "be3cbf60b4b6a90c6e0d947e1e8cf791062b81fb", "type": "github" }, "original": { "owner": "hyprwm", - "repo": "hyprland-protocols", + "repo": "Hyprland-Plugins", "type": "github" } }, - "hyprland-qt-support": { + "hyprland-protocols": { "inputs": { - "hyprlang": [ - "hyprland", - "hyprland-qtutils", - "hyprlang" - ], "nixpkgs": [ "hyprland", - "hyprland-qtutils", "nixpkgs" ], "systems": [ "hyprland", - "hyprland-qtutils", "systems" ] }, "locked": { - "lastModified": 1749154592, - "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", + "lastModified": 1759610243, + "narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=", "owner": "hyprwm", - "repo": "hyprland-qt-support", - "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", + "repo": "hyprland-protocols", + "rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622", "type": "github" }, "original": { "owner": "hyprwm", - "repo": "hyprland-qt-support", + "repo": "hyprland-protocols", "type": "github" } }, - "hyprland-qtutils": { + "hyprlang": { "inputs": { - "hyprland-qt-support": "hyprland-qt-support", - "hyprlang": [ - "hyprland", - "hyprlang" - ], "hyprutils": [ "hyprland", - "hyprland-qtutils", - "hyprlang", "hyprutils" ], "nixpkgs": [ @@ -447,45 +455,68 @@ ] }, "locked": { - "lastModified": 1753819801, - "narHash": "sha256-tHe6XeNeVeKapkNM3tcjW4RuD+tB2iwwoogWJOtsqTI=", + "lastModified": 1758927902, + "narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=", "owner": "hyprwm", - "repo": "hyprland-qtutils", - "rev": "b308a818b9dcaa7ab8ccab891c1b84ebde2152bc", + "repo": "hyprlang", + "rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da", "type": "github" }, "original": { "owner": "hyprwm", - "repo": "hyprland-qtutils", + "repo": "hyprlang", "type": "github" } }, - "hyprlang": { + "hyprtoolkit": { "inputs": { + "aquamarine": [ + "hyprland", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprland-guiutils", + "hyprlang" + ], "hyprutils": [ "hyprland", + "hyprland-guiutils", "hyprutils" ], + "hyprwayland-scanner": [ + "hyprland", + "hyprland-guiutils", + "hyprwayland-scanner" + ], "nixpkgs": [ "hyprland", + "hyprland-guiutils", "nixpkgs" ], "systems": [ "hyprland", + "hyprland-guiutils", "systems" ] }, "locked": { - "lastModified": 1753622892, - "narHash": "sha256-0K+A+gmOI8IklSg5It1nyRNv0kCNL51duwnhUO/B8JA=", + "lastModified": 1762463729, + "narHash": "sha256-2fYkU/mdz8WKY3dkDPlE/j6hTxIwqultsx4gMMsMns0=", "owner": "hyprwm", - "repo": "hyprlang", - "rev": "23f0debd2003f17bd65f851cd3f930cff8a8c809", + "repo": "hyprtoolkit", + "rev": "88483bdee5329ec985f0c8f834c519cd18cfe532", "type": "github" }, "original": { "owner": "hyprwm", - "repo": "hyprlang", + "repo": "hyprtoolkit", "type": "github" } }, @@ -501,11 +532,11 @@ ] }, "locked": { - "lastModified": 1756117388, - "narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=", + "lastModified": 1762387740, + "narHash": "sha256-gQ9zJ+pUI4o+Gh4Z6jhJll7jjCSwi8ZqJIhCE2oqwhQ=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0", + "rev": "926689ddb9c0a8787e58c02c765a62e32d63d1f7", "type": "github" }, "original": { @@ -541,11 +572,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756266583, - "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", + "lastModified": 1762363567, + "narHash": "sha256-YRqMDEtSMbitIMj+JLpheSz0pwEr0Rmy5mC7myl17xs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "rev": "ae814fd3904b621d8ab97418f1d0f2eb0d3716f4", "type": "github" }, "original": { @@ -557,11 +588,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1756386758, - "narHash": "sha256-1wxxznpW2CKvI9VdniaUnTT2Os6rdRJcRUf65ZK9OtE=", + "lastModified": 1762844143, + "narHash": "sha256-SlybxLZ1/e4T2lb1czEtWVzDCVSTvk9WLwGhmxFmBxI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "dfb2f12e899db4876308eba6d93455ab7da304cd", + "rev": "9da7f1cf7f8a6e2a7cb3001b048546c92a8258b4", "type": "github" }, "original": { @@ -573,11 +604,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1751792365, - "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", + "lastModified": 1758690382, + "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", + "rev": "e643668fd71b949c53f8626614b21ff71a07379d", "type": "github" }, "original": { @@ -599,11 +630,11 @@ ] }, "locked": { - "lastModified": 1751906969, - "narHash": "sha256-BSQAOdPnzdpOuCdAGSJmefSDlqmStFNScEnrWzSqKPw=", + "lastModified": 1758998580, + "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=", "owner": "nix-community", "repo": "NUR", - "rev": "ddb679f4131e819efe3bbc6457ba19d7ad116f25", + "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728", "type": "github" }, "original": { @@ -622,11 +653,11 @@ ] }, "locked": { - "lastModified": 1755960406, - "narHash": "sha256-RF7j6C1TmSTK9tYWO6CdEMtg6XZaUKcvZwOCD2SICZs=", + "lastModified": 1762441963, + "narHash": "sha256-j+rNQ119ffYUkYt2YYS6rnd6Jh/crMZmbqpkGLXaEt0=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "e891a93b193fcaf2fc8012d890dc7f0befe86ec2", + "rev": "8e7576e79b88c16d7ee3bbd112c8d90070832885", "type": "github" }, "original": { @@ -665,11 +696,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1755997543, - "narHash": "sha256-/fejmCQ7AWa655YxyPxRDbhdU7c5+wYsFSjmEMXoBCM=", + "lastModified": 1762264356, + "narHash": "sha256-QVfC53Ri+8n3e7Ujx9kq6all3+TLBRRPRnc6No5qY5w=", "owner": "danth", "repo": "stylix", - "rev": "f47c0edcf71e802378b1b7725fa57bb44fe85ee8", + "rev": "647bb8dd96a206a1b79c4fd714affc88b409e10b", "type": "github" }, "original": { @@ -744,11 +775,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1750770351, - "narHash": "sha256-LI+BnRoFNRa2ffbe3dcuIRYAUcGklBx0+EcFxlHj0SY=", + "lastModified": 1757716333, + "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=", "owner": "tinted-theming", "repo": "schemes", - "rev": "5a775c6ffd6e6125947b393872cde95867d85a2a", + "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559", "type": "github" }, "original": { @@ -760,11 +791,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1751159871, - "narHash": "sha256-UOHBN1fgHIEzvPmdNMHaDvdRMgLmEJh2hNmDrp3d3LE=", + "lastModified": 1757811970, + "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "bded5e24407cec9d01bd47a317d15b9223a1546c", + "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e", "type": "github" }, "original": { @@ -776,11 +807,11 @@ "tinted-zed": { "flake": false, "locked": { - "lastModified": 1751158968, - "narHash": "sha256-ksOyv7D3SRRtebpXxgpG4TK8gZSKFc4TIZpR+C98jX8=", + "lastModified": 1757811247, + "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=", "owner": "tinted-theming", "repo": "base16-zed", - "rev": "86a470d94204f7652b906ab0d378e4231a5b3384", + "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e", "type": "github" }, "original": { @@ -830,11 +861,11 @@ ] }, "locked": { - "lastModified": 1755354946, - "narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=", + "lastModified": 1761431178, + "narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0", + "rev": "4b8801228ff958d028f588f0c2b911dbf32297f9", "type": "github" }, "original": { From 3dd585075c96b7d9a072f3614b78b00740a78fc0 Mon Sep 17 00:00:00 2001 From: FinnPL Date: Thu, 27 Nov 2025 22:11:29 +0100 Subject: [PATCH 7/8] feat: add cursor trail settings to Kitty configuration --- modules/home-manager/kitty.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/home-manager/kitty.nix b/modules/home-manager/kitty.nix index db6f92f..73cfd1a 100644 --- a/modules/home-manager/kitty.nix +++ b/modules/home-manager/kitty.nix @@ -11,6 +11,10 @@ settings = { background_opacity = lib.mkForce "0.70"; dynamic_background_opacity = true; + + cursor_trail = 3; + cursor_trail_decay = "0.1 0.4"; + cursor_trail_start_threshold = 2; }; }; } From 9e1b0c67deb4f2606a8aafbac767979ee5a8abd5 Mon Sep 17 00:00:00 2001 From: FinnPL Date: Thu, 27 Nov 2025 23:54:31 +0100 Subject: [PATCH 8/8] feat: add nixcord integration and update Firefox settings --- flake.lock | 92 +++++++++++++++- flake.nix | 7 ++ hosts/centaur/configuration.nix | 1 + modules/home-manager/discord.nix | 159 ++++++++++++++++++++++++++- modules/home-manager/firefox.nix | 12 +- modules/hyprland/hyprland-config.nix | 1 + 6 files changed, 262 insertions(+), 10 deletions(-) diff --git a/flake.lock b/flake.lock index 9294f85..fcd4783 100644 --- a/flake.lock +++ b/flake.lock @@ -155,7 +155,39 @@ "type": "github" } }, + "flake-compat_2": { + "locked": { + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "revCount": 69, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz?rev=ff81ac966bb2cae68946d5ed5fc4994f96d0ffec&revCount=69" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1754091436, + "narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { "inputs": { "nixpkgs-lib": [ "stylix", @@ -570,6 +602,26 @@ "type": "github" } }, + "nixcord": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1764230686, + "narHash": "sha256-nrYYXatTtHtKOn3B6BFX0KWSGKy77bCLbvL1nSWKmYU=", + "owner": "kaylorben", + "repo": "nixcord", + "rev": "59ec57381d39bb6f7776094372093dfcfa6c55a5", + "type": "github" + }, + "original": { + "owner": "kaylorben", + "repo": "nixcord", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1762363567, @@ -586,7 +638,38 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1753579242, + "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs_2": { + "locked": { + "lastModified": 1754028485, + "narHash": "sha256-IiiXB3BDTi6UqzAZcf2S797hWEPCRZOwyNThJIYhUfk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "59e69648d345d6e8fef86158c555730fa12af9de", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1762844143, "narHash": "sha256-SlybxLZ1/e4T2lb1czEtWVzDCVSTvk9WLwGhmxFmBxI=", @@ -602,7 +685,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1758690382, "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", @@ -672,7 +755,8 @@ "home-manager": "home-manager", "hyprland": "hyprland", "hyprland-plugins": "hyprland-plugins", - "nixpkgs": "nixpkgs_2", + "nixcord": "nixcord", + "nixpkgs": "nixpkgs_3", "stylix": "stylix", "wallpapers": "wallpapers" } @@ -684,9 +768,9 @@ "base16-helix": "base16-helix", "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", - "flake-parts": "flake-parts", + "flake-parts": "flake-parts_2", "gnome-shell": "gnome-shell", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "nur": "nur", "systems": "systems_2", "tinted-foot": "tinted-foot", diff --git a/flake.nix b/flake.nix index d5a6738..d7b6355 100644 --- a/flake.nix +++ b/flake.nix @@ -16,6 +16,8 @@ stylix.url = "github:danth/stylix"; + nixcord.url = "github:kaylorben/nixcord"; + hyprland.url = "github:hyprwm/Hyprland"; hyprland-plugins = { url = "github:hyprwm/Hyprland-Plugins"; @@ -47,6 +49,11 @@ ./hosts/centaur/configuration.nix inputs.home-manager.nixosModules.default inputs.stylix.nixosModules.stylix + { + home-manager.sharedModules = [ + inputs.nixcord.homeModules.nixcord + ]; + } ]; }; formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.alejandra; diff --git a/hosts/centaur/configuration.nix b/hosts/centaur/configuration.nix index cd53f95..dc0bd5a 100644 --- a/hosts/centaur/configuration.nix +++ b/hosts/centaur/configuration.nix @@ -207,6 +207,7 @@ # ============================================================================ home-manager = { extraSpecialArgs = {inherit inputs;}; + backupFileExtension = "backup"; users = { "fpl" = import ./home.nix; }; diff --git a/modules/home-manager/discord.nix b/modules/home-manager/discord.nix index b47d97b..c5c4410 100644 --- a/modules/home-manager/discord.nix +++ b/modules/home-manager/discord.nix @@ -1,7 +1,156 @@ -{pkgs, ...}: { - home.packages = [ - pkgs.vesktop - ]; +{pkgs, ...}: let + # CSS to map Stylix base16 colors to Midnight Discord theme variables + midnightStylixCss = '' + /** + * Midnight Discord theme with Stylix colors + * This maps Stylix base16 variables to Midnight theme variables + */ - stylix.targets.vesktop.enable = true; + body { + /* font options */ + --font: 'figtree'; + --code-font: ""; + + /* sizes */ + --gap: 12px; + --divider-thickness: 4px; + --border-thickness: 1px; + + /* animation options */ + --animations: on; + --list-item-transition: 0.2s ease; + --dms-icon-svg-transition: 0.4s ease; + --border-hover-transition: 0.2s ease; + + /* top bar options */ + --top-bar-height: 32px; + --top-bar-button-position: titlebar; + --top-bar-title-position: off; + --subtle-top-bar-title: off; + + /* chatbar options */ + --custom-chatbar: aligned; + --chatbar-height: 47px; + + /* dms button options */ + --custom-dms-icon: custom; + --dms-icon-svg-url: url('https://refact0r.github.io/midnight-discord/assets/Font_Awesome_5_solid_moon.svg'); + --dms-icon-svg-size: 90%; + --custom-dms-background: off; + + /* window control options */ + --custom-window-controls: on; + --window-control-size: 14px; + + /* other options */ + --small-user-panel: off; + --colors: on; + + /* text colors - using Stylix base16 variables */ + --text-0: var(--base00); + --text-1: #ffffff; + --text-2: #f0f0f0; + --text-3: #e0e0e0; + --text-4: var(--base04); + --text-5: var(--base03); + + /* background colors - using Stylix base16 variables */ + --bg-1: var(--base02); + --bg-2: var(--base01); + --bg-3: var(--base01); + --bg-4: var(--base00); + --hover: hsla(220, 19%, 40%, 0.1); + --active: hsla(220, 19%, 40%, 0.2); + --active-2: hsla(220, 19%, 40%, 0.3); + --message-hover: hsla(230, 0%, 0%, 0.1); + + /* accent colors - using Stylix base16 variables */ + --accent-1: var(--base0D); + --accent-2: var(--base0D); + --accent-3: var(--base0D); + --accent-4: var(--base0C); + --accent-5: var(--base0C); + --accent-new: var(--base0D); + --mention: linear-gradient(to right, color-mix(in hsl, var(--base0D), transparent 90%) 40%, transparent); + --mention-hover: linear-gradient(to right, color-mix(in hsl, var(--base0D), transparent 95%) 40%, transparent); + --reply: linear-gradient(to right, color-mix(in hsl, var(--text-3), transparent 90%) 40%, transparent); + --reply-hover: linear-gradient(to right, color-mix(in hsl, var(--text-3), transparent 95%) 40%, transparent); + + /* status colors */ + --online: var(--base0B); + --dnd: var(--base08); + --idle: var(--base0A); + --streaming: var(--base0E); + --offline: var(--text-4); + + /* border colors */ + --border-light: hsla(230, 20%, 40%, 0.1); + --border: hsla(230, 20%, 40%, 0.2); + --button-border: hsla(0, 0%, 100%, 0.1); + + /* base colors - all mapped from Stylix */ + --red-1: var(--base08); + --red-2: var(--base08); + --red-3: var(--base08); + --red-4: var(--base08); + --red-5: var(--base08); + + --green-1: var(--base0B); + --green-2: var(--base0B); + --green-3: var(--base0B); + --green-4: var(--base0B); + --green-5: var(--base0B); + + --blue-1: var(--base0D); + --blue-2: var(--base0D); + --blue-3: var(--base0D); + --blue-4: var(--base0D); + --blue-5: var(--base0D); + + --yellow-1: var(--base0A); + --yellow-2: var(--base0A); + --yellow-3: var(--base0A); + --yellow-4: var(--base0A); + --yellow-5: var(--base0A); + + --purple-1: var(--base0E); + --purple-2: var(--base0E); + --purple-3: var(--base0E); + --purple-4: var(--base0E); + --purple-5: var(--base0E); + } + ''; +in { + programs.nixcord = { + enable = true; + vesktop.enable = true; + + config = { + useQuickCss = true; + + themeLinks = [ + "https://refact0r.github.io/midnight-discord/build/midnight.css" + ]; + + plugins = { + biggerStreamPreview.enable = true; + messageLogger.enable = true; + callTimer.enable = true; + clearURLs.enable = true; + permissionsViewer.enable = true; + platformIndicators.enable = true; + relationshipNotifier.enable = true; + showHiddenChannels.enable = true; + typingIndicator.enable = true; + }; + }; + + quickCss = ""; + }; + + # Stylix will generate a theme with --base00 through --base0F CSS variables + stylix.targets.nixcord.enable = true; + + # Extra CSS to map Stylix base16 colors to Midnight Discord theme variables + stylix.targets.nixcord.extraCss = midnightStylixCss; } diff --git a/modules/home-manager/firefox.nix b/modules/home-manager/firefox.nix index af9c925..02ceddf 100644 --- a/modules/home-manager/firefox.nix +++ b/modules/home-manager/firefox.nix @@ -6,11 +6,21 @@ }: { home.packages = with pkgs; [firefox]; - stylix.targets.firefox.profileNames = ["fpl"]; + stylix.targets.firefox = { + enable = true; + profileNames = ["fpl"]; + colorTheme.enable = true; + }; programs.firefox = { enable = true; profiles.fpl = { + isDefault = true; + settings = { + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "browser.startup.page" = 3; + }; + extensions.force = true; extensions.packages = with inputs.firefox-addons.packages."x86_64-linux"; [ bitwarden ublock-origin diff --git a/modules/hyprland/hyprland-config.nix b/modules/hyprland/hyprland-config.nix index a79039a..3f2b9b2 100644 --- a/modules/hyprland/hyprland-config.nix +++ b/modules/hyprland/hyprland-config.nix @@ -75,6 +75,7 @@ # Window rules windowrule=opacity 0.75 override 0.70 override, class:^(thunar)$ windowrule=opacity 0.98 override 0.98 override, class:^(firefox)$ + windowrule=opacity 0.98 override 0.98 override, class:^(vesktop)$ windowrule=opacity 0.98 override 0.98 override, class:^(gimp|gwenview|ristretto)$ windowrule=opacity 0.98 override 0.98 override, class:^(evince|okular|zathura)$ windowrule=opacity 0.98 override 0.98 override, class:^(vlc|mpv)$