aboutsummaryrefslogtreecommitdiff
path: root/home/rices
diff options
context:
space:
mode:
authorNatasha Moongrave <natasha@256phi.eu>2026-03-30 20:46:26 +0200
committerNatasha Moongrave <natasha@256phi.eu>2026-03-30 20:46:26 +0200
commit67e324107e05f3245ddac034607afd0e1dea478f (patch)
treed14a4b6e98fc707c72e24f0879b0e4297aaad78f /home/rices
parent2316eab54de77c351e88c5657eeaaa703ff4c498 (diff)
Refactored the entire configuration
Diffstat (limited to 'home/rices')
-rw-r--r--home/rices/nord-blue/alacritty.nix13
-rw-r--r--home/rices/nord-blue/default.nix13
-rw-r--r--home/rices/nord-blue/fastfetch.nix24
-rw-r--r--home/rices/nord-blue/helix.nix171
-rw-r--r--home/rices/nord-blue/i3.nix107
-rw-r--r--home/rices/nord-blue/nvim.nix279
-rw-r--r--home/rices/nord-blue/picom.nix54
-rw-r--r--home/rices/nord-blue/variables.nix10
-rw-r--r--home/rices/nord-blue/wallpapers/wave-minimal.pngbin0 -> 352335 bytes
9 files changed, 671 insertions, 0 deletions
diff --git a/home/rices/nord-blue/alacritty.nix b/home/rices/nord-blue/alacritty.nix
new file mode 100644
index 0000000..772718c
--- /dev/null
+++ b/home/rices/nord-blue/alacritty.nix
@@ -0,0 +1,13 @@
+{
+ pkgs,
+ lib,
+ ...
+}: {
+ # Let Stylix handle Alacritty theming
+ # Only override font size if needed
+ programs.alacritty.settings.font.size = lib.mkForce 10;
+
+ home.packages = with pkgs; [
+ nerd-fonts.jetbrains-mono
+ ];
+}
diff --git a/home/rices/nord-blue/default.nix b/home/rices/nord-blue/default.nix
new file mode 100644
index 0000000..1eb5514
--- /dev/null
+++ b/home/rices/nord-blue/default.nix
@@ -0,0 +1,13 @@
+{...}: {
+ imports = [
+ ./alacritty.nix
+ ./i3.nix
+ ./nvim.nix
+ ./helix.nix
+ ./picom.nix
+ ./fastfetch.nix
+ ];
+
+ # Rice is purely home-manager level
+ # Desktop environment (X server, i3wm) is set in system/desktop.nix
+}
diff --git a/home/rices/nord-blue/fastfetch.nix b/home/rices/nord-blue/fastfetch.nix
new file mode 100644
index 0000000..700ae80
--- /dev/null
+++ b/home/rices/nord-blue/fastfetch.nix
@@ -0,0 +1,24 @@
+{...}: {
+ programs.fastfetch = {
+ enable = true;
+ settings = {
+ logo = {
+ type = "builtin";
+ source = "nixos_small";
+ };
+ display.separator = " ";
+ modules = [
+ "title"
+ "os"
+ "kernel"
+ "uptime"
+ "packages"
+ "shell"
+ "terminal"
+ "cpu"
+ "memory"
+ "disk"
+ ];
+ };
+ };
+}
diff --git a/home/rices/nord-blue/helix.nix b/home/rices/nord-blue/helix.nix
new file mode 100644
index 0000000..eb893ee
--- /dev/null
+++ b/home/rices/nord-blue/helix.nix
@@ -0,0 +1,171 @@
+{
+ pkgs,
+ lib,
+ ...
+}: {
+ programs.helix = {
+ enable = true;
+ defaultEditor = false;
+ settings = {
+ # Let Stylix handle theming
+ editor = {
+ cursor-shape = {
+ normal = "block";
+ insert = "bar";
+ select = "underline";
+ };
+ line-number = "relative";
+ bufferline = "multiple";
+ color-modes = true;
+ cursorline = true;
+ auto-save = {
+ after-delay.enable = true;
+ after-delay.timeout = 10000;
+ };
+ auto-format = true;
+ end-of-line-diagnostics = "hint";
+ inline-diagnostics.cursor-line = "hint";
+ lsp = {
+ display-messages = true;
+ display-inlay-hints = true;
+ };
+ popup-border = "popup";
+ statusline.left = [
+ "mode"
+ "spinner"
+ "spacer"
+ "version-control"
+ "file-name"
+ "diagnostics"
+ "read-only-indicator"
+ "file-modification-indicator"
+ "spacer"
+ ];
+ statusline.right = [
+ "workspace-diagnostics"
+ "register"
+ "position"
+ "selections"
+ "file-encoding"
+ "file-type"
+ ];
+ idle-timeout = 50;
+ completion-timeout = 100;
+ indent-guides = {
+ render = true;
+ character = "|";
+ skip-levels = 3;
+ };
+ soft-wrap.enable = true;
+ whitespace = {
+ render = {
+ space = "none";
+ tab = "all";
+ newline = "none";
+ };
+ characters = {
+ nbsp = "·";
+ tab = "→";
+ };
+ };
+ };
+ };
+ languages = {
+ language-server = {
+ "bash-language-server" = {
+ command = "${pkgs.bash-language-server}/bin/bash-language-server";
+ args = ["start"];
+ };
+ "superhtml" = {
+ command = "${pkgs.superhtml}/bin/superhtml";
+ };
+ "vscode-css-languageserver" = {
+ command = "${pkgs.vscode-css-languageserver}/bin/vscode-css-languageserver";
+ };
+ "rust-analyzer" = {
+ command = "${pkgs.rust-analyzer}/bin/rust-analyzer";
+ };
+ "pyright" = {
+ command = "${pkgs.pyright}/bin/pyright";
+ };
+ "nil" = {
+ command = "${pkgs.nil}/bin/nil";
+ };
+ "texlab" = {
+ command = "${pkgs.texlab}/bin/texlab";
+ };
+ texlab.config.texlab = {
+ build = {
+ onSave = true;
+ forwardSearchAfter = true;
+ };
+ chktext.onEdit = true;
+ forwardSearch = {
+ executable = "zathura";
+ args = ["--synctex-forward" "%l:1:%f" "%p"];
+ };
+ };
+ "marksman" = {
+ command = "${pkgs.marksman}/bin/marksman";
+ };
+ };
+ language = [
+ {
+ name = "bash";
+ language-servers = ["bash-language-server"];
+ auto-format = true;
+ }
+ {
+ name = "html";
+ language-servers = ["superhtml"];
+ auto-format = true;
+ }
+ {
+ name = "css";
+ language-servers = ["vscode-css-languageserver"];
+ auto-format = true;
+ }
+ {
+ name = "rust";
+ language-servers = ["rust-analyzer"];
+ auto-format = true;
+ }
+ {
+ name = "python";
+ language-servers = ["pyright"];
+ auto-format = true;
+ }
+ {
+ name = "nix";
+ language-servers = ["nil"];
+ auto-format = true;
+ }
+ {
+ name = "latex";
+ language-servers = ["texlab"];
+ auto-format = true;
+ }
+ {
+ name = "markdown";
+ language-servers = ["marksman"];
+ auto-format = true;
+ }
+ ];
+ };
+ };
+
+ home.packages = with pkgs; [
+ zathura
+ ripgrep
+ fd
+ bash-language-server
+ superhtml
+ vscode-css-languageserver
+ rust-analyzer
+ llvmPackages_latest.lldb
+ pyright
+ nil
+ texlab
+ marksman
+ ];
+}
diff --git a/home/rices/nord-blue/i3.nix b/home/rices/nord-blue/i3.nix
new file mode 100644
index 0000000..b42f223
--- /dev/null
+++ b/home/rices/nord-blue/i3.nix
@@ -0,0 +1,107 @@
+{
+ pkgs,
+ lib,
+ ...
+}: let
+ vars = import ./variables.nix;
+ mod = "Mod4";
+
+ lock-screen = pkgs.writeShellScriptBin "lock-screen" ''
+ #!/usr/bin/env sh
+ set -eu
+ WALL="''${1:-$HOME/Pictures/wallpaper.png}"
+ TMP="/tmp/lockscreen.png"
+ RES=$(xrandr | awk '/\*/ {print $1; exit}')
+ magick "$WALL" -resize "''${RES}^" -gravity center -extent "$RES" "$TMP"
+ i3lock -i "$TMP"
+ '';
+
+ app-launcher = pkgs.writeShellScriptBin "app-launcher" ''
+ #!/usr/bin/env sh
+ BG='${vars.colors.background}'
+ FG='${vars.colors.foreground}'
+ ACCENT='${vars.colors.accent}'
+ TEXT='${vars.colors.text}'
+ dmenu_run -fn 'JetBrains Mono-12' -nb "$BG" -nf "$FG" -sb "$ACCENT" -sf "$TEXT"
+ '';
+in {
+ xsession.windowManager.i3 = {
+ enable = true;
+ config = {
+ modifier = mod;
+ bars = [];
+
+ window = {
+ titlebar = false;
+ border = 3;
+ };
+
+ # Colors handled by Stylix
+
+ startup = [
+ {command = "sh -c 'feh --bg-scale ~/Pictures/wallpaper.png'";}
+ ];
+
+ keybindings = lib.mkOptionDefault {
+ "${mod}+Return" = "exec ${pkgs.alacritty}/bin/alacritty";
+ "${mod}+d" = "exec ${app-launcher}/bin/app-launcher";
+ "${mod}+m" = "exec ${app-launcher}/bin/app-launcher";
+ "${mod}+Shift+m" = "exec alacritty -e nnn";
+ "${mod}+n" = "exec firefox";
+ "${mod}+q" = "kill";
+ "${mod}+Ctrl+l" = "exec ${lock-screen}/bin/lock-screen";
+ "${mod}+Shift+r" = "restart";
+ "${mod}+Ctrl+Shift+e" = "exec sh -c 'i3-msg exit'";
+ "${mod}+Shift+s" = "exec flameshot gui";
+
+ # Focus (vim bindings)
+ "${mod}+h" = "focus left";
+ "${mod}+j" = "focus down";
+ "${mod}+k" = "focus up";
+ "${mod}+l" = "focus right";
+
+ # Focus (arrow keys)
+ "${mod}+Left" = "focus left";
+ "${mod}+Down" = "focus down";
+ "${mod}+Up" = "focus up";
+ "${mod}+Right" = "focus right";
+
+ # Move (vim bindings)
+ "${mod}+Shift+h" = "move left";
+ "${mod}+Shift+j" = "move down";
+ "${mod}+Shift+k" = "move up";
+ "${mod}+Shift+l" = "move right";
+
+ # Move (arrow keys)
+ "${mod}+Shift+Left" = "move left";
+ "${mod}+Shift+Down" = "move down";
+ "${mod}+Shift+Up" = "move up";
+ "${mod}+Shift+Right" = "move right";
+
+ # Volume
+ "XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+";
+ "XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-";
+ "XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
+ "XF86AudioMicMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
+
+ # Brightness
+ "XF86MonBrightnessUp" = "exec brightnessctl set 5%+";
+ "XF86MonBrightnessDown" = "exec brightnessctl set 5%-";
+ };
+ };
+
+ extraConfig = ''
+ smart_borders on
+ '';
+ };
+
+ home.packages = with pkgs; [
+ dmenu
+ i3lock
+ imagemagick
+ polybar
+ alacritty
+ feh
+ nnn
+ ];
+}
diff --git a/home/rices/nord-blue/nvim.nix b/home/rices/nord-blue/nvim.nix
new file mode 100644
index 0000000..9677c57
--- /dev/null
+++ b/home/rices/nord-blue/nvim.nix
@@ -0,0 +1,279 @@
+{pkgs, ...}: {
+ home.packages = with pkgs; [
+ zathura
+ ripgrep
+ fd
+ lazygit
+ stylua
+ alejandra
+ black
+ shfmt
+
+ # Language servers
+ lua-language-server
+ nil
+ rust-analyzer
+ pyright
+ bash-language-server
+ texlab
+ ];
+
+ programs.neovim = {
+ enable = true;
+ defaultEditor = true;
+ viAlias = true;
+ vimAlias = true;
+
+ plugins = with pkgs.vimPlugins; [
+ # UI
+ catppuccin-nvim
+ nvim-web-devicons
+ which-key-nvim
+ gitsigns-nvim
+
+ # Syntax
+ (nvim-treesitter.withPlugins (p: [
+ p.lua
+ p.nix
+ p.rust
+ p.python
+ p.bash
+ p.latex
+ p.c
+ ]))
+
+ # LSP
+ nvim-lspconfig
+
+ # Completion / snippets
+ nvim-cmp
+ cmp-nvim-lsp
+ cmp_luasnip
+ luasnip
+ friendly-snippets
+ nvim-autopairs
+
+ # Formatting
+ conform-nvim
+ comment-nvim
+
+ # Navigation
+ telescope-nvim
+ plenary-nvim
+ nvim-tree-lua
+
+ # Terminal
+ toggleterm-nvim
+
+ # Writing
+ vimtex
+ orgmode
+
+ # Start screen
+ {
+ plugin = vim-startify;
+ config = "let g:startify_change_to_vcs_root = 0";
+ }
+ ];
+
+ extraLuaConfig = ''
+ -------------------------------------------------
+ -- LEADER
+ -------------------------------------------------
+ vim.g.mapleader = " "
+
+ -------------------------------------------------
+ -- BASIC OPTIONS
+ -------------------------------------------------
+ vim.opt.number = true
+ vim.opt.relativenumber = true
+ vim.opt.clipboard = "unnamedplus"
+ vim.opt.showtabline = 2
+ vim.o.timeout = true
+ vim.o.timeoutlen = 300
+
+ -------------------------------------------------
+ -- THEME
+ -------------------------------------------------
+ require("catppuccin").setup({
+ flavour = "mocha",
+ })
+ vim.cmd.colorscheme("catppuccin")
+
+ -------------------------------------------------
+ -- GITSIGNS
+ -------------------------------------------------
+ require("gitsigns").setup()
+
+ -------------------------------------------------
+ -- TREESITTER
+ -------------------------------------------------
+ require("nvim-treesitter.configs").setup({
+ highlight = { enable = true },
+ indent = { enable = true },
+ })
+
+ vim.opt.foldmethod = "expr"
+ vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
+ vim.opt.foldenable = false
+
+ -------------------------------------------------
+ -- SNIPPETS
+ -------------------------------------------------
+ require("luasnip.loaders.from_vscode").lazy_load()
+
+ -------------------------------------------------
+ -- COMPLETION
+ -------------------------------------------------
+ local cmp = require("cmp")
+ local luasnip = require("luasnip")
+
+ cmp.setup({
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body)
+ end,
+ },
+ mapping = cmp.mapping.preset.insert({
+ ["<C-Space>"] = cmp.mapping.complete(),
+ ["<CR>"] = cmp.mapping.confirm({ select = true }),
+ }),
+ sources = {
+ { name = "nvim_lsp" },
+ { name = "luasnip" },
+ },
+ })
+
+ require("nvim-autopairs").setup({})
+
+ -------------------------------------------------
+ -- LSP
+ -------------------------------------------------
+ local capabilities = require("cmp_nvim_lsp").default_capabilities()
+
+ local servers = {
+ "lua_ls",
+ "nil_ls",
+ "rust_analyzer",
+ "pyright",
+ "bashls",
+ "texlab",
+ }
+
+ for _, server in ipairs(servers) do
+ vim.lsp.config(server, {
+ capabilities = capabilities
+ })
+ vim.lsp.enable(server)
+ end
+
+ -------------------------------------------------
+ -- LSP KEYMAPS
+ -------------------------------------------------
+ vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition)
+ vim.keymap.set("n", "<leader>lD", vim.lsp.buf.declaration)
+ vim.keymap.set("n", "<leader>li", vim.lsp.buf.implementation)
+ vim.keymap.set("n", "<leader>lr", vim.lsp.buf.references)
+ vim.keymap.set("n", "lh", vim.lsp.buf.hover)
+ vim.keymap.set("n", "ln", vim.lsp.buf.rename)
+ vim.keymap.set("n", "la", vim.lsp.buf.code_action)
+ vim.keymap.set("n", "lf", function() vim.lsp.buf.format() end)
+
+ -------------------------------------------------
+ -- DIAGNOSTICS
+ -------------------------------------------------
+ vim.keymap.set("n", "lj", vim.diagnostic.goto_next)
+ vim.keymap.set("n", "lk", vim.diagnostic.goto_prev)
+ vim.keymap.set("n", "le", vim.diagnostic.open_float)
+
+ -------------------------------------------------
+ -- FORMATTER
+ -------------------------------------------------
+ require("conform").setup({
+ format_on_save = {
+ timeout_ms = 500,
+ lsp_format = "fallback",
+ },
+ formatters_by_ft = {
+ lua = { "stylua" },
+ nix = { "alejandra" },
+ rust = { "rustfmt" },
+ python = { "black" },
+ bash = { "shfmt" },
+ },
+ })
+
+ require("Comment").setup()
+
+ -------------------------------------------------
+ -- TELESCOPE
+ -------------------------------------------------
+ local builtin = require("telescope.builtin")
+
+ require("telescope").setup({
+ defaults = {
+ layout_strategy = "horizontal",
+ sorting_strategy = "ascending",
+ file_ignore_patterns = { "node_modules", ".git/" },
+ },
+ })
+
+ vim.keymap.set("n", "<leader><leader>", builtin.find_files)
+ vim.keymap.set("n", "<leader>fg", builtin.live_grep)
+ vim.keymap.set("n", "<leader>fb", builtin.buffers)
+
+ -------------------------------------------------
+ -- WHICH KEY
+ -------------------------------------------------
+ local wk = require("which-key")
+ wk.add({
+ { "<leader>l", desc = "LSP" }
+ })
+
+ -------------------------------------------------
+ -- NVIM TREE
+ -------------------------------------------------
+ require("nvim-tree").setup({})
+ vim.keymap.set("n", "<leader>e", "<cmd>NvimTreeToggle<CR>")
+
+ -------------------------------------------------
+ -- TERMINAL
+ -------------------------------------------------
+ require("toggleterm").setup({
+ direction = "float",
+ })
+
+ local Terminal = require("toggleterm.terminal").Terminal
+
+ local lazygit = Terminal:new({
+ cmd = "lazygit",
+ hidden = true,
+ direction = "float",
+ })
+
+ vim.keymap.set("n", "<leader>gg", function()
+ lazygit:toggle()
+ end)
+
+ -------------------------------------------------
+ -- ORGMODE
+ -------------------------------------------------
+ local projects = {
+ "~/Documents/2_Writing/0_SOC/**/*.org",
+ "~/Documents/2_Writing/2_Notes/**/*.org",
+ "~/Documents/1_Projects/6_CRC-Altura/**/*.org",
+ "~/ORG/**/*.org"
+ }
+
+ require("orgmode").setup({
+ org_agenda_files = projects,
+ org_default_notes_file = "~/INBOX.org"
+ })
+
+ -------------------------------------------------
+ -- VIMTEX
+ -------------------------------------------------
+ vim.g.vimtex_view_method = "zathura"
+ '';
+ };
+}
diff --git a/home/rices/nord-blue/picom.nix b/home/rices/nord-blue/picom.nix
new file mode 100644
index 0000000..06cf94a
--- /dev/null
+++ b/home/rices/nord-blue/picom.nix
@@ -0,0 +1,54 @@
+{pkgs, ...}: {
+ services.picom = {
+ enable = true;
+ package = pkgs.picom-pijulius;
+
+ settings = {
+ backend = "glx";
+ vsync = true;
+
+ # Opacity
+ inactive-opacity = 0.9;
+ active-opacity = 1.0;
+
+ # Fading
+ fading = true;
+ fade-delta = 5;
+ fade-in-step = 0.09;
+ fade-out-step = 0.09;
+
+ # Shadows
+ shadow = true;
+ shadow-radius = 15;
+ shadow-opacity = 0.5;
+ shadow-offset-x = 12;
+ shadow-offset-y = 12;
+ shadow-exclude = [
+ "class_g = 'i3-frame'"
+ "window_type = 'dock'"
+ "window_type = 'desktop'"
+ "name = 'dmenu'"
+ "class_g = 'dmenu'"
+ ];
+
+ # Rounded corners
+ corner-radius = 15;
+ round-borders = 1;
+ rounded-corners-exclude = [
+ "class_g = 'i3-frame'"
+ "window_type = 'dock'"
+ ];
+
+ # Animations
+ animations = true;
+ animation-stiffness = 25;
+ animation-dampening = 1;
+ animation-window-mass = 0.01;
+ animation-for-open-window = "zoom";
+ animation-for-unmap-window = "slide-up";
+ animation-for-transient-window = "zoom";
+ animation-for-move-window = "slide";
+ animation-for-resize-window = "stretch";
+ };
+ };
+}
diff --git a/home/rices/nord-blue/variables.nix b/home/rices/nord-blue/variables.nix
new file mode 100644
index 0000000..09268e3
--- /dev/null
+++ b/home/rices/nord-blue/variables.nix
@@ -0,0 +1,10 @@
+{
+ colors = {
+ background = "#2D333F";
+ accent = "#82A3C0";
+ foreground = "#C6D0F5";
+ text = "#D5A18E";
+ };
+
+ wallpaper = "~/Pictures/wallpaper.png";
+}
diff --git a/home/rices/nord-blue/wallpapers/wave-minimal.png b/home/rices/nord-blue/wallpapers/wave-minimal.png
new file mode 100644
index 0000000..5d322d4
--- /dev/null
+++ b/home/rices/nord-blue/wallpapers/wave-minimal.png
Binary files differ