Compare commits

...

10 Commits

Author SHA1 Message Date
Alexander 0177209ecb Update home2 setup, add bruno 2026-05-09 19:18:03 +02:00
Alexander 028277a9ae Downgrade kernel to 6.18LTS
Added themes, fixed kanshi, some emacs changes
2026-05-05 18:38:11 +02:00
Alexander fe1f941685 Nixos update 29-04-2026, fix hyprland, fix jdtls 2026-04-30 12:02:22 +02:00
Alexander 0ee05eece9 doom: Auto-configure Lombok for jdtls based on Maven project
- Query Maven for Lombok version via dependency:build-classpath
- Auto-download Lombok jar if not in ~/.m2 repository
- Use -javaagent for Java <23, javac mode for Java 23+
- Cache results per project for performance
- Advice lsp-java--ls-command to inject config at right time

Replaces manual .dir-locals.el lombok-version configuration.
2026-04-19 14:54:35 +02:00
Alexander 0fc51f7bf3 Fix lsp + semgrep 2026-04-19 14:22:30 +02:00
Alexander 240cc60055 Nixos update 19-04-2026, update monitors position 2026-04-19 13:39:34 +02:00
Alexander a8650302c9 Waybar show only active 2026-04-17 20:38:36 +02:00
Alexander d69ad9a76c Add new monitor, update thefuck 2026-04-17 20:29:29 +02:00
Alexander 44d22f5067 Nixos update 15-04-2026 + kanshi 2026-04-15 10:19:42 +02:00
Alexander 4ad3ea55dc Jdk + unzip 2026-04-15 10:18:56 +02:00
18 changed files with 536 additions and 217 deletions
Generated
+115 -135
View File
@@ -20,11 +20,11 @@
]
},
"locked": {
"lastModified": 1774211390,
"narHash": "sha256-sTtAgCCaX8VNNZlQFACd3i1IQ+DB0Wf3COgiFS152ds=",
"lastModified": 1776876344,
"narHash": "sha256-Ubqb/agkuMJK+k19gjQgHux/eOYRc1sRGoOZOho8+VY=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "f62a4dbfa4e5584f14ad4c62afedf6e4b433cf70",
"rev": "648a13d0ee1e03a843b3e145b8ece15393058701",
"type": "github"
},
"original": {
@@ -71,11 +71,11 @@
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1760703920,
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
"lastModified": 1776754714,
"narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "d646af9b7d14bff08824538164af99d0c521b185",
"rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581",
"type": "github"
},
"original": {
@@ -107,11 +107,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1774860185,
"narHash": "sha256-g/i5PHGYcnbqDDrE+sgYkUYpffenfgpxGq/1RyXB2tE=",
"lastModified": 1777744353,
"narHash": "sha256-8UmzMm5wkq+z0kEMEjowoECa4qY813z747o0g+G/bbE=",
"owner": "9001",
"repo": "copyparty",
"rev": "5aaa4ff15b62b4e0c7a815d6541d1df2f182bc59",
"rev": "da6e2ddca96dffc4dbe53bda25d2034428fad3d0",
"type": "github"
},
"original": {
@@ -127,11 +127,11 @@
]
},
"locked": {
"lastModified": 1773889306,
"narHash": "sha256-PAqwnsBSI9SVC2QugvQ3xeYCB0otOwCacB1ueQj2tgw=",
"lastModified": 1777713215,
"narHash": "sha256-8GzXDOXckDWwST8TY5DbwYFjdvQLlP7K9CLSVx6iTTo=",
"owner": "nix-community",
"repo": "disko",
"rev": "5ad85c82cc52264f4beddc934ba57f3789f28347",
"rev": "63b4e7e6cf75307c1d26ac3762b886b5b0247267",
"type": "github"
},
"original": {
@@ -146,11 +146,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1774861991,
"narHash": "sha256-QskHv21EYUHt6DlkHtczogsrtTmJApjynFWru6/arOk=",
"lastModified": 1777975488,
"narHash": "sha256-JyrUp9HJCMyPj+rcrlMO2TpsKdM5Dhj7KnIg4W1CuKs=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "45607a37e07584f2d51c3205abec96448a4c4e43",
"rev": "695015ae8c42435944f62d25e6b5546948ea3e1e",
"type": "github"
},
"original": {
@@ -163,11 +163,11 @@
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1764873433,
"narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=",
"lastModified": 1776136500,
"narHash": "sha256-r0gN2brVWA351zwMV0Flmlcd6SGMvYqFbvC3DfKFM8Y=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92",
"rev": "0f8ba203d475587f477e7ae12661bd8459e225b7",
"type": "github"
},
"original": {
@@ -200,11 +200,11 @@
]
},
"locked": {
"lastModified": 1767609335,
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"lastModified": 1775087534,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"type": "github"
},
"original": {
@@ -305,20 +305,18 @@
"gnome-shell": {
"flake": false,
"locked": {
"host": "gitlab.gnome.org",
"lastModified": 1767737596,
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "gitlab"
"type": "github"
},
"original": {
"host": "gitlab.gnome.org",
"owner": "GNOME",
"ref": "gnome-49",
"repo": "gnome-shell",
"type": "gitlab"
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "github"
}
},
"home-manager": {
@@ -350,11 +348,11 @@
]
},
"locked": {
"lastModified": 1773422513,
"narHash": "sha256-MPjR48roW7CUMU6lu0+qQGqj92Kuh3paIulMWFZy+NQ=",
"lastModified": 1776184304,
"narHash": "sha256-No6QGBmIv5ChiwKCcbkxjdEQ/RO2ZS1gD7SFy6EZ7rc=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "ef12a9a2b0f77c8fa3dda1e7e494fca668909056",
"rev": "3c7524c68348ef79ce48308e0978611a050089b2",
"type": "github"
},
"original": {
@@ -379,11 +377,11 @@
]
},
"locked": {
"lastModified": 1772461003,
"narHash": "sha256-pVICsV7FtcEeVwg5y/LFh3XFUkVJninm/P1j/JHzEbM=",
"lastModified": 1776511930,
"narHash": "sha256-fCpwFiTW0rT7oKJqr3cqHMnkwypSwQKpbtUEtxdkgrM=",
"owner": "hyprwm",
"repo": "hyprcursor",
"rev": "b62396457b9cfe2ebf24fe05404b09d2a40f8ed7",
"rev": "39435900785d0c560c6ae8777d29f28617d031ef",
"type": "github"
},
"original": {
@@ -408,11 +406,11 @@
]
},
"locked": {
"lastModified": 1772461523,
"narHash": "sha256-mI6A51do+hEUzeJKk9YSWfVHdI/SEEIBi2tp5Whq5mI=",
"lastModified": 1776426399,
"narHash": "sha256-RUESLKNikIeEq9ymGJ6nmcDXiSFQpUW1IhJ245nL3xM=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "7d63c04b4a2dd5e59ef943b4b143f46e713df804",
"rev": "68d064434787cf1ed4a2fe257c03c5f52f33cf84",
"type": "github"
},
"original": {
@@ -438,11 +436,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1774877519,
"narHash": "sha256-EhmfOem7CiysXFLdVF2aTUaZOAQmtn/OxMQxAxUbCls=",
"lastModified": 1777910456,
"narHash": "sha256-YXQ5bhn5mklMsOuVqze3QBqqL+8zsUum24Yx1K2Rb+w=",
"ref": "refs/heads/main",
"rev": "6474f46b7264c7086361b58ce2be98de732625ab",
"revCount": 7085,
"rev": "eff3bfe261e90b8950b59379ca7815f735a7aab6",
"revCount": 7252,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
},
@@ -484,11 +482,11 @@
]
},
"locked": {
"lastModified": 1772467975,
"narHash": "sha256-kipyuDBxrZq+beYpZqWzGvFWm4QbayW9agAvi94vDXY=",
"lastModified": 1776426575,
"narHash": "sha256-KI6nIfVihn/DPaeB5Et46Xg3dkNHrrEtUd5LBBVomB0=",
"owner": "hyprwm",
"repo": "hyprland-guiutils",
"rev": "5e1c6b9025aaf4d578f3eff7c0eb1f0c197a9507",
"rev": "a968d211048e3ed538e47b84cb3649299578f19d",
"type": "github"
},
"original": {
@@ -514,11 +512,11 @@
]
},
"locked": {
"lastModified": 1771865848,
"narHash": "sha256-xwNa+1D8WPsDnJtUofDrtyDCZKZotbUymzV/R5s+M0I=",
"lastModified": 1777937752,
"narHash": "sha256-QDc78DC6xhWKpPJzsPEJBBFYpTb+g4kO6+ydRYLU4f4=",
"owner": "hyprwm",
"repo": "hyprland-plugins",
"rev": "b85a56b9531013c79f2f3846fd6ee2ff014b8960",
"rev": "b6e080577daf6575b95e6733dd2e2aef714bcf10",
"type": "github"
},
"original": {
@@ -568,11 +566,11 @@
]
},
"locked": {
"lastModified": 1772459629,
"narHash": "sha256-/iwvNUYShmmnwmz/czEUh6+0eF5vCMv0xtDW0STPIuM=",
"lastModified": 1776426736,
"narHash": "sha256-rl7i4aY+9p8LysJp7o8uRWahCkpFznCgGHXszlTw7b0=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "7615ee388de18239a4ab1400946f3d0e498a8186",
"rev": "7833ff33b2e82d3406337b5dcf0d1cec595d83e9",
"type": "github"
},
"original": {
@@ -645,11 +643,11 @@
]
},
"locked": {
"lastModified": 1774211405,
"narHash": "sha256-6KNwP4ojUzv3YBlZU5BqCpTrWHcix1Jo01BISsTT0xk=",
"lastModified": 1777492286,
"narHash": "sha256-PwuoEJQcjSKJNP5T55qhfDwIP0tw5zxEhfu8GDfKfeg=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "cb4e152dc72095a2af422956c6b689590572231a",
"rev": "ec5c0c709706bad5b82f667fd8758eae442577ce",
"type": "github"
},
"original": {
@@ -670,11 +668,11 @@
]
},
"locked": {
"lastModified": 1772459835,
"narHash": "sha256-978jRz/y/9TKmZb/qD4lEYHCQGHpEXGqy+8X2lFZsak=",
"lastModified": 1777148232,
"narHash": "sha256-Uv0WZLhu89SafuSOmYDA7akrPt4wBRmsa1ucasO5aXg=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "0a692d4a645165eebd65f109146b8861e3a925e7",
"rev": "fec9cf1abcc1011e46f0a0986f46bf93c6bf8b92",
"type": "github"
},
"original": {
@@ -699,11 +697,11 @@
]
},
"locked": {
"lastModified": 1773074819,
"narHash": "sha256-qRqYnXiKoJLRTcfaRukn7EifmST2IVBUMZOeZMAc5UA=",
"lastModified": 1776728575,
"narHash": "sha256-z9eGphrArEBpl1O/GCH0wlY6z4K9vA6yWh2gAS6qytU=",
"owner": "hyprwm",
"repo": "hyprwire",
"rev": "f68afd0e73687598cc2774804fedad76693046f0",
"rev": "f3a80888783702a39691b684d099e16b83ed4702",
"type": "github"
},
"original": {
@@ -717,11 +715,11 @@
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1772239365,
"narHash": "sha256-bn+dkRV07QEzSpWezz3ESKGooDuf/2+W2vzE9hcWfxE=",
"lastModified": 1775570192,
"narHash": "sha256-wTLOBy3l/FaIGJWRGFTVYsITkou0lmDU3uAMxvOCCN8=",
"owner": "Lxtharia",
"repo": "minegrub-theme",
"rev": "77e8d83286dcb939e9168e6edc412ef501def50a",
"rev": "8ba52f8402ed642abf0f6eee32c407412a3ceae6",
"type": "github"
},
"original": {
@@ -752,11 +750,11 @@
]
},
"locked": {
"lastModified": 1773650902,
"narHash": "sha256-UnIRWlac4n6Kv48IeJ5Atjv61cOY3/eC+W9AnrPF3vo=",
"lastModified": 1777888924,
"narHash": "sha256-CZ9akWHCqoWlyi+alSalkzaA0hq1Cs1Tv7MnM/zMVLQ=",
"owner": "Mic92",
"repo": "nix-ld",
"rev": "0e73836dc3d9811288050b9b1905cc653a5e52c5",
"rev": "4161b94cb918d228f0452927950ed295c0131a48",
"type": "github"
},
"original": {
@@ -803,11 +801,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1774777275,
"narHash": "sha256-qogBiYFq8hZusDPeeKRqzelBAhZvREc7Cl+qlewGUCg=",
"lastModified": 1777917524,
"narHash": "sha256-k+LVe9YaO2BEPB9AaCtTtOMCeGi4dxDo6gt4Un3qoPY=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "b8f81636927f1af0cca812d22c876bad0a883ccd",
"rev": "df7783100babf59001340a7a874ba3824e441ecb",
"type": "github"
},
"original": {
@@ -834,11 +832,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1774388614,
"narHash": "sha256-tFwzTI0DdDzovdE9+Ras6CUss0yn8P9XV4Ja6RjA+nU=",
"lastModified": 1777673416,
"narHash": "sha256-5c2POKPOjU40Kh0MirOdScBLG0bu9TAuPYAtPRNZMBs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1073dad219cb244572b74da2b20c7fe39cb3fa9e",
"rev": "26ef669cffa904b6f6832ab57b77892a37c1a671",
"type": "github"
},
"original": {
@@ -850,11 +848,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1774709303,
"narHash": "sha256-D3Q07BbIA2KnTcSXIqqu9P586uWxN74zNoCH3h2ESHg=",
"lastModified": 1777578337,
"narHash": "sha256-Ad49moKWeXtKBJNy2ebiTQUEgdLyvGmTeykAQ9xM+Z4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685",
"rev": "15f4ee454b1dce334612fa6843b3e05cf546efab",
"type": "github"
},
"original": {
@@ -866,11 +864,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1774106199,
"narHash": "sha256-US5Tda2sKmjrg2lNHQL3jRQ6p96cgfWh3J1QBliQ8Ws=",
"lastModified": 1776877367,
"narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6c9a78c09ff4d6c21d0319114873508a6ec01655",
"rev": "0726a0ecb6d4e08f6adced58726b95db924cef57",
"type": "github"
},
"original": {
@@ -944,11 +942,11 @@
},
"nixpkgs_8": {
"locked": {
"lastModified": 1773389992,
"narHash": "sha256-wvfdLLWJ2I9oEpDd9PfMA8osfIZicoQ5MT1jIwNs9Tk=",
"lastModified": 1775710090,
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c06b4ae3d6599a672a6210b7021d699c351eebda",
"rev": "4c1018dae018162ec878d42fec712642d214fdfa",
"type": "github"
},
"original": {
@@ -970,11 +968,11 @@
]
},
"locked": {
"lastModified": 1767810917,
"narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=",
"lastModified": 1777598946,
"narHash": "sha256-X239dAGaU1+gfDj8jKH8GzlqKMcxaVfXOio+uzBOkeE=",
"owner": "nix-community",
"repo": "NUR",
"rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4",
"rev": "5d55af01c0f86be583931fe99207fc56c14134b3",
"type": "github"
},
"original": {
@@ -993,11 +991,11 @@
]
},
"locked": {
"lastModified": 1774104215,
"narHash": "sha256-EAtviqz0sEAxdHS4crqu7JGR5oI3BwaqG0mw7CmXkO8=",
"lastModified": 1776796298,
"narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "f799ae951fde0627157f40aec28dec27b22076d0",
"rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad",
"type": "github"
},
"original": {
@@ -1086,11 +1084,11 @@
]
},
"locked": {
"lastModified": 1774760784,
"narHash": "sha256-D+tgywBHldTc0klWCIC49+6Zlp57Y4GGwxP1CqfxZrY=",
"lastModified": 1777944972,
"narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "8adb84861fe70e131d44e1e33c426a51e2e0bfa5",
"rev": "c591bf665727040c6cc5cb409079acb22dcce33c",
"type": "github"
},
"original": {
@@ -1107,11 +1105,11 @@
"nix-filter": "nix-filter"
},
"locked": {
"lastModified": 1774692068,
"narHash": "sha256-GblLHAtf6ytu8wqJnYp5F6FtDm/IIjcM9bPwrPU1otE=",
"lastModified": 1777409658,
"narHash": "sha256-fBUjkrBbODd6c6j9sRfWvxqJrBHMHvp8WjAASfAqin4=",
"owner": "Duckonaut",
"repo": "split-monitor-workspaces",
"rev": "08ff2b4d1144845e8d7c23d6fd00bde12ff8f1fd",
"rev": "206fc9ed4e35bdaea60c4ae16927376ff3ebac9d",
"type": "github"
},
"original": {
@@ -1134,18 +1132,17 @@
],
"nur": "nur",
"systems": "systems_2",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes",
"tinted-tmux": "tinted-tmux",
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1774124764,
"narHash": "sha256-Poz9WTjiRlqZIf197CrMMJfTifZhrZpbHFv0eU1Nhtg=",
"lastModified": 1777835090,
"narHash": "sha256-VLH8zPweblCOvpnQXp4fVs7f6Q79YhXF5XFKlOrvIFk=",
"owner": "nix-community",
"repo": "stylix",
"rev": "e31c79f571c5595a155f84b9d77ce53a84745494",
"rev": "7989a1054b01153212dede6005abfd1576b8328c",
"type": "github"
},
"original": {
@@ -1223,11 +1220,11 @@
"uv2nix": "uv2nix"
},
"locked": {
"lastModified": 1775480016,
"narHash": "sha256-DXsHc7JC1Ffm2win6oCZHu966YJR37Hy3J25UGXt9Eo=",
"lastModified": 1776248910,
"narHash": "sha256-MrwY8D48uZMTI/D6TEBmG1osklyAlqdtYeH+1cBeRNU=",
"owner": "LichHunter",
"repo": "thefuck",
"rev": "c1145c95d9bde53ec912e493c7c8e6ccc74b136d",
"rev": "7cac5ac8709dade676264af51afbe7a4d3c84582",
"type": "github"
},
"original": {
@@ -1236,23 +1233,6 @@
"type": "github"
}
},
"tinted-foot": {
"flake": false,
"locked": {
"lastModified": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
}
},
"tinted-kitty": {
"flake": false,
"locked": {
@@ -1272,11 +1252,11 @@
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1767710407,
"narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=",
"lastModified": 1777041405,
"narHash": "sha256-BAGZ7ObFV/9Z61OJZun7ifPyhkuHqNuW1QIhQ8LuzCo=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2",
"rev": "5f868b3a338b6904c47f3833b9c411be641983a8",
"type": "github"
},
"original": {
@@ -1288,11 +1268,11 @@
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1767489635,
"narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=",
"lastModified": 1777169200,
"narHash": "sha256-h7dDbIzP5hDr9v97w9PL6jdAgXawmj6krcH+959rqpU=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184",
"rev": "f798c2dce44ef815bb6b8f05a82135c7942d35ac",
"type": "github"
},
"original": {
@@ -1304,11 +1284,11 @@
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1767488740,
"narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=",
"lastModified": 1777463218,
"narHash": "sha256-Bhkozqtq3BKLqWTlmKm8uAptfX4aRGI8QX3eEL54Vpc=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40",
"rev": "5768d08ed2e7944a26a958868cdb073cb8856dae",
"type": "github"
},
"original": {
@@ -1319,11 +1299,11 @@
},
"unstable": {
"locked": {
"lastModified": 1774709303,
"narHash": "sha256-D3Q07BbIA2KnTcSXIqqu9P586uWxN74zNoCH3h2ESHg=",
"lastModified": 1777954456,
"narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "8110df5ad7abf5d4c0f6fb0f8f978390e77f9685",
"rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
"type": "github"
},
"original": {
@@ -1340,11 +1320,11 @@
]
},
"locked": {
"lastModified": 1774875815,
"narHash": "sha256-PzqwM4njoB3aznqwPZUawD4uOcJeu7N6GBTJKg81EQ4=",
"lastModified": 1777988791,
"narHash": "sha256-DtbtSW5+Hls7z+D9BfsAXvFuivt5iZ0OzUXjQ8d8lB8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "9340f51314713c83360bf72d75c8b404778ab5b1",
"rev": "d987617879f613053f6fdf4491fe28ce0283d543",
"type": "github"
},
"original": {
@@ -1426,11 +1406,11 @@
]
},
"locked": {
"lastModified": 1773601989,
"narHash": "sha256-2tJf/CQoHApoIudxHeJye+0Ii7scR0Yyi7pNiWk0Hn8=",
"lastModified": 1777035886,
"narHash": "sha256-m1TNuBoSXUBSKhD9UVMkU90M0wFTPTfvIOOltO8IM8A=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "a9b862d1aa000a676d310cc62d249f7ad726233d",
"rev": "ecfcdcc781f48821d83e1e2a0e30d7beca0eeb5e",
"type": "github"
},
"original": {
@@ -1445,11 +1425,11 @@
"nixpkgs": "nixpkgs_8"
},
"locked": {
"lastModified": 1774848370,
"narHash": "sha256-Esm+aiabP563BcUFfFUCIOlFaTxKUXPp6jw0LMAV7ik=",
"lastModified": 1777959875,
"narHash": "sha256-kL2gxkGbIawygfc+DJhWBXAcRplFQlLyDBb4JHCxTzw=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "712c476500e96df74276be99bb3fa9631f494f3a",
"rev": "604c3c8814c87eac54d804253ab520cb8fac7b21",
"type": "github"
},
"original": {
+4
View File
@@ -37,6 +37,10 @@ in {
"hyprland/window"
];
"hyprland/workspaces" = {
active-only = true;
};
modules-center = [
"clock"
];
+1
View File
@@ -10,5 +10,6 @@
./terminal
./development
./notification
./theme
];
}
+1 -1
View File
@@ -22,7 +22,7 @@ in {
home.file."jdk/openjdk17".source = pkgs.jdk17;
home.file."jdk/openjdk21".source = pkgs.jdk21;
home.file."jdk/openjdk25".source = pkgs.jdk25;
home.file."jdk/openjdk25".source = pkgs.jdk25_headless;
home.file."jdk/zulu25".source = pkgs.zulu25;
home.file."nodejs/nodejs_22".source = pkgs.nodejs_22;
home.file."python/python3".source = pkgs.python3;
+40 -7
View File
@@ -1,10 +1,16 @@
{ config, lib, pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
with lib;
let
cfg = config.dov.kanshi;
in {
in
{
options.dov.kanshi.enable = mkEnableOption "kanshi config";
config = mkIf cfg.enable {
@@ -29,12 +35,39 @@ in {
outputs = [
{
criteria = "eDP-1";
position = "480,1440";
position = "0,1440";
mode = "2560x1440@165Hz";
}
{
criteria = "LG Electronics LG ULTRAWIDE 201NTTQC5617";
position = "0,0";
mode = "3440x1440";
position = "2560,1440";
mode = "3440x1440@49.95Hz";
}
{
criteria = "Lenovo Group Limited LEN G34w-10 URW07XK8";
position = "2560,0";
mode = "3440x1440@60Hz";
}
];
};
}
{
profile = {
name = "home2";
outputs = [
{
criteria = "eDP-1";
position = "0,720";
}
{
criteria = "Dell Inc. DELL P2724DEB 6W7KJF4";
position = "2560,720";
mode = "2560x1440";
}
{
criteria = "Samsung Electric Company U32R59x H1AK500000";
position = "5120,0";
mode = "3840x2160";
}
];
};
@@ -48,9 +81,9 @@ in {
position = "480,1440";
}
{
criteria = "DP-5";
criteria = "Lenovo Group Limited LEN G34w-10 URW07XK8";
position = "0,0";
mode = "3440x1440";
mode = "3440x1440@60Hz";
}
];
};
+51
View File
@@ -0,0 +1,51 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.dov.dynamic-theme;
schemes = "${pkgs.base16-schemes}/share/themes";
# Single source of truth for builtin themes
builtinThemes = {
gruvbox = {
dark = "${schemes}/gruvbox-dark-hard.yaml";
light = "${schemes}/gruvbox-light-hard.yaml";
};
catppuccin = {
dark = "${schemes}/catppuccin-mocha.yaml";
light = "${schemes}/catppuccin-latte.yaml";
};
};
in {
options.dov.dynamic-theme = {
enable = mkEnableOption "dynamic theme switching";
themes = mkOption {
type = types.attrsOf (types.submodule {
options = {
dark = mkOption {
type = types.path;
description = "Path to dark variant base16 scheme";
};
light = mkOption {
type = types.path;
description = "Path to light variant base16 scheme";
};
};
});
default = builtinThemes;
description = "Available themes with dark and light variants";
};
};
config = mkIf cfg.enable {
# HM-level stylix config inherits from NixOS level
# Specialisations are handled by NixOS module
stylix = {
enable = true;
autoEnable = true;
};
};
}
+1 -1
View File
@@ -26,7 +26,7 @@
kernelModules = [ ];
};
kernelModules = [ "kvm-amd" ];
kernelPackages = pkgs.linuxPackages_latest;
kernelPackages = pkgs.linuxPackages_6_18;
# allow perf as user | needed for intellij to run profiler
kernel.sysctl."kernel.perf_event_paranoid" = 1;
@@ -0,0 +1,63 @@
-----BEGIN CERTIFICATE-----
MIIFejCCA2KgAwIBAgIUHLPCpX+l4oCWRvL4wNS7ZXogaQ0wDQYJKoZIhvcNAQEL
BQAwLDEQMA4GA1UECgwHSG9tZWxhYjEYMBYGA1UEAwwPSG9tZWxhYiBSb290IENB
MB4XDTI2MDQyNDE1MzAxMFoXDTMxMDQyNDE1MzAxMFowNDEQMA4GA1UECgwHSG9t
ZWxhYjEgMB4GA1UEAwwXSG9tZWxhYiBJbnRlcm1lZGlhdGUgQ0EwggIiMA0GCSqG
SIb3DQEBAQUAA4ICDwAwggIKAoICAQDGw7Tf176ZtPTKBziT/WlCVWydJK4OHHAM
BquF512ZibpJnoCFJBVgD158WAc8r2e8FW5ZbhDiVHXYsJmmIMKpNB2JH28dos67
CCQ8eJuVPB0RxvsTeilFX0Z6vcOrMDI/tbTc47PxexmnY2vn6EZ31LE1ob7po6sg
CXbymIPYw8MNRlirs0WCbXiRPWv7aX5YfC41e2INoxYIUGkwSQaTm9EMyFCMPQx/
50NEUG8XcwnIxYxczHO1uPq70Dh5h3PytYyO7nM6VfbhJv5TF6MgSPHRAHnJ1OcM
f9WEoe1sPwBB3SQq+EEc26mhzpWJ1NP8k69VvfQGT1RZGVCGjj2lEnztBvLSxRHt
UDjnWhcrM8an5BVw47Co0moOVgiGR29D0QbnqNhzx73geNYF7indVN+S0esvXmlF
dD8XFUrGBqEDCpVBCdiwnjilgmWTEE5L+geh5rf1Xf4lGqAJ/HG/gzh+0aMyhJRO
hhhqy/y0Bh4u9ndEHlefCb1+THPAkp3zD6AlvRTmen4lQCZmXbUdYy0Vzc3wGOdP
7rw0mkXajlgnIxnmVX24qoU7WZY957O2S5eTFkceCytWpzXsEJRkl+tRvtPXUAJy
fgCJcmYu6ysQ5vDNdzYX9PkuBpn7ONG5fAgK+aPukdcVb9igN26Ao6FKNLoq6XQN
QiwfFwcErQIDAQABo4GLMIGIMCIGA1UdEQQbMBmCF0hvbWVsYWIgSW50ZXJtZWRp
YXRlIENBMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1Ud
DgQWBBSKt8hpuCiRvMO9yVVMg5nxoMhc7jAfBgNVHSMEGDAWgBQE/W2BXGJEBEGW
bYJ1acZu9OpBgDANBgkqhkiG9w0BAQsFAAOCAgEAeh5a2mkimOiJiEkqdC9zMSEs
0qczDOImSjap+5jWcKSArlDhD3Ng8855G0mAcdUWqY5fzxuvbPqEgxCCltZpL1sy
5ULP/tVscJLXm6TNMu+txxdAqsqsif2b41rM1WrKthDJpYYygfJ+w7xV6wIucuIW
ZXWkhdF9ByNSK6a2Cvk+uChgVKup0Lkgmka4JnbJ2aOBhNfYN/M+O+0cKwgLmabS
H34Lz+XNfWcxikh8i0XZv+msdL//wIBXt7ij3MM8I82CpIrKmxUzGLf6kskyra8k
R3UL5GvRjP+/p4kPCukEe+38ehV4LubXnFm+EE1Lk2Ssdg5G/2t3D+AVeX3AsJaW
U4NKJNBnz5s5Bew5xpvvL6SYGo75xDh6ED2liNwPU0Qv/CsoLaVhAAMFrwabE9lH
wC91qrjWdd2CmzBwrlxF7OyDxKY9WslMvTvcgJbM0OaCDZtyk4zcF442DdPNoLaT
0zVqiJ4WQxkGA5airADbT7pZBeZjiQFZdwNN54akLQo5FsMfaqk/X++cbY1mlgqo
H1UCqvwT2bsIaO+fUkiR8YuewNPriIwfmE9cKXWndjTrDfmT5e3aXYjPReDBuRXY
67xBSV15UzxxNt2AX6DpLpgOXqOAFH/jNnYuYZNWZVMEjflzN2WjGQ6jAn+j8vA8
b3gaJQ8W9LbQV5Nkahs=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFRDCCAyygAwIBAgIUFwT5aSyhaiDHWGC6zoWdus62NG8wDQYJKoZIhvcNAQEL
BQAwLDEQMA4GA1UECgwHSG9tZWxhYjEYMBYGA1UEAwwPSG9tZWxhYiBSb290IENB
MB4XDTI2MDQyNTE1MzAwOFoXDTM2MDQyMjE1MzAwOFowLDEQMA4GA1UECgwHSG9t
ZWxhYjEYMBYGA1UEAwwPSG9tZWxhYiBSb290IENBMIICIjANBgkqhkiG9w0BAQEF
AAOCAg8AMIICCgKCAgEAkWcMIXerDH0x6dochISzaQms6Ialb1V9cEGs+FIm9kNR
drtBAi3p35a+VSUl1bw4m+uczQgiY5unJSLALklGqYy7PBI0AyvAdCMRcnknn6JO
JXmad1fJLnyKmv4EH6Dq34Qqm/7Ka79rQYUOQhigLu+7+iquZX/UzsuYvVpdTQOz
M3yBt3a9wf3kX/aJTfriudW8gMpkYoW3DCDK0B16b1N0cyv2fvDsSR1Xfmi+YVu1
r8PQ5lvH3C4T6gBJQhTEHWkCkuxgOTQaqOS4zBe6MgyDuiAnEqGIljjkwY/uEzWP
a0vOGgeu5BbktC7iAU+fPbIARTq/RobFBkikxCbb1n4/FyDFHkBFXQU71AEWmkLt
wK1ekHGjw/iIgxkX3haV/UZwd0qlHAmUYMge5YmsXo/Kfl40t1Ma2LBP/NRuz8eP
gMPFE51ZgEf/TVH84G2gcrKxbsIRRcxrnrZ2o2aQk5Ylhg6j4cmiRR27GF5zJgbQ
jA4ZAcRE38YIzHDgS/95eMFz6LJYOEVxfj6zvEFcmV2NAH3rsIdCuNu2Wel7Zzzf
YusIfFyf543evYD9Mewi+46bSs848SzFsT8SynydC6u8cpK84BsquwuInlOQWUvM
smewvacLMENHtKNML0rJEpCCVI8IdYCqsMviuC0fzotP8DeSDBjjS9HUfSxWOIkC
AwEAAaNeMFwwGgYDVR0RBBMwEYIPSG9tZWxhYiBSb290IENBMA4GA1UdDwEB/wQE
AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQE/W2BXGJEBEGWbYJ1acZu
9OpBgDANBgkqhkiG9w0BAQsFAAOCAgEAA13poaND3jq4dMzGcn2XVz1a6g4B7mxF
GHWXSHe9/Q/kjF2qnEdea7VFLCCzZ0OqC2UpfKnTW4xbCZ/d4QZqcgGXJehfuuhE
oux1Nm0a3jBZQ+EYnJDuAgOb80q0S55Iwfh57l1613xdAh73x1yWtlGH5wlCRj27
C/ilyws1Yk26N1qzwfh6A42yEjv29Aos4hTn1jUMHJH63A5ke2tRnYDq2HR9x9PW
xhxHm8NsK0jMmvOSOW9n1X6X3UhTfzNyHY8PMCQeXG+9ppnkYgOda0fDWTD21iqq
l22MKqEuGfq84D3HaK/TlLP0vywao4Ug/K7jE/j/GWMkTmdxIjTSQ7VmRyzdXqsE
HsjpWAgRrY6JdoW2V0F90qk6Op1hVcGRdXznhCx0/TWG272d0dzetIqcHfgn5n7z
0DYSCS/4WaA25x4johdic58e6dCIDat88nbbZCwZaHDER6PBZprgm1J/6ek7jQaR
arWksZX/+PBg1IGAHSkRiVpx8kq2fFEUbbSDONxJmE8FEWDp6frq3a4pbleqJenK
1IOLVJg9D3RJAvBa14kOeocyb0upZ8Zc/oSm+ojyVt56PoBPQC28SJ+T9mAS1/uL
bWFMtkTU0oVuytOHTvekvBJbloX9HqTDtkjV/A/PSLrg7dXW09v3RhPjLGKj5Gf1
9HMKL6MV2is=
-----END CERTIFICATE-----
+7 -2
View File
@@ -13,7 +13,10 @@
(import ./overlays/zulu22.nix)
];
security.pki.certificateFiles = [ ./certs/homelab-com.pem ];
security.pki.certificateFiles = [
./certs/homelab-com.pem
./certs/homelab-lan-chain.crt
];
users.users.${username} = {
description = "NixOS Omen Laptop";
@@ -107,6 +110,8 @@
display-manager.ly.enable = true;
gaming.enable = true;
dynamic-theme.enable = true;
};
###
@@ -123,7 +128,7 @@
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
# base16Scheme managed by dov.dynamic-theme module
fonts = {
serif = {
@@ -148,26 +148,102 @@
(require 'lsp-java-boot)
(require 'dap-java)
;; to enable the lenses
;; Enable lenses
(add-hook 'lsp-mode-hook #'lsp-lens-mode)
(add-hook 'java-mode-hook #'lsp-java-boot-lens-mode)
(add-hook 'java-mode-hook #'lsp-java-boot-lens-mode)
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection "nixd")
:major-modes '(nix-mode)
:priority 0
:server-id 'nixd))
(defun my/setup-project-lombok ()
(when (and (boundp 'lombok-version) lombok-version)
(let ((lombok-jar (expand-file-name
(format "~/.m2/repository/org/projectlombok/lombok/%s/lombok-%s.jar"
lombok-version lombok-version))))
(when (file-exists-p lombok-jar)
(setq-local lsp-java-vmargs
(append (default-value 'lsp-java-vmargs)
(list (concat "-javaagent:" lombok-jar))))))))
(add-hook 'java-mode-hook #'my/setup-project-lombok))
;; =============================================================================
;; Smart Lombok Support
;; - Java 23+: Uses javac mode (Lombok works as annotation processor, no agent)
;; - Java <23: Queries Maven for Lombok version, downloads if needed, uses -javaagent
;; =============================================================================
(defun my/maven-get-property (property)
"Get a Maven property value from current project."
(when-let ((pom-dir (locate-dominating-file default-directory "pom.xml")))
(let ((default-directory pom-dir))
(string-trim
(shell-command-to-string
(format "mvn help:evaluate -Dexpression=%s -q -DforceStdout 2>/dev/null" property))))))
(defun my/get-project-java-version ()
"Get Java version from project (maven.compiler.release or source)."
(when-let ((pom-dir (locate-dominating-file default-directory "pom.xml")))
(let* ((release (my/maven-get-property "maven.compiler.release"))
(source (my/maven-get-property "maven.compiler.source"))
(version-str (cond
((and release (not (string-match-p "^\\$" release))) release)
((and source (not (string-match-p "^\\$" source))) source)
(t nil))))
(when version-str
(string-to-number (replace-regexp-in-string "^1\\." "" version-str))))))
(defvar my/lombok-cache (make-hash-table :test 'equal)
"Cache of project-root -> lombok-jar-path.")
(defun my/get-lombok-version-from-maven ()
"Get Lombok version from Maven classpath."
(when-let ((pom-dir (locate-dominating-file default-directory "pom.xml")))
(let* ((default-directory pom-dir)
(classpath (shell-command-to-string
"mvn dependency:build-classpath -Dmdep.outputFile=/dev/stdout -q 2>/dev/null")))
(when (string-match "/lombok-\\([0-9][^/]*\\)\\.jar" classpath)
(match-string 1 classpath)))))
(defun my/lombok-jar-path (version)
"Return path to Lombok jar in Maven repository."
(expand-file-name
(format "~/.m2/repository/org/projectlombok/lombok/%s/lombok-%s.jar" version version)))
(defun my/ensure-lombok-downloaded (version)
"Ensure Lombok VERSION is downloaded to Maven repository."
(let ((jar-path (my/lombok-jar-path version)))
(unless (file-exists-p jar-path)
(message "Downloading Lombok %s..." version)
(shell-command
(format "mvn dependency:get -Dartifact=org.projectlombok:lombok:%s -q" version))
(message "Lombok %s downloaded." version))
(when (file-exists-p jar-path)
jar-path)))
(defun my/setup-lombok ()
"Configure Lombok support based on project's Java version and dependencies.
Must be called BEFORE jdtls starts. Sets global lsp-java-vmargs."
(when-let ((pom-dir (locate-dominating-file default-directory "pom.xml")))
(let* ((project-root (expand-file-name pom-dir))
(cached-jar (gethash project-root my/lombok-cache))
(java-version (my/get-project-java-version)))
(cond
;; Java 23+: Use javac mode - Lombok works as annotation processor
((and java-version (>= java-version 23))
(unless (member "-Djava.jdt.ls.javac.enabled=on" lsp-java-vmargs)
(setq lsp-java-vmargs
(append lsp-java-vmargs '("-Djava.jdt.ls.javac.enabled=on")))
(message "Java %d: javac mode enabled (Lombok auto-discovered)" java-version)))
;; Java <23: Use -javaagent with Lombok jar
(t
(let ((lombok-jar (or cached-jar
(when-let ((version (or (my/get-lombok-version-from-maven)
(and (boundp 'lombok-version) lombok-version))))
(my/ensure-lombok-downloaded version)))))
(when lombok-jar
(puthash project-root lombok-jar my/lombok-cache)
(let ((agent-arg (concat "-javaagent:" lombok-jar)))
;; Remove any old lombok agents, add current one
(setq lsp-java-vmargs
(append (seq-remove (lambda (arg) (string-match-p "-javaagent:.*lombok" arg))
lsp-java-vmargs)
(list agent-arg)))
(message "Lombok configured: %s" lombok-jar)))))))))
;; Advice lsp-java--ls-command to inject lombok BEFORE command is built
(defun my/inject-lombok-into-vmargs (orig-fn)
"Advice to inject Lombok agent into lsp-java-vmargs before command is built."
(my/setup-lombok)
(funcall orig-fn))
(advice-add 'lsp-java--ls-command :around #'my/inject-lombok-into-vmargs))
(add-to-list 'safe-local-variable-values #'stringp)
@@ -238,25 +314,84 @@
emms-info-functions '(emms-info-mpd)))
(after! lsp-mode
;; (lsp-register-client ;
;; (make-lsp-client :new-connection (lsp-stdio-connection "nixd")
;; :major-modes '(nix-mode)
;; :priority 0
;; :server-id 'nixd))
(use-package lsp-nix
:ensure lsp-mode
:after (lsp-mode)
:demand t
:custom
(lsp-nix-nil-formatter ["nixpkgs-fmt"]))
;; Prevent Semgrep from receiving Java-specific commands it can't handle
(lsp-disable-method-for-server "workspace/executeCommand" 'semgrep-ls)
(use-package nix-mode
:hook (nix-mode . lsp-deferred)
:ensure t)
)
;; Fix: boot-ls (Spring Boot LS) doesn't implement willSaveWaitUntil but lsp-mode
;; sends it anyway when multiple servers are connected (jdtls + boot-ls for Java).
;; boot-ls uses lsp4j's default which throws UnsupportedOperationException, causing hang.
;; See: https://github.com/spring-projects/spring-tools (SimpleLanguageServer.java:455)
;; Bug is in lsp-mode's multi-server capability checking, not boot-ls.
(lsp-disable-method-for-server "textDocument/willSaveWaitUntil" 'boot-ls)
(after! claude-code-ide
(use-package claude-code-ide
:bind ("C-c C-'" . claude-code-ide-menu) ; Set your favorite keybinding
;; Register nixd LSP client for Nix files
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection "nixd")
:major-modes '(nix-mode)
:priority 0
:server-id 'nixd))
;; Nix LSP configuration
(setq lsp-nix-nil-formatter ["nixpkgs-fmt"])
;; Fix: Handle textEdit with only :newText and no range (jdtls lazy textEdit bug)
;; When jdtls returns textEdit with only :newText and no :range/:insert/:replace,
;; lsp-mode silently fails to insert. This uses markers as fallback.
(advice-add 'lsp-completion--exit-fn :around
(lambda (orig-fn candidate status &optional candidates)
(let* ((item (plist-get (text-properties-at 0 candidate) 'lsp-completion-item))
(text-edit (when item (lsp:completion-item-text-edit? item)))
(markers (plist-get (text-properties-at 0 candidate) 'lsp-completion-markers)))
;; If textEdit exists but has no range, fix it using markers
(if (and text-edit
(plist-get text-edit :newText)
(not (plist-get text-edit :range))
(not (plist-get text-edit :insert))
markers)
(let ((start (car markers))
(end (cadr markers)))
(when (and start end (markerp end))
(setq end (marker-position end)))
(when (and start end)
;; Delete the prefix and insert the new text manually
(delete-region start end)
(goto-char start)
(insert (plist-get text-edit :newText))))
;; Otherwise call original
(funcall orig-fn candidate status candidates))))
'((name . lsp-completion--exit-fn-advice)))
;; Use company-capf with yasnippet for completions
(setq +lsp-company-backends '(company-capf :with company-yasnippet)))
;; Enable LSP for nix-mode
(add-hook! 'nix-mode-hook #'lsp-deferred)
;; Protobuf configuration
(use-package! protobuf-mode
:mode "\\.proto\\'"
:hook (protobuf-mode . lsp-deferred)
:config
(claude-code-ide-emacs-tools-setup))) ; Optionally enable Emacs MCP tools
;; Custom indentation (2 spaces, no tabs)
(defconst my-protobuf-style
'((c-basic-offset . 2)
(indent-tabs-mode . nil)))
(add-hook 'protobuf-mode-hook
(lambda () (c-add-style "my-protobuf-style" my-protobuf-style t))))
;; Register buf LSP client for protobuf
(after! lsp-mode
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection '("buf" "lsp" "serve"))
:activation-fn (lsp-activate-on "protobuf")
:language-id "protobuf"
:priority 1
:server-id 'buf-lsp)))
(after! treemacs
(setq treemacs-collapse-dirs 3))
;; Prevent evil-jumps-history from corrupting savehist
;; (it contains markers/buffers that can't serialize properly)
(after! savehist
(add-to-list 'savehist-ignored-variables 'evil-jumps-history))
@@ -1,25 +0,0 @@
;;; flycheck_init.el -*- lexical-binding: t; -*-
;;
;; Copyright (C) 2026 Alexander Derevianko
;;
;; Author: Alexander Derevianko <alexander0derevianko@gmail.com>
;; Maintainer: Alexander Derevianko <alexander0derevianko@gmail.com>
;; Created: February 24, 2026
;; Modified: February 24, 2026
;; Version: 0.0.1
;; Keywords: abbrev bib c calendar comm convenience data docs emulations extensions faces files frames games hardware help hypermedia i18n internal languages lisp local maint mail matching mouse multimedia news outlines processes terminals tex text tools unix vc wp
;; Homepage: https://github.com/fujin/flycheck_init
;; Package-Requires: ((emacs "24.3"))
;;
;; This file is not part of GNU Emacs.
;;
;;; Commentary:
;;
;;
;;
;;; Code:
(provide 'flycheck_init)
;;; flycheck_init.el ends here
@@ -137,7 +137,7 @@
;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3
;;gdscript ; the language you waited for
;;(go +lsp) ; the hipster dialect
(go +lsp) ; the hipster dialect
;;(graphql +lsp) ; Give queries a REST
;;(haskell +lsp) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
@@ -166,7 +166,7 @@
;;rest ; Emacs as a REST client
;;rst ; ReST in peace
(ruby +lsp) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
;;(scheme +guile) ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor
@@ -56,3 +56,5 @@
(package! web-server)
(package! just-mode)
(package! protobuf-mode)
+6 -1
View File
@@ -68,6 +68,8 @@
};
notification.mako.enable = true;
dynamic-theme.enable = true;
};
programs = {
@@ -114,7 +116,7 @@
semgrep
devpod
tmux
bottles
#bottles
terraform
kubectl
kubectx
@@ -122,6 +124,8 @@
btop
htop
nvitop
tree
bruno
#torrent
qbittorrent
@@ -133,6 +137,7 @@
#vial #keyboard configurator
#qmk
google-chrome
unzip
#libreoffice
grim
+1
View File
@@ -15,5 +15,6 @@
./gitlab
./jenkins
./gaming
./theme
];
}
+1 -1
View File
@@ -56,7 +56,7 @@ in {
shellcheck
# :lang typescript
#javascript-typescript-langserver # deprecated
deno
#deno
# :lang go
# go
# gopls
+65
View File
@@ -0,0 +1,65 @@
{ config, lib, pkgs, username, ... }:
with lib;
let
# Access HM theme config
hmCfg = config.home-manager.users.${username}.dov.dynamic-theme;
allThemes = hmCfg.themes;
# Generate all theme-variant combinations
themeVariants = concatMapAttrs (name: theme: {
"${name}-dark" = { scheme = theme.dark; polarity = "dark"; };
"${name}-light" = { scheme = theme.light; polarity = "light"; };
}) allThemes;
# Base is gruvbox-dark, everything else is a specialisation
baseVariant = "gruvbox-dark";
specialisationVariants = filterAttrs (name: _: name != baseVariant) themeVariants;
availableVariants = concatStringsSep " " (attrNames themeVariants);
theme-switch = pkgs.writeShellScriptBin "theme-switch" ''
case "$1" in
${baseVariant})
echo "Switching to ${baseVariant}..."
sudo nixos-rebuild switch --flake ~/nixos#${username}
;;
${concatStringsSep "\n " (map (name: ''
${name})
echo "Switching to ${name}..."
sudo nixos-rebuild switch --flake ~/nixos#${username} --specialisation ${name}
;;'') (attrNames specialisationVariants))}
*)
echo "Usage: theme-switch <variant>"
echo "Available: ${availableVariants}"
exit 1
;;
esac
'';
in {
options.dov.dynamic-theme.enable = mkEnableOption "NixOS dynamic theme specialisations";
config = mkIf (config.dov.dynamic-theme.enable && hmCfg.enable) {
# Add theme-switch script system-wide
environment.systemPackages = [ theme-switch ];
# Base theme: gruvbox-dark
stylix = {
base16Scheme = mkDefault themeVariants.${baseVariant}.scheme;
polarity = mkDefault themeVariants.${baseVariant}.polarity;
};
# Generate NixOS specialisations for all other variants
specialisation = mapAttrs (name: variant: {
configuration = {
stylix = {
base16Scheme = mkForce variant.scheme;
polarity = mkForce variant.polarity;
};
};
}) specialisationVariants;
};
}
+4 -5
View File
@@ -44,7 +44,7 @@ in {
home-manager.users.fujin.config = {
home.packages = with pkgs; [
swww
awww
pipewire
wireplumber
libnotify
@@ -69,7 +69,7 @@ in {
];
settings = {
monitor = ",highres,auto,1";
monitor = ",preferred,auto,1";
source = "~/.config/hypr/colors";
env = [
@@ -226,7 +226,6 @@ in {
};
dwindle = {
pseudotile = "yes";
preserve_split = "yes";
};
@@ -234,8 +233,8 @@ in {
workspace = [
#"0, monitor:DP-1"
"8, monitor:e-DP-1"
"9, monitor:e-DP-1"
"8, monitor:eDP-1"
"9, monitor:eDP-1"
#"9, on-created-empty:[tiled] thunderbird"
];