From 0251e201abf4f4ae782c1a5ac5768bcbe8a80943 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 1 Nov 2024 22:41:30 -0500 Subject: [PATCH 001/317] Updated system --- flake.lock | 74 +++++++++++++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/flake.lock b/flake.lock index a80dabf..9c12db2 100644 --- a/flake.lock +++ b/flake.lock @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1729302358, - "narHash": "sha256-6bZhQRCGAeBzOXF8CRFDDG9fI0szycsR/6XDoFaYAjs=", + "lastModified": 1730406687, + "narHash": "sha256-Tv85Ctg3P51UBAT6lIy5RfH335edeEKuaA5XUYcsXU8=", "owner": "StevenBlack", "repo": "hosts", - "rev": "48eb1cbb0b4a24984ab974268d32c185864b25f4", + "rev": "bbb43907e5ced864b3763005b0988e61104eba6a", "type": "github" }, "original": { @@ -511,11 +511,11 @@ ] }, "locked": { - "lastModified": 1729551526, - "narHash": "sha256-7LAGY32Xl14OVQp3y6M43/0AtHYYvV6pdyBcp3eoz0s=", + "lastModified": 1730490306, + "narHash": "sha256-AvCVDswOUM9D368HxYD25RsSKp+5o0L0/JHADjLoD38=", "owner": "nix-community", "repo": "home-manager", - "rev": "5ec753a1fc4454df9285d8b3ec0809234defb975", + "rev": "1743615b61c7285976f85b303a36cdf88a556503", "type": "github" }, "original": { @@ -541,11 +541,11 @@ ] }, "locked": { - "lastModified": 1728669738, - "narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=", + "lastModified": 1727532803, + "narHash": "sha256-ZaZ7h7PY8mQc4vtGmVqWLAq9CAO02gHMyNR5yY8zDmM=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "0264e698149fcb857a66a53018157b41f8d97bb0", + "rev": "b98726e431d4d3ed58bd58bee1047cdb81cec69f", "type": "github" }, "original": { @@ -623,7 +623,6 @@ "locked": { "lastModified": 1729596320, "narHash": "sha256-sBPr6O2Ad916f+L7biAjmJVx4TLDITC4joKgeOT47V8=", - "ref": "refs/heads/main", "rev": "4d7f0b5d8b952f31f7d2e29af22ab0a55ca5c219", "revCount": 198, "type": "git", @@ -647,11 +646,11 @@ ] }, "locked": { - "lastModified": 1728345020, - "narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=", + "lastModified": 1727451107, + "narHash": "sha256-qV9savtHwmZUa0eJE294WYJjKPGB2+bJhwByFShsVyo=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "a7c183800e74f337753de186522b9017a07a8cee", + "rev": "6b3261ee13a6d2b99de79a31d352f6996e35bde3", "type": "github" }, "original": { @@ -703,11 +702,11 @@ ] }, "locked": { - "lastModified": 1728168612, - "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", + "lastModified": 1725997860, + "narHash": "sha256-d/rZ/fHR5l1n7PeyLw0StWMNLXVU9c4HFyfskw568so=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", + "rev": "dfeb5811dd6485490cce18d6cc1e38a055eea876", "type": "github" }, "original": { @@ -757,6 +756,7 @@ "locked": { "lastModified": 1725203994, "narHash": "sha256-N7Kfq8tpOWjtRKBnH5RqcDtQFGZPZ5vXgmxbnZVPCuU=", + "ref": "refs/heads/main", "rev": "73b0fc26c0e2f6f82f9d9f5b02e660a958902763", "revCount": 248, "type": "git", @@ -780,11 +780,11 @@ ] }, "locked": { - "lastModified": 1728941256, - "narHash": "sha256-WRypmcZ2Bw94lLmcmxYokVOHPJSZ7T06V49QZ4tkZeQ=", + "lastModified": 1727300645, + "narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "fd4be8b9ca932f7384e454bcd923c5451ef2aa85", + "rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c", "type": "github" }, "original": { @@ -1045,11 +1045,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1729413321, - "narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=", + "lastModified": 1730200266, + "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26", + "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", "type": "github" }, "original": { @@ -1092,11 +1092,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1729449015, - "narHash": "sha256-Gf04dXB0n4q0A9G5nTGH3zuMGr6jtJppqdeljxua1fo=", + "lastModified": 1730327045, + "narHash": "sha256-xKel5kd1AbExymxoIfQ7pgcX6hjw9jCgbiBjiUfSVJ8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "89172919243df199fe237ba0f776c3e3e3d72367", + "rev": "080166c15633801df010977d9d7474b4a6c549d7", "type": "github" }, "original": { @@ -1337,11 +1337,11 @@ "org-timeblock": { "flake": false, "locked": { - "lastModified": 1723239268, - "narHash": "sha256-D6GWpmF2fMZGvZ3Jonf4B+yyFTxBv4m5mxmfOVFNm60=", + "lastModified": 1730016337, + "narHash": "sha256-NOc45zpfvia61YpLiggP/YgJeLttNAd/Cdeh1CfxGdw=", "owner": "ichernyshovvv", "repo": "org-timeblock", - "rev": "e5b3614633f45d059239c6c6e9379803064936ce", + "rev": "e61e5734b49f933ed178029f804a0499f3308e1e", "type": "github" }, "original": { @@ -1502,11 +1502,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1729650555, - "narHash": "sha256-j8Sohst1TbQM6LqQKa/HRMfzsUwMhosuNMj2uOn9JOA=", + "lastModified": 1730428392, + "narHash": "sha256-2aRfq1P0usr+TlW9LUCoefqqpPum873ac0TgZzXYHKI=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "10c5eb61aaa32caddb9ecf0362a6eb9daeb08eab", + "rev": "17eda17f5596a84e92ba94160139eb70f3c3e734", "type": "github" }, "original": { @@ -1564,11 +1564,11 @@ "tinted-tmux": "tinted-tmux" }, "locked": { - "lastModified": 1729380793, - "narHash": "sha256-TV6NYBUqTHI9t5fqNu4Qyr4BZUD2yGxAn3E+d5/mqaI=", + "lastModified": 1729963473, + "narHash": "sha256-uGjTjvvlGQfQ0yypVP+at0NizI2nrb6kz4wGAqzRGbY=", "owner": "danth", "repo": "stylix", - "rev": "fb9399b7e2c855f42dae76a363bab28d4f24aa8d", + "rev": "04afcfc0684d9bbb24bb1dc77afda7c1843ec93b", "type": "github" }, "original": { @@ -1758,11 +1758,11 @@ ] }, "locked": { - "lastModified": 1729674499, - "narHash": "sha256-XoOT0OsjH91t3JLSV0ka8iu58zC+Q1Sd+BA7M/vt5hw=", + "lastModified": 1727524473, + "narHash": "sha256-1DGktDtSWIJpnDbVoj/qpvJSH5zg6JbOfuh6xqZMap0=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "8f8619fe032b6250b061c75fc194658fc3bcf04f", + "rev": "7e500e679ede40e79cf2d89b5f5fa3e34923bd26", "type": "github" }, "original": { From 0408d049d2307653c5bec4090787689e8977fa1f Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 1 Nov 2024 22:52:22 -0500 Subject: [PATCH 002/317] Freecad is kinda cool --- profiles/work/home.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 53ce519..dec50c5 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -118,6 +118,7 @@ mpv yt-dlp blender-hip + freecad libresprite (pkgs.appimageTools.wrapType2 { name = "Cura"; From 26162df66cd42b2ff6ab6a96ab65dc0282fe4122 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 8 Nov 2024 14:41:54 -0600 Subject: [PATCH 003/317] Updated system, fixes, culled lots of old config --- flake.lock | 753 +----- flake.nix | 79 +- patches/emacs-no-version-check.patch | 23 - patches/nixpkgs-348697.patch | 76 - patches/nixpkgs-354095.patch | 87 + profiles/nix-on-droid/configuration.nix | 3 +- profiles/nix-on-droid/home.nix | 1 - profiles/work/home.nix | 5 +- user/README.org | 4 +- user/app/doom-emacs/README.org | 23 - user/app/doom-emacs/config.el | 1642 ------------ user/app/doom-emacs/doom.nix | 148 -- user/app/doom-emacs/doom.org | 2330 ----------------- user/app/doom-emacs/init.el | 175 -- user/app/doom-emacs/nix-dark.png | Bin 57446 -> 0 bytes user/app/doom-emacs/nix-dark.webp | Bin 26946 -> 0 bytes user/app/doom-emacs/nix-light.png | Bin 48334 -> 0 bytes user/app/doom-emacs/nix-light.webp | Bin 22286 -> 0 bytes user/app/doom-emacs/packages.el | 38 - user/app/doom-emacs/pkgs/org-analyzer.nix | 24 - .../copy-link-or-file-to-clipboard.sh | 20 - .../themes/doom-stylix-theme.el.mustache | 177 -- user/app/emacsng/default.nix | 8 - user/pkgs/rogauracore.nix | 17 - user/wm/hyprland/hyprland.nix | 87 +- 25 files changed, 122 insertions(+), 5598 deletions(-) delete mode 100644 patches/emacs-no-version-check.patch delete mode 100644 patches/nixpkgs-348697.patch create mode 100644 patches/nixpkgs-354095.patch delete mode 100644 user/app/doom-emacs/README.org delete mode 100644 user/app/doom-emacs/config.el delete mode 100644 user/app/doom-emacs/doom.nix delete mode 100644 user/app/doom-emacs/doom.org delete mode 100644 user/app/doom-emacs/init.el delete mode 100644 user/app/doom-emacs/nix-dark.png delete mode 100644 user/app/doom-emacs/nix-dark.webp delete mode 100644 user/app/doom-emacs/nix-light.png delete mode 100644 user/app/doom-emacs/nix-light.webp delete mode 100644 user/app/doom-emacs/packages.el delete mode 100644 user/app/doom-emacs/pkgs/org-analyzer.nix delete mode 100755 user/app/doom-emacs/scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh delete mode 100644 user/app/doom-emacs/themes/doom-stylix-theme.el.mustache delete mode 100644 user/app/emacsng/default.nix delete mode 100644 user/pkgs/rogauracore.nix diff --git a/flake.lock b/flake.lock index 9c12db2..a295841 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1729527199, - "narHash": "sha256-D5/YksfRga8Akd04ZtIkuYSIOjXVrAzQIQBSeplokzU=", + "lastModified": 1730968822, + "narHash": "sha256-NocDjINsh6ismkhb0Xr6xPRksmhuB2WGf8ZmXMhxu7Y=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "8d732fa8aff8b12ef2b1e2f00fc8153e41312b72", + "rev": "a49bc3583ff223f426cb3526fdaa4bcaa247ec14", "type": "github" }, "original": { @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1730406687, - "narHash": "sha256-Tv85Ctg3P51UBAT6lIy5RfH335edeEKuaA5XUYcsXU8=", + "lastModified": 1731033962, + "narHash": "sha256-1LO6MzklwZ3ry3gi8ET129L7P2aRsAWOj1XeiNM6qHM=", "owner": "StevenBlack", "repo": "hosts", - "rev": "bbb43907e5ced864b3763005b0988e61104eba6a", + "rev": "a9296b0d324a66ae0a5cad3c1f3d2afcf3d09eb8", "type": "github" }, "original": { @@ -115,199 +115,6 @@ "type": "github" } }, - "doom-emacs": { - "flake": false, - "locked": { - "lastModified": 1662497747, - "narHash": "sha256-4n7E1fqda7cn5/F2jTkOnKw1juG6XMS/FI9gqODL3aU=", - "owner": "doomemacs", - "repo": "doomemacs", - "rev": "3853dff5e11655e858d0bfae64b70cb12ef685ac", - "type": "github" - }, - "original": { - "owner": "doomemacs", - "repo": "doomemacs", - "rev": "3853dff5e11655e858d0bfae64b70cb12ef685ac", - "type": "github" - } - }, - "doom-snippets": { - "flake": false, - "locked": { - "lastModified": 1694887483, - "narHash": "sha256-KlKhruPSLPSKqUnr5/U65arm16VrY9ORzm+XKNZhpTQ=", - "owner": "doomemacs", - "repo": "snippets", - "rev": "f022984ee1318a4015d5d081b3c3dab5a60dc6ff", - "type": "github" - }, - "original": { - "owner": "doomemacs", - "repo": "snippets", - "type": "github" - } - }, - "eaf": { - "flake": false, - "locked": { - "lastModified": 1728651925, - "narHash": "sha256-NQV4MXynuxjg4u9V7UGSCyavqx9DWxJCA7nm1GD0f3s=", - "owner": "emacs-eaf", - "repo": "emacs-application-framework", - "rev": "60466a72a8b0688ccded87bb25879348911f162b", - "type": "github" - }, - "original": { - "owner": "emacs-eaf", - "repo": "emacs-application-framework", - "type": "github" - } - }, - "eaf-browser": { - "flake": false, - "locked": { - "lastModified": 1715466525, - "narHash": "sha256-jcCn16lXqcq1UcekekJiTfRBjjgaY0Hkz69ycElSzuA=", - "owner": "emacs-eaf", - "repo": "eaf-browser", - "rev": "9761f7bd22aa69f144a0a032643b0834dde6cb60", - "type": "github" - }, - "original": { - "owner": "emacs-eaf", - "repo": "eaf-browser", - "type": "github" - } - }, - "emacs-overlay": { - "flake": false, - "locked": { - "lastModified": 1676366521, - "narHash": "sha256-i4UAY8t9Au9SJtsgYppa3NHSVf1YkV6yqnNIQd+Km4g=", - "owner": "nix-community", - "repo": "emacs-overlay", - "rev": "c16be6de78ea878aedd0292aa5d4a1ee0a5da501", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "emacs-overlay", - "rev": "c16be6de78ea878aedd0292aa5d4a1ee0a5da501", - "type": "github" - } - }, - "emacs-pin-nixpkgs": { - "locked": { - "lastModified": 1711731143, - "narHash": "sha256-P3rID/C2N9+emVlCr4ta0X591usRvFxqk1wON/2j+Dg=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "f72123158996b8d4449de481897d855bc47c7bf6", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "f72123158996b8d4449de481897d855bc47c7bf6", - "type": "indirect" - } - }, - "emacs-so-long": { - "flake": false, - "locked": { - "lastModified": 1575031854, - "narHash": "sha256-xIa5zO0ZaToDrec1OFjBK6l39AbA4l/CE4LInVu2hi0=", - "owner": "hlissner", - "repo": "emacs-so-long", - "rev": "ed666b0716f60e8988c455804de24b55919e71ca", - "type": "github" - }, - "original": { - "owner": "hlissner", - "repo": "emacs-so-long", - "type": "github" - } - }, - "evil-escape": { - "flake": false, - "locked": { - "lastModified": 1588439096, - "narHash": "sha256-aB2Ge5o/93B18tPf4fN1c+O46CNh/nOqwLJbox4c8Gw=", - "owner": "hlissner", - "repo": "evil-escape", - "rev": "819f1ee1cf3f69a1ae920e6004f2c0baeebbe077", - "type": "github" - }, - "original": { - "owner": "hlissner", - "repo": "evil-escape", - "type": "github" - } - }, - "evil-markdown": { - "flake": false, - "locked": { - "lastModified": 1626852210, - "narHash": "sha256-HBBuZ1VWIn6kwK5CtGIvHM1+9eiNiKPH0GUsyvpUVN8=", - "owner": "Somelauw", - "repo": "evil-markdown", - "rev": "8e6cc68af83914b2fa9fd3a3b8472573dbcef477", - "type": "github" - }, - "original": { - "owner": "Somelauw", - "repo": "evil-markdown", - "type": "github" - } - }, - "evil-org-mode": { - "flake": false, - "locked": { - "lastModified": 1607203864, - "narHash": "sha256-JxwqVYDN6OIJEH15MVI6XOZAPtUWUhJQWHyzcrUvrFg=", - "owner": "hlissner", - "repo": "evil-org-mode", - "rev": "a9706da260c45b98601bcd72b1d2c0a24a017700", - "type": "github" - }, - "original": { - "owner": "hlissner", - "repo": "evil-org-mode", - "type": "github" - } - }, - "evil-quick-diff": { - "flake": false, - "locked": { - "lastModified": 1575189609, - "narHash": "sha256-oGzl1ayW9rIuq0haoiFS7RZsS8NFMdEA7K1BSozgnJU=", - "owner": "rgrinberg", - "repo": "evil-quick-diff", - "rev": "69c883720b30a892c63bc89f49d4f0e8b8028908", - "type": "github" - }, - "original": { - "owner": "rgrinberg", - "repo": "evil-quick-diff", - "type": "github" - } - }, - "explain-pause-mode": { - "flake": false, - "locked": { - "lastModified": 1595842060, - "narHash": "sha256-++znrjiDSx+cy4okFBBXUBkRFdtnE2x+trkmqjB3Njs=", - "owner": "lastquestion", - "repo": "explain-pause-mode", - "rev": "2356c8c3639cbeeb9751744dbe737267849b4b51", - "type": "github" - }, - "original": { - "owner": "lastquestion", - "repo": "explain-pause-mode", - "type": "github" - } - }, "flake-compat": { "flake": false, "locked": { @@ -324,22 +131,6 @@ "type": "github" } }, - "flake-compat_2": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-utils": { "inputs": { "systems": "systems_3" @@ -359,24 +150,6 @@ } }, "flake-utils_2": { - "inputs": { - "systems": "systems_4" - }, - "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { "inputs": { "systems": [ "stylix", @@ -412,23 +185,6 @@ "type": "github" } }, - "format-all": { - "flake": false, - "locked": { - "lastModified": 1581716637, - "narHash": "sha256-ul7LCe60W8TIvUmUtZtZRo8489TK9iTPDsLHmzxY57M=", - "owner": "lassik", - "repo": "emacs-format-all-the-code", - "rev": "47d862d40a088ca089c92cd393c6dca4628f87d3", - "type": "github" - }, - "original": { - "owner": "lassik", - "repo": "emacs-format-all-the-code", - "rev": "47d862d40a088ca089c92cd393c6dca4628f87d3", - "type": "github" - } - }, "fromYaml": { "flake": false, "locked": { @@ -511,11 +267,11 @@ ] }, "locked": { - "lastModified": 1730490306, - "narHash": "sha256-AvCVDswOUM9D368HxYD25RsSKp+5o0L0/JHADjLoD38=", + "lastModified": 1730837930, + "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=", "owner": "nix-community", "repo": "home-manager", - "rev": "1743615b61c7285976f85b303a36cdf88a556503", + "rev": "2f607e07f3ac7e53541120536708e824acccfaa8", "type": "github" }, "original": { @@ -756,7 +512,6 @@ "locked": { "lastModified": 1725203994, "narHash": "sha256-N7Kfq8tpOWjtRKBnH5RqcDtQFGZPZ5vXgmxbnZVPCuU=", - "ref": "refs/heads/main", "rev": "73b0fc26c0e2f6f82f9d9f5b02e660a958902763", "revCount": 248, "type": "git", @@ -843,21 +598,6 @@ "type": "github" } }, - "kdenlive-pin-nixpkgs": { - "locked": { - "lastModified": 1709012981, - "narHash": "sha256-/D10ohogluwFIl5NXQxJx6ag6fuwA1KEAO8Ia5GDhhM=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "cfec6d9203a461d9d698d8a60ef003cac6d0da94", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "cfec6d9203a461d9d698d8a60ef003cac6d0da94", - "type": "indirect" - } - }, "lix": { "flake": false, "locked": { @@ -893,85 +633,6 @@ "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz" } }, - "magit-file-icons": { - "flake": false, - "locked": { - "lastModified": 1719595750, - "narHash": "sha256-n/uXppejl6js/wrvEEIKmfmCh7ssbSBMMZWYrrvG1JQ=", - "owner": "librephoenix", - "repo": "magit-file-icons", - "rev": "6c90eb03eb8a382110d862ec792ae50556bffd6e", - "type": "github" - }, - "original": { - "owner": "librephoenix", - "ref": "abstract-icon-getters-compat", - "repo": "magit-file-icons", - "type": "github" - } - }, - "mini-frame": { - "flake": false, - "locked": { - "lastModified": 1685981796, - "narHash": "sha256-HsGEu37oq2uuQFfE2m++VH1SwyGC89ChnmrBVFC/WME=", - "owner": "muffinmad", - "repo": "emacs-mini-frame", - "rev": "f420020aa33a1b00407000addd995170a36e026e", - "type": "github" - }, - "original": { - "owner": "muffinmad", - "repo": "emacs-mini-frame", - "type": "github" - } - }, - "nix-doom-emacs": { - "inputs": { - "doom-emacs": "doom-emacs", - "doom-snippets": "doom-snippets", - "emacs-overlay": "emacs-overlay", - "emacs-so-long": "emacs-so-long", - "evil-escape": "evil-escape", - "evil-markdown": "evil-markdown", - "evil-org-mode": "evil-org-mode", - "evil-quick-diff": "evil-quick-diff", - "explain-pause-mode": "explain-pause-mode", - "flake-compat": "flake-compat", - "flake-utils": "flake-utils_2", - "format-all": "format-all", - "nix-straight": [ - "nix-straight" - ], - "nixpkgs": [ - "emacs-pin-nixpkgs" - ], - "nose": "nose", - "ob-racket": "ob-racket", - "org": "org", - "org-contrib": "org-contrib", - "org-yt": "org-yt", - "php-extras": "php-extras", - "revealjs": "revealjs", - "rotate-text": "rotate-text", - "sln-mode": "sln-mode", - "ts-fold": "ts-fold", - "ws-butler": "ws-butler" - }, - "locked": { - "lastModified": 1701264882, - "narHash": "sha256-MBXR7x7Ua8qystlGr+lenwjQd7dsFNFpEFmtHhh10zM=", - "owner": "nix-community", - "repo": "nix-doom-emacs", - "rev": "f7413022370f24bb53cb450bfb2803233510113e", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nix-doom-emacs", - "type": "github" - } - }, "nix-formatter-pack": { "inputs": { "nixpkgs": [ @@ -1026,30 +687,13 @@ "type": "github" } }, - "nix-straight": { - "flake": false, - "locked": { - "lastModified": 1692033740, - "narHash": "sha256-oCd0yJiMArPr20nYVz/HGU1bmZnmiS30n9Z4MKZUHj0=", - "owner": "librephoenix", - "repo": "nix-straight.el", - "rev": "1e4a1375b04acb8a88d123a91585734410192d42", - "type": "github" - }, - "original": { - "owner": "librephoenix", - "ref": "pgtk-patch", - "repo": "nix-straight.el", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1730200266, - "narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=", + "lastModified": 1730785428, + "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd", + "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", "type": "github" }, "original": { @@ -1092,11 +736,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1730327045, - "narHash": "sha256-xKel5kd1AbExymxoIfQ7pgcX6hjw9jCgbiBjiUfSVJ8=", + "lastModified": 1730883749, + "narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "080166c15633801df010977d9d7474b4a6c549d7", + "rev": "dba414932936fde69f0606b4f1d87c5bc0003ede", "type": "github" }, "original": { @@ -1175,22 +819,6 @@ "type": "gitlab" } }, - "nose": { - "flake": false, - "locked": { - "lastModified": 1400604510, - "narHash": "sha256-daEi8Kta1oGaDEmUUDDQMahTTPOpvNpDKk22rlr7cB0=", - "owner": "emacsattic", - "repo": "nose", - "rev": "f8528297519eba911696c4e68fa88892de9a7b72", - "type": "github" - }, - "original": { - "owner": "emacsattic", - "repo": "nose", - "type": "github" - } - }, "nvchad": { "flake": false, "locked": { @@ -1207,306 +835,34 @@ "type": "github" } }, - "nwg-dock-hyprland-pin-nixpkgs": { - "locked": { - "lastModified": 1716385560, - "narHash": "sha256-xuFXyvvrDXx5A56uo8D+YmHqsmPscsjBh279P44Z5bE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "2098d845d76f8a21ae4fe12ed7c7df49098d3f15", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "2098d845d76f8a21ae4fe12ed7c7df49098d3f15", - "type": "indirect" - } - }, - "ob-racket": { - "flake": false, - "locked": { - "lastModified": 1584656173, - "narHash": "sha256-rBUYDDCXb+3D4xTPQo9UocbTPZ32kWV1Uya/1DmZknU=", - "owner": "xchrishawk", - "repo": "ob-racket", - "rev": "83457ec9e1e96a29fd2086ed19432b9d75787673", - "type": "github" - }, - "original": { - "owner": "xchrishawk", - "repo": "ob-racket", - "type": "github" - } - }, - "org": { - "flake": false, - "locked": { - "lastModified": 1695726851, - "narHash": "sha256-qgbjspklSoI8M3cbCJOcUdjuijRgsL/+PSyEOW9VX4I=", - "owner": "emacs-straight", - "repo": "org-mode", - "rev": "aa9177e1a8b039c357d369c1c9aaab710bb247a9", - "type": "github" - }, - "original": { - "owner": "emacs-straight", - "repo": "org-mode", - "type": "github" - } - }, - "org-contrib": { - "flake": false, - "locked": { - "lastModified": 1694946041, - "narHash": "sha256-X/HFG6NZe5BY00KvGbcsIuf9R6Lg8x7Uhd0Y5+Q3qZU=", - "owner": "emacsmirror", - "repo": "org-contrib", - "rev": "5eabbf22bdd4523c922a30787e98ee66c24221aa", - "type": "github" - }, - "original": { - "owner": "emacsmirror", - "repo": "org-contrib", - "type": "github" - } - }, - "org-krita": { - "flake": false, - "locked": { - "lastModified": 1713038273, - "narHash": "sha256-ZoigcRMetn2ZY9uvcR3iLnPsf9ys2rHuUD9yv3+u7KM=", - "owner": "librephoenix", - "repo": "org-krita", - "rev": "9a1d917d2ee0fb7d2403186a0e6a15e23089c9fb", - "type": "github" - }, - "original": { - "owner": "librephoenix", - "repo": "org-krita", - "type": "github" - } - }, - "org-nursery": { - "flake": false, - "locked": { - "lastModified": 1714726259, - "narHash": "sha256-x+/TTSdHzQ+GKHV6jgvoQrwZCH4cZQfQGKDIBzFbJRw=", - "owner": "chrisbarrett", - "repo": "nursery", - "rev": "00a169c75b934a2eb42ea8620e8eebf34577d4ca", - "type": "github" - }, - "original": { - "owner": "chrisbarrett", - "repo": "nursery", - "type": "github" - } - }, - "org-side-tree": { - "flake": false, - "locked": { - "lastModified": 1717236106, - "narHash": "sha256-b30Yl378DaRQl8DAsAaeyf+WYz0y7L5h0EsbBQGvdjE=", - "owner": "localauthor", - "repo": "org-side-tree", - "rev": "e8da5217ce23440a62f4a46ef60e2082b6284b28", - "type": "github" - }, - "original": { - "owner": "localauthor", - "repo": "org-side-tree", - "type": "github" - } - }, - "org-sliced-images": { - "flake": false, - "locked": { - "lastModified": 1719203338, - "narHash": "sha256-wi8G6AHWWbAFBPGsZSSOVIOBqrzfdOhzgTfUNe4fAEc=", - "owner": "jcfk", - "repo": "org-sliced-images", - "rev": "b98b88a55eff07e998e7789e0bf7307dd71db050", - "type": "github" - }, - "original": { - "owner": "jcfk", - "repo": "org-sliced-images", - "type": "github" - } - }, - "org-timeblock": { - "flake": false, - "locked": { - "lastModified": 1730016337, - "narHash": "sha256-NOc45zpfvia61YpLiggP/YgJeLttNAd/Cdeh1CfxGdw=", - "owner": "ichernyshovvv", - "repo": "org-timeblock", - "rev": "e61e5734b49f933ed178029f804a0499f3308e1e", - "type": "github" - }, - "original": { - "owner": "ichernyshovvv", - "repo": "org-timeblock", - "type": "github" - } - }, - "org-xournalpp": { - "flake": false, - "locked": { - "lastModified": 1625233179, - "narHash": "sha256-c0AYWMkBb7wdl7SWTffjWSXwXbq1PGov2vT8A1pdqpQ=", - "owner": "vherrmann", - "repo": "org-xournalpp", - "rev": "c09bd8b99d36c355d632b85ecbffb3b275802381", - "type": "gitlab" - }, - "original": { - "owner": "vherrmann", - "repo": "org-xournalpp", - "type": "gitlab" - } - }, - "org-yaap": { - "flake": false, - "locked": { - "lastModified": 1711640914, - "narHash": "sha256-eWoRaE10QPOPeE0TnHBn3o+Hz6fX0yDZnfrqVlj1De8=", - "owner": "tygrdev", - "repo": "org-yaap", - "rev": "fcf675382d914f369591052ddb8440cfc714ce74", - "type": "gitlab" - }, - "original": { - "owner": "tygrdev", - "repo": "org-yaap", - "type": "gitlab" - } - }, - "org-yt": { - "flake": false, - "locked": { - "lastModified": 1527381913, - "narHash": "sha256-dzQ6B7ryzatHCTLyEnRSbWO0VUiX/FHYnpHTs74aVUs=", - "owner": "TobiasZawada", - "repo": "org-yt", - "rev": "40cc1ac76d741055cbefa13860d9f070a7ade001", - "type": "github" - }, - "original": { - "owner": "TobiasZawada", - "repo": "org-yt", - "type": "github" - } - }, - "php-extras": { - "flake": false, - "locked": { - "lastModified": 1573312690, - "narHash": "sha256-r4WyVbzvT0ra4Z6JywNBOw5RxOEYd6Qe2IpebHXkj1U=", - "owner": "arnested", - "repo": "php-extras", - "rev": "d410c5af663c30c01d461ac476d1cbfbacb49367", - "type": "github" - }, - "original": { - "owner": "arnested", - "repo": "php-extras", - "type": "github" - } - }, - "phscroll": { - "flake": false, - "locked": { - "lastModified": 1697087101, - "narHash": "sha256-LklBCgDYnC1SF2MD5LDI/CoQVSWlmrG83JGa155z4DI=", - "owner": "misohena", - "repo": "phscroll", - "rev": "582abedb4cf6aba216cdb5fe7217d612a1d68d5a", - "type": "github" - }, - "original": { - "owner": "misohena", - "repo": "phscroll", - "type": "github" - } - }, - "revealjs": { - "flake": false, - "locked": { - "lastModified": 1695738029, - "narHash": "sha256-Z9c9Q41jMkj/DyXOiZYyIa7Gmn8VB8yauTyWrSsT+ps=", - "owner": "hakimel", - "repo": "reveal.js", - "rev": "88fbfc5751ad01e3f6adee5819eabeb9e73c3757", - "type": "github" - }, - "original": { - "owner": "hakimel", - "repo": "reveal.js", - "type": "github" - } - }, "root": { "inputs": { "blocklist-hosts": "blocklist-hosts", - "eaf": "eaf", - "eaf-browser": "eaf-browser", - "emacs-pin-nixpkgs": "emacs-pin-nixpkgs", "home-manager-stable": "home-manager-stable", "home-manager-unstable": "home-manager-unstable", "hyprgrass": "hyprgrass", "hyprland": "hyprland", "hyprland-plugins": "hyprland-plugins", "hyprlock": "hyprlock", - "kdenlive-pin-nixpkgs": "kdenlive-pin-nixpkgs", "lix-module": "lix-module", - "magit-file-icons": "magit-file-icons", - "mini-frame": "mini-frame", - "nix-doom-emacs": "nix-doom-emacs", "nix-on-droid": "nix-on-droid", - "nix-straight": "nix-straight", "nixpkgs": "nixpkgs", "nixpkgs-stable": "nixpkgs-stable", "nvchad": "nvchad", - "nwg-dock-hyprland-pin-nixpkgs": "nwg-dock-hyprland-pin-nixpkgs", - "org-krita": "org-krita", - "org-nursery": "org-nursery", - "org-side-tree": "org-side-tree", - "org-sliced-images": "org-sliced-images", - "org-timeblock": "org-timeblock", - "org-xournalpp": "org-xournalpp", - "org-yaap": "org-yaap", - "phscroll": "phscroll", "rust-overlay": "rust-overlay", "stylix": "stylix" } }, - "rotate-text": { - "flake": false, - "locked": { - "lastModified": 1322962747, - "narHash": "sha256-SOeOgSlcEIsKhUiYDJv0p+mLUb420s9E2BmvZQvZ0wk=", - "owner": "debug-ito", - "repo": "rotate-text.el", - "rev": "48f193697db996855aee1ad2bc99b38c6646fe76", - "type": "github" - }, - "original": { - "owner": "debug-ito", - "repo": "rotate-text.el", - "type": "github" - } - }, "rust-overlay": { "inputs": { "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1730428392, - "narHash": "sha256-2aRfq1P0usr+TlW9LUCoefqqpPum873ac0TgZzXYHKI=", + "lastModified": 1731032894, + "narHash": "sha256-dQSyYPmrQiPr+PGEd+K8038rubFGz7G/dNXVeaGWE0w=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "17eda17f5596a84e92ba94160139eb70f3c3e734", + "rev": "d52f2a4c103a0acf09ded857b9e2519ae2360e59", "type": "github" }, "original": { @@ -1531,44 +887,28 @@ "type": "github" } }, - "sln-mode": { - "flake": false, - "locked": { - "lastModified": 1423727528, - "narHash": "sha256-XqkqPyEJuTtFslOz1fpTf/Klbd/zA7IGpzpmum/MGao=", - "owner": "sensorflo", - "repo": "sln-mode", - "rev": "0f91d1b957c7d2a7bab9278ec57b54d57f1dbd9c", - "type": "github" - }, - "original": { - "owner": "sensorflo", - "repo": "sln-mode", - "type": "github" - } - }, "stylix": { "inputs": { "base16": "base16", "base16-fish": "base16-fish", "base16-helix": "base16-helix", "base16-vim": "base16-vim", - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_3", + "flake-compat": "flake-compat", + "flake-utils": "flake-utils_2", "gnome-shell": "gnome-shell", "home-manager": "home-manager", "nixpkgs": "nixpkgs_3", - "systems": "systems_5", + "systems": "systems_4", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-tmux": "tinted-tmux" }, "locked": { - "lastModified": 1729963473, + "lastModified": 1731002033, "narHash": "sha256-uGjTjvvlGQfQ0yypVP+at0NizI2nrb6kz4wGAqzRGbY=", "owner": "danth", "repo": "stylix", - "rev": "04afcfc0684d9bbb24bb1dc77afda7c1843ec93b", + "rev": "f71c2effed1ce4f9fbeefe402e4e431428ffe93a", "type": "github" }, "original": { @@ -1637,21 +977,6 @@ "type": "github" } }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "tinted-foot": { "flake": false, "locked": { @@ -1701,38 +1026,6 @@ "type": "github" } }, - "ts-fold": { - "flake": false, - "locked": { - "lastModified": 1695278494, - "narHash": "sha256-O4NcUC1u08W8ZslqoA/i+iTaLotKwheURXQWBxLLMFc=", - "owner": "jcs-elpa", - "repo": "ts-fold", - "rev": "70b2c79ff4daa7351d4e2917b0343b9a18d4d4f2", - "type": "github" - }, - "original": { - "owner": "jcs-elpa", - "repo": "ts-fold", - "type": "github" - } - }, - "ws-butler": { - "flake": false, - "locked": { - "lastModified": 1634511126, - "narHash": "sha256-c0y0ZPtxxICPk+eaNbbQf6t+FRCliNY54CCz9QHQ8ZI=", - "owner": "hlissner", - "repo": "ws-butler", - "rev": "572a10c11b6cb88293de48acbb59a059d36f9ba5", - "type": "github" - }, - "original": { - "owner": "hlissner", - "repo": "ws-butler", - "type": "github" - } - }, "xdph": { "inputs": { "hyprland-protocols": "hyprland-protocols_2", diff --git a/flake.nix b/flake.nix index cd4b3bc..6fe8cad 100644 --- a/flake.nix +++ b/flake.nix @@ -56,9 +56,7 @@ (import inputs.nixpkgs { system = systemSettings.system; rocmSupport = (if systemSettings.gpu == "amd" then true else false); }).applyPatches { name = "nixpkgs-patched"; src = inputs.nixpkgs; - patches = [ #./patches/emacs-no-version-check.patch - #./patches/nixpkgs-348697.patch - ]; + patches = [ ./patches/nixpkgs-354095.patch ]; }; # configure pkgs @@ -94,18 +92,6 @@ overlays = [ inputs.rust-overlay.overlays.default ]; }; - pkgs-emacs = import inputs.emacs-pin-nixpkgs { - system = systemSettings.system; - }; - - pkgs-kdenlive = import inputs.kdenlive-pin-nixpkgs { - system = systemSettings.system; - }; - - pkgs-nwg-dock-hyprland = import inputs.nwg-dock-hyprland-pin-nixpkgs { - system = systemSettings.system; - }; - # configure lib # use nixpkgs if running a server (homelab or worklab profile) # otherwise use patched nixos-unstable nixpkgs @@ -143,9 +129,6 @@ extraSpecialArgs = { # pass config variables from above inherit pkgs-stable; - inherit pkgs-emacs; - inherit pkgs-kdenlive; - inherit pkgs-nwg-dock-hyprland; inherit systemSettings; inherit userSettings; inherit inputs; @@ -177,7 +160,6 @@ extraSpecialArgs = { # pass config variables from above inherit pkgs-stable; - inherit pkgs-emacs; inherit systemSettings; inherit userSettings; inherit inputs; @@ -213,9 +195,6 @@ }; nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs-stable.url = "nixpkgs/nixos-24.05"; - emacs-pin-nixpkgs.url = "nixpkgs/f72123158996b8d4449de481897d855bc47c7bf6"; - kdenlive-pin-nixpkgs.url = "nixpkgs/cfec6d9203a461d9d698d8a60ef003cac6d0da94"; - nwg-dock-hyprland-pin-nixpkgs.url = "nixpkgs/2098d845d76f8a21ae4fe12ed7c7df49098d3f15"; home-manager-unstable.url = "github:nix-community/home-manager/master"; home-manager-unstable.inputs.nixpkgs.follows = "nixpkgs"; @@ -248,67 +227,11 @@ hyprgrass.url = "github:horriblename/hyprgrass/427690aec574fec75f5b7b800ac4a0b4c8e4b1d5"; hyprgrass.inputs.hyprland.follows = "hyprland"; - nix-doom-emacs.url = "github:nix-community/nix-doom-emacs"; - nix-doom-emacs.inputs.nixpkgs.follows = "emacs-pin-nixpkgs"; - - nix-straight.url = "github:librephoenix/nix-straight.el/pgtk-patch"; - nix-straight.flake = false; - nix-doom-emacs.inputs.nix-straight.follows = "nix-straight"; - nvchad = { url = "github:NvChad/starter"; flake = false; }; - eaf = { - url = "github:emacs-eaf/emacs-application-framework"; - flake = false; - }; - eaf-browser = { - url = "github:emacs-eaf/eaf-browser"; - flake = false; - }; - org-nursery = { - url = "github:chrisbarrett/nursery"; - flake = false; - }; - org-yaap = { - url = "gitlab:tygrdev/org-yaap"; - flake = false; - }; - org-side-tree = { - url = "github:localauthor/org-side-tree"; - flake = false; - }; - org-timeblock = { - url = "github:ichernyshovvv/org-timeblock"; - flake = false; - }; - org-krita = { - url = "github:librephoenix/org-krita"; - flake = false; - }; - org-xournalpp = { - url = "gitlab:vherrmann/org-xournalpp"; - flake = false; - }; - org-sliced-images = { - url = "github:jcfk/org-sliced-images"; - flake = false; - }; - magit-file-icons = { - url = "github:librephoenix/magit-file-icons/abstract-icon-getters-compat"; - flake = false; - }; - phscroll = { - url = "github:misohena/phscroll"; - flake = false; - }; - mini-frame = { - url = "github:muffinmad/emacs-mini-frame"; - flake = false; - }; - stylix.url = "github:danth/stylix"; rust-overlay.url = "github:oxalica/rust-overlay"; diff --git a/patches/emacs-no-version-check.patch b/patches/emacs-no-version-check.patch deleted file mode 100644 index 5e66bd0..0000000 --- a/patches/emacs-no-version-check.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/pkgs/applications/editors/emacs/build-support/generic.nix b/pkgs/applications/editors/emacs/build-support/generic.nix -index 3ff10ee86..56d03b6e6 100644 ---- a/pkgs/applications/editors/emacs/build-support/generic.nix -+++ b/pkgs/applications/editors/emacs/build-support/generic.nix -@@ -25,7 +25,8 @@ in - - libBuildHelper.extendMkDerivation' stdenv.mkDerivation (finalAttrs: - --{ buildInputs ? [] -+{ version ? null -+, buildInputs ? [] - , nativeBuildInputs ? [] - , packageRequires ? [] - , propagatedBuildInputs ? [] -@@ -38,7 +39,7 @@ libBuildHelper.extendMkDerivation' stdenv.mkDerivation (finalAttrs: - }@args: - - { -- name = args.name or "emacs-${finalAttrs.pname}-${finalAttrs.version}"; -+ name = args.name or "emacs-${finalAttrs.pname}${lib.optionalString (version != null) "-${version}"}"; - - unpackCmd = args.unpackCmd or '' - case "$curSrc" in diff --git a/patches/nixpkgs-348697.patch b/patches/nixpkgs-348697.patch deleted file mode 100644 index b0494ac..0000000 --- a/patches/nixpkgs-348697.patch +++ /dev/null @@ -1,76 +0,0 @@ -diff --git a/pkgs/development/python-modules/pyqt/6.x.nix b/pkgs/development/python-modules/pyqt/6.x.nix -index 9f031347d354e..6356eeb9637f0 100644 ---- a/pkgs/development/python-modules/pyqt/6.x.nix -+++ b/pkgs/development/python-modules/pyqt/6.x.nix -@@ -25,17 +25,15 @@ - - buildPythonPackage rec { - pname = "pyqt6"; -- version = "6.7.0.dev2404081550"; -+ version = "6.8.0.dev2410141303"; - format = "pyproject"; - - disabled = pythonOlder "3.6"; - -+ # This is dangerous, how can we get web archive to archive the URL? - src = fetchurl { -- urls = [ -- "https://riverbankcomputing.com/pypi/packages/PyQt6/PyQt6-${version}.tar.gz" -- "http://web.archive.org/web/20240411124842if_/https://riverbankcomputing.com/pypi/packages/PyQt6/PyQt6-${version}.tar.gz" -- ]; -- hash = "sha256-H5qZ/rnruGh+UVSXLZyTSvjagmmli/iYq+7BaIzl1YQ="; -+ url = "https://riverbankcomputing.com/pypi/packages/PyQt6/PyQt6-${version}.tar.gz"; -+ hash = "sha256-eHYqj22us07uFkErJD2d0y0wueZxtQTwTFW9cI7yoK4="; - }; - - patches = [ -@@ -55,8 +53,11 @@ buildPythonPackage rec { - verbose = true - EOF - -+ # pythonRelaxDeps doesn't work and the wanted versions are not released AFAIK - substituteInPlace pyproject.toml \ -- --replace-fail 'version = "${version}"' 'version = "${lib.versions.pad 3 version}"' -+ --replace-fail 'version = "${version}"' 'version = "${lib.versions.pad 3 version}"' \ -+ --replace-fail "sip >=6.9, <7" "sip >=6.8.6, <7" \ -+ --replace-fail 'PyQt-builder >=1.17, <2' "PyQt-builder >=1.16, <2" - ''; - - enableParallelBuilding = true; -diff --git a/pkgs/development/python-modules/sip/default.nix b/pkgs/development/python-modules/sip/default.nix -index 8a398654b08ce..8fd6240e4a512 100644 ---- a/pkgs/development/python-modules/sip/default.nix -+++ b/pkgs/development/python-modules/sip/default.nix -@@ -4,6 +4,7 @@ - fetchPypi, - pythonOlder, - setuptools, -+ setuptools-scm, - packaging, - tomli, - -@@ -15,17 +16,20 @@ - - buildPythonPackage rec { - pname = "sip"; -- version = "6.8.3"; -+ version = "6.8.6"; - pyproject = true; - - src = fetchPypi { - inherit pname version; -- hash = "sha256-iIVHsBi7JMNq3tUZ6T0+UT1MaqC6VbfMGv+9Rc8Qdiw="; -+ hash = "sha256-f8lZ5I5uxdWvi9Am9p9eJNCLPLirs0IXb1q4AwzAfXo="; - }; - -- nativeBuildInputs = [ setuptools ]; -+ build-system = [ -+ setuptools -+ setuptools-scm -+ ]; - -- propagatedBuildInputs = [ -+ dependencies = [ - packaging - setuptools - ] ++ lib.optionals (pythonOlder "3.11") [ tomli ]; diff --git a/patches/nixpkgs-354095.patch b/patches/nixpkgs-354095.patch new file mode 100644 index 0000000..3d01906 --- /dev/null +++ b/patches/nixpkgs-354095.patch @@ -0,0 +1,87 @@ +From 13af81da96c4b706e3262f1424d1d26b3db315d1 Mon Sep 17 00:00:00 2001 +From: Andrew Marshall +Date: Wed, 6 Nov 2024 17:24:11 -0500 +Subject: [PATCH 1/2] openvdb_11: init at 11.0.0 + +There are many breaking changes in v12, which some consumers are not +ready for and would require complex changes. This is expected to go away +once it becomes unused in nixpkgs. +--- + pkgs/development/libraries/openvdb/11.nix | 19 +++++++++++++++++++ + pkgs/top-level/all-packages.nix | 1 + + 2 files changed, 20 insertions(+) + create mode 100644 pkgs/development/libraries/openvdb/11.nix + +diff --git a/pkgs/development/libraries/openvdb/11.nix b/pkgs/development/libraries/openvdb/11.nix +new file mode 100644 +index 0000000000000..a65bb286ae2e2 +--- /dev/null ++++ b/pkgs/development/libraries/openvdb/11.nix +@@ -0,0 +1,19 @@ ++{ ++ lib, ++ fetchFromGitHub, ++ openvdb, ++}: ++ ++openvdb.overrideAttrs (old: rec { ++ name = "${old.pname}-${version}"; ++ version = "11.0.0"; ++ src = fetchFromGitHub { ++ owner = "AcademySoftwareFoundation"; ++ repo = "openvdb"; ++ rev = "v${version}"; ++ sha256 = "sha256-wDDjX0nKZ4/DIbEX33PoxR43dJDj2NF3fm+Egug62GQ="; ++ }; ++ meta = old.meta // { ++ license = lib.licenses.mpl20; ++ }; ++}) +diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix +index 55968eed13554..428a42210da40 100644 +--- a/pkgs/top-level/all-packages.nix ++++ b/pkgs/top-level/all-packages.nix +@@ -22214,6 +22214,7 @@ with pkgs; + zunclient = with python311Packages; toPythonApplication python-zunclient; + + openvdb = callPackage ../development/libraries/openvdb { }; ++ openvdb_11 = callPackage ../development/libraries/openvdb/11.nix { }; + + openvr = callPackage ../by-name/op/openvr/package.nix { + inherit (darwin.apple_sdk.frameworks) Foundation AppKit; + +From 33e09c6eea89ae1d1145f2f4527f98fd7b87865b Mon Sep 17 00:00:00 2001 +From: Andrew Marshall +Date: Wed, 6 Nov 2024 17:25:29 -0500 +Subject: [PATCH 2/2] blender: fix build by using openvdb_11 + +openvdb is now v12, and has many breaking API changes. Upstream has not +yet adapted to them yet, so there is no patch to backport. Further, +OpenVDB 12 is not currently part of the anticipated upstream library +updates for Blender 4.3 or 4.4. +--- + pkgs/applications/misc/blender/default.nix | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix +index 7d89339da1026..e2af0b3f93384 100644 +--- a/pkgs/applications/misc/blender/default.nix ++++ b/pkgs/applications/misc/blender/default.nix +@@ -64,7 +64,7 @@ + openjpeg, + openpgl, + opensubdiv, +- openvdb, ++ openvdb_11, + openxr-loader, + pkg-config, + potrace, +@@ -276,7 +276,7 @@ stdenv.mkDerivation (finalAttrs: { + openjpeg + openpgl + (opensubdiv.override { inherit cudaSupport; }) +- openvdb ++ openvdb_11 + potrace + pugixml + python3 diff --git a/profiles/nix-on-droid/configuration.nix b/profiles/nix-on-droid/configuration.nix index 9ca3597..ad9ed92 100644 --- a/profiles/nix-on-droid/configuration.nix +++ b/profiles/nix-on-droid/configuration.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, pkgs-stable, pkgs-emacs, systemSettings, userSettings, inputs, ... }: +{ config, lib, pkgs, pkgs-stable, systemSettings, userSettings, inputs, ... }: { # Simply install just the packages @@ -51,7 +51,6 @@ extraSpecialArgs = { # pass config variables from above inherit pkgs-stable; - inherit pkgs-emacs; inherit systemSettings; inherit userSettings; inherit inputs; diff --git a/profiles/nix-on-droid/home.nix b/profiles/nix-on-droid/home.nix index 65aea7a..c2f896c 100644 --- a/profiles/nix-on-droid/home.nix +++ b/profiles/nix-on-droid/home.nix @@ -6,7 +6,6 @@ imports = [ ../../user/shell/sh.nix # My zsh and bash config ../../user/shell/cli-collection.nix # Useful CLI apps - ../../user/app/doom-emacs/doom.nix # My doom emacs config ../../user/app/ranger/ranger.nix # My ranger file manager config ../../user/app/git/git.nix # My git config ../../user/style/stylix.nix # Styling and themes for my apps diff --git a/profiles/work/home.nix b/profiles/work/home.nix index dec50c5..32e137e 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -1,4 +1,4 @@ -{ config, pkgs, pkgs-stable, pkgs-kdenlive, userSettings, ... }: +{ config, pkgs, pkgs-stable, userSettings, ... }: { # Home Manager needs a bit of information about you and the paths it should @@ -12,9 +12,7 @@ (./. + "../../../user/wm"+("/"+userSettings.wm+"/"+userSettings.wm)+".nix") # My window manager selected from flake ../../user/shell/sh.nix # My zsh and bash config ../../user/shell/cli-collection.nix # Useful CLI apps - #../../user/app/doom-emacs/doom.nix # My doom emacs config ../../user/app/nvim/nvim.nix # My doom emacs config - #../../user/app/emacsng # Me experimenting with emacsng and a vanilla config ../../user/app/ranger/ranger.nix # My ranger file manager config ../../user/app/git/git.nix # My git config ../../user/app/keepass/keepass.nix # My password manager @@ -24,7 +22,6 @@ ../../user/style/stylix.nix # Styling and themes for my apps ../../user/lang/cc/cc.nix # C and C++ tools ../../user/lang/godot/godot.nix # Game development - #../../user/pkgs/blockbench.nix # Blockbench ## marked as insecure ../../user/hardware/bluetooth.nix # Bluetooth ]; diff --git a/user/README.org b/user/README.org index d6e1a6e..cf24b50 100644 --- a/user/README.org +++ b/user/README.org @@ -42,6 +42,6 @@ I use this to pass a few attribute sets: - =userSettings= - Settings for the normal user (see [[../flake.nix][flake.nix]] for more details) - =systemSettings= - Settings for the system (see [[../flake.nix][flake.nix]] for more details) - =inputs= - Flake inputs (see [[../flake.nix][flake.nix]] for more details) +- =pkgs= - Set to unstable for client devices and stable for server devices - =pkgs-stable= - Allows me to include stable versions of packages along with (my default) unstable versions of packages -- =pkgs-emacs= - Pinned version of nixpkgs I use for Emacs and its dependencies -- =pkgs-kdenlive= - Pinned version of nixpkgs I use for kdenlive +- =pkgs-unstable= - Allows me to force unstable versions of packages on server devices diff --git a/user/app/doom-emacs/README.org b/user/app/doom-emacs/README.org deleted file mode 100644 index d8dde8c..0000000 --- a/user/app/doom-emacs/README.org +++ /dev/null @@ -1,23 +0,0 @@ -#+title: Doom Emacs - -* What is Doom Emacs? -[[https://github.com/doomemacs/doomemacs][Doom Emacs]] is a distribution of the [[https://www.gnu.org/software/emacs/][Emacs Text Editor]] designed for [[https://www.vim.org/][Vim]] users. I like to use Emacs due to its extensibility and extra features it is capable of (besides text editing). Some of these extra features include: -- [[https://orgmode.org/][Org Mode]] (Hierarchical text-based document format) -- [[https://www.orgroam.com/][Org Roam]] (A second brain / personal wiki) -- [[https://orgmode.org/][Org Agenda]] (Calendar and todo list) -- [[https://magit.vc/][magit]] (Git Client) - -[[https://raw.githubusercontent.com/librephoenix/nixos-config-screenshots/main/app/doom.png]] - -I have found Emacs to be incredibly efficient, and transferring my workflow to fit inside of Emacs has allowed me to get much more work done. I primarily use Emacs for writing, note-taking, task/project management and organizing information. - -* My Config -This directory includes my Doom Emacs configuration, which consists of: -- [[./config.el][config.el]] - Main configuration -- [[./init.el][init.el]] - Doom modules (easy sets of packages curated by Doom) -- [[./packages.el][packages.el]] - Additional packages from Melpa (Emacs package manager). -- [[./themes/doom-stylix-theme.el.mustache][doom-stylix-theme.el.mustache]] - Mustache Doom Emacs template to be used with stylix, requires my [[../../style/stylix.nix][stylix.nix module]] as well -- [[./doom.nix][doom.nix]] - Loads Nix Doom Emacs and my configuration into my flake when imported -- A few other [[./scripts][random scripts]] - -My full config is a [[./doom.org][literate org document (doom.org)]]. diff --git a/user/app/doom-emacs/config.el b/user/app/doom-emacs/config.el deleted file mode 100644 index 91ba209..0000000 --- a/user/app/doom-emacs/config.el +++ /dev/null @@ -1,1642 +0,0 @@ -;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- - -;;;------ User configuration ------;;; -(setq use-package-always-defer t) - -;; Import relevant system variables from flake (see doom.nix) -;; includes variables like user-full-name, user-username, user-home-directory, user-email-address, doom-font, -;; and a few other custom variables I use later -(load! "~/.emacs.d/system-vars.el") -;; custom variables include: -;; dotfiles-dir, absolute path to home directory -;; user-default-roam-dir, name of default org-roam directory for the machine (relative to ~/Org) -;; system-nix-profile, profile selected from my dotfiles ("personal" "work" "wsl" etc...) -;; system-wm-type, wayland or x11? only should be considered if system-nix-profile is "personal" or "work" - -;; I prefer visual lines -(setq display-line-numbers-type 'visual - line-move-visual t) -(use-package-hook! evil - :pre-init - (setq evil-respect-visual-line-mode t) ;; sane j and k behavior - t) - -;; I also like evil mode visual movement -(map! :map evil-normal-state-map - :desc "Move to next visual line" - "j" 'evil-next-visual-line - :desc "Move to previous visual line" - "k" 'evil-previous-visual-line) - -;; Theme -(setq custom-theme-directory "~/.emacs.d/themes") -(setq doom-theme 'doom-stylix) -;; +unicode-init-fonts-h often errors out -(remove-hook 'doom-init-ui-hook '+unicode-init-fonts-h) - -;; Transparent background -(if (string= system-nix-profile "wsl") - ;; Can't be that tranparent under wsl because no blur - (funcall (lambda () - (set-frame-parameter nil 'alpha-background 98) - (add-to-list 'default-frame-alist '(alpha-background . 98)) - )) - ;; On Linux I can enable blur, however - (funcall (lambda () - (set-frame-parameter nil 'alpha-background 85) - (add-to-list 'default-frame-alist '(alpha-background . 85)) - )) -) - -(add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) - -;; Icons in completion buffers -(add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup) -(all-the-icons-completion-mode) - -;; Grammar tasing should be voluntary -(setq writegood-mode nil) - -;; Beacon shows where the cursor is, even when fast scrolling -(setq beacon-mode t) - -(setq company-idle-delay 0.05) - -;; Quicker window management keybindings -(bind-key* "C-j" #'evil-window-down) -(bind-key* "C-k" #'evil-window-up) -(bind-key* "C-h" #'evil-window-left) -(bind-key* "C-l" #'evil-window-right) -(bind-key* "C-q" #'evil-window-delete) -(bind-key* "M-q" #'kill-current-buffer) -(bind-key* "M-w" #'+workspace/close-window-or-workspace) -(bind-key* "M-n" #'next-buffer) -(bind-key* "M-p" #'previous-buffer) -(bind-key* "M-z" #'+vterm/toggle) -(bind-key* "M-e" #'+eshell/toggle) -(bind-key* (kbd "M-") #'+vterm/here) -(bind-key* (kbd "M-E") #'+eshell/here) - -;; Buffer management -(bind-key* "" #'next-buffer) -(bind-key* "" #'previous-buffer) - -;; Disables custom.el -(setq custom-file null-device) - -;; emacs-dashboard setup -(require 'all-the-icons) -(require 'dashboard) -(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*")) - doom-fallback-buffer-name "*dashboard*") -(setq image-scaling-factor 1) - -;; emacs-dashboard variables -(setq dashboard-banner-logo-title "Welcome to Nix Doom Emacs") -(setq dashboard-startup-banner "~/.emacs.d/dashboard-logo.webp") -(setq dashboard-icon-type 'all-the-icons) ;; use `all-the-icons' package -(setq dashboard-set-heading-icons t) -(setq dashboard-set-file-icons t) -(setq dashboard-set-navigator t) -(setq dashboard-items '()) -(setq dashboard-center-content t) -(setq dashboard-footer-messages '("Here to do customizing, or actual work?" - "M-x insert-inspiring-message" - "My software never has bugs. It just develops random features." - "Dad, what are clouds made of? Linux servers, mostly." - "There is no place like ~" - "~ sweet ~" - "sudo chown -R us ./allyourbase" - "I’ll tell you a DNS joke but it could take 24 hours for everyone to get it." - "I'd tell you a UDP joke, but you might not get it." - "I'll tell you a TCP joke. Do you want to hear it?")) - -;; Remove basic evil input and cursors from dashboard -(defun disable-cursor() - (setq-local evil-normal-state-cursor '(bar . 0)) - (hl-line-mode -1) -) -(add-hook 'dashboard-mode-hook 'disable-cursor) -(evil-define-key 'normal dashboard-mode-map - "j" 'evil-normal-state - "k" 'evil-normal-state - "h" 'evil-normal-state - "l" 'evil-normal-state) -(setq dashboard-navigator-buttons - `(;; line1 - ( (,"Roam" "" "" (lambda (&rest _)) 'org-formula) - (,(all-the-icons-octicon "globe" :height 1.0 :v-adjust 0.0) - "Notes overview" "" (lambda (&rest _) (org-roam-default-overview)) 'org-formula) - (,(all-the-icons-fileicon "org" :height 1.0 :v-adjust 0.0) - "Switch roam db" "" (lambda (&rest _) (org-roam-switch-db)) 'org-formula) - ) - ;; line 2 - ( (,"Git" "" "" (lambda (&rest _)) 'diredfl-exec-priv) - (,(all-the-icons-octicon "mark-github" :height 1.0 :v-adjust 0.0) - "GitHub" "" (lambda (&rest _) (browse-url "https://github.com/librephoenix")) 'diredfl-exec-priv) - (,(all-the-icons-faicon "gitlab" :height 1.0 :v-adjust 0.0) - "GitLab" "" (lambda (&rest _) (browse-url "https://gitlab.com/librephoenix")) 'diredfl-exec-priv) - (,(all-the-icons-faicon "coffee" :height 1.0 :v-adjust 0.0) - "Gitea" "" (lambda (&rest _) (browse-url my-gitea-domain)) 'diredfl-exec-priv) - (,(all-the-icons-octicon "triangle-up" :height 1.2 :v-adjust -0.1) - "Codeberg" "" (lambda (&rest _) (browse-url "https://codeberg.org/librephoenix")) 'diredfl-exec-priv) - ) - ;; line 3 - ( (,"Agenda" "" "" (lambda (&rest _)) 'dired-warning) - (,(all-the-icons-octicon "checklist" :height 1.0 :v-adjust 0.0) - "Agenda todos" "" (lambda (&rest _) (org-agenda-list)) 'dired-warning) - (,(all-the-icons-octicon "calendar" :height 1.0 :v-adjust 0.0) - "Agenda calendar" "" (lambda (&rest _) (cfw:open-org-calendar)) 'dired-warning) - ) - ;; line 4 - ( (,"Config" "" "" (lambda (&rest _)) 'dired-mark) - (,(all-the-icons-faicon "cogs" :height 1.0 :v-adjust 0.0) - "System config" "" (lambda (&rest _) (projectile-switch-project-by-name "~/.dotfiles" t)) 'dired-mark) - (,(all-the-icons-material "help" :height 1.0 :v-adjust -0.2) - "Doom documentation" "" (lambda (&rest _) (doom/help)) 'dired-mark) - ))) - -(setq dashboard-footer-icon - (all-the-icons-faicon "list-alt" - :height 1.0 - :v-adjust -0.15 - :face 'font-lock-keyword-face)) -(dashboard-setup-startup-hook) - -(map! :leader :desc "Open dashboard" "b b" #'dashboard-refresh-buffer) - -(setq scroll-conservatively 101) - -;; Smooth scrolling -;; requires good-scroll.el -;;(good-scroll-mode 1) -;;(setq good-scroll-duration 0.4 -;; good-scroll-step 270 -;; good-scroll-render-rate 0.03) -;; -;;(global-set-key (kbd "") #'good-scroll-up-full-screen) -;;(global-set-key (kbd "") #'good-scroll-down-full-screen) - -(setq scroll-margin 30) -(setq hscroll-margin 10) - -;; Requires for faster loading -(require 'org-agenda) -(require 'dired) - -;; Garbage collection to speed things up -(add-hook 'after-init-hook - #'(lambda () - (setq gc-cons-threshold (* 100 1024 1024)))) -(add-hook 'focus-out-hook 'garbage-collect) -(run-with-idle-timer 5 t 'garbage-collect) - -;; Enable autorevert globally so that buffers update when files change on disk. -;; Very useful when used with file syncing (i.e. syncthing) -(setq global-auto-revert-mode nil) -(setq auto-revert-use-notify t) - -;; Neotree fun -(defun neotree-snipe-dir () - (interactive) - (if (projectile-project-root) - (neotree-dir (projectile-project-root)) - (neotree-dir (file-name-directory (file-truename (buffer-name)))) - ) -) - -(map! :leader :desc "Open neotree here" "o n" #'neotree-snipe-dir - :desc "Hide neotree" "o N" #'neotree-hide) - -;; For camelCase -(global-subword-mode 1) - -;; ripgrep as grep -(setq grep-command "rg -nS --no-heading " - grep-use-null-device nil) - -;; Mini-frames ;; cool but kinda suboptimal atm -;(add-load-path! "~/.emacs.d/mini-frame") -;(require 'mini-frame) -;(setq mini-frame-ignore-commands '(evil-ex-search-forward helpful-variable helpful-callable)) -;(setq mini-frame-show-parameters -; '((left . 216) -; (top . 240) -; (width . 0.78) -; (height . 20) -; (alpha-background . 90)) -;) -;(setq mini-frame-detach-on-hide nil) -;(setq mini-frame-resize t) -;(setq resize-mini-frames t) -;(setq mini-frame-standalone nil) -;(mini-frame-mode 1) - -;;;------ Registers ------;;; - -(map! :leader - :desc "Jump to register" - "r" 'jump-to-register) - -(if (string= system-nix-profile "personal") (set-register ?f (cons 'file (concat user-home-directory "/Org/Family.s/Notes/hledger.org")))) -(set-register ?h (cons 'file user-home-directory)) -(set-register ?r (cons 'file (concat dotfiles-dir "/README.org"))) - -;;;------ Org mode configuration ------;;; - -;; Set default org directory -(setq org-directory "~/Org") -(setq org-attach-directory "~/Org/.attach") -(setq org-attach-id-dir "~/Org/.attach") -(setq org-id-locations-file "~/Org/.orgids") -(setq org-cycle-include-plain-lists 'integrate) - -(remove-hook 'after-save-hook #'+literate|recompile-maybe) -(set-company-backend! 'org-mode nil) - -;; Automatically show images but manually control their size -(setq org-startup-with-inline-images t - org-image-actual-width nil) - -(require 'evil-org) -(require 'evil-org-agenda) -(add-hook 'org-mode-hook 'evil-org-mode -100) - -;; Top-level headings should be bigger! -(custom-set-faces! - `(outline-1 :height 1.3 :foreground ,(nth 1 (nth 14 doom-themes--colors))) - `(outline-2 :height 1.25 :foreground ,(nth 1 (nth 15 doom-themes--colors))) - `(outline-3 :height 1.2 :foreground ,(nth 1 (nth 19 doom-themes--colors))) - `(outline-4 :height 1.1 :foreground ,(nth 1 (nth 23 doom-themes--colors))) - `(outline-5 :height 1.1 :foreground ,(nth 1 (nth 24 doom-themes--colors))) - `(outline-6 :height 1.1 :foreground ,(nth 1 (nth 16 doom-themes--colors))) - `(outline-7 :height 1.05 :foreground ,(nth 1 (nth 18 doom-themes--colors))) - `(outline-8 :height 1.05 :foreground ,(nth 1 (nth 11 doom-themes--colors))) - '(variable-pitch :family "Intel One Mono") - `(org-agenda-date :inherit 'unspecified :foreground ,(nth 1 (nth 19 doom-themes--colors)) :weight bold :height 1.1) - `(org-agenda-date-today :inherit 'unspecified :foreground ,(nth 1 (nth 15 doom-themes--colors)) :weight bold :height 1.1) - `(org-agenda-date-weekend :inherit 'unspecified :foreground ,(nth 1 (nth 24 doom-themes--colors)) :weight bold :height 1.1) - `(org-agenda-date-weekend-today :inherit 'unspecified :foreground ,(nth 1 (nth 15 doom-themes--colors)) :weight bold :height 1.1) -) - -(after! org (org-eldoc-load)) - -(with-eval-after-load 'org (global-org-modern-mode)) - -;; Add frame borders and window dividers -(modify-all-frames-parameters - '((right-divider-width . 5) - (internal-border-width . 5))) -(dolist (face '(window-divider - window-divider-first-pixel - window-divider-last-pixel)) - (face-spec-reset-face face) - (set-face-foreground face (face-attribute 'default :background))) -(set-face-background 'fringe (face-attribute 'default :background)) - -(setq - ;; Edit settings - org-auto-align-tags nil - org-tags-column 0 - org-catch-invisible-edits 'show-and-error - org-special-ctrl-a/e t - org-insert-heading-respect-content t - - ;; Org styling, hide markup etc. - org-hide-emphasis-markers t - org-pretty-entities t - org-ellipsis "…") - -(setq-default line-spacing 0) - -; Automatic table of contents is nice -(if (require 'toc-org nil t) - (progn - (add-hook 'org-mode-hook 'toc-org-mode) - (add-hook 'markdown-mode-hook 'toc-org-mode)) - (warn "toc-org not found")) - -;;---- this block from http://fgiasson.com/blog/index.php/2016/06/21/optimal-emacs-settings-for-org-mode-for-literate-programming/ ----;; -;; Tangle Org files when we save them -(defun tangle-on-save-org-mode-file() - (when (string= (message "%s" major-mode) "org-mode") - (org-babel-tangle))) - -(add-hook 'after-save-hook 'tangle-on-save-org-mode-file) -;; ---- end block ---- ;; - -;; Better org table editing -;; This breaks multiline visual block edits -;;(setq-default evil-insert-state-exit-hook '(org-update-parent-todo-statistics -;; t)) -;;(setq org-table-automatic-realign nil) - -;; Better for org source blocks -(setq electric-indent-mode nil) -(setq org-src-window-setup 'current-window) -(set-popup-rule! "^\\*Org Src" - :side 'top' - :size 0.9) - -;; Horizontal scrolling tables -(add-load-path! "~/.emacs.d/phscroll") -(setq org-startup-truncated nil) -(with-eval-after-load "org" - (require 'org-phscroll)) -(setq phscroll-calculate-in-pixels t) - -;; Org side tree outline -(add-load-path! "~/.emacs.d/org-side-tree") -(require 'org-side-tree) -(setq org-side-tree-persistent nil) -(setq org-side-tree-fontify t) -(setq org-side-tree-enable-folding t) -(defun org-side-tree-create-or-toggle () - (interactive) - (if (or (org-side-tree-has-tree-p) (eq major-mode 'org-side-tree-mode)) - (org-side-tree-toggle) - (org-side-tree))) -(map! :leader - "O t" #'org-side-tree-create-or-toggle) -(map! :map org-side-tree-mode-map - "SPC" nil) - -(require 'org-download) - -;; Drag-and-drop to `dired` -(add-hook 'dired-mode-hook 'org-download-enable) - -;; system-wm-type, wayland or x11? only should be considered if system-nix-profile is "personal" or "work" -(if (string= system-wm-type "wayland") - (setq org-download-screenshot-method "grim -g \"$(slurp)\" %s") - (setq org-download-screenshot-method "flameshot gui -p %s") -) - -(after! org-download - (setq org-download-method 'directory)) - -(after! org - (setq-default org-download-image-dir "img/" - org-download-heading-lvl nil)) - -(add-to-list 'display-buffer-alist '("^*Async Shell Command*" . (display-buffer-no-window))) - -(defun org-download-clipboard-basename () - (interactive) - (setq org-download-path-last-dir org-download-image-dir) - (setq org-download-image-dir (completing-read "directory: " (-filter #'f-directory-p (directory-files-recursively "." "" t)) nil t)) - (org-download-clipboard (completing-read "basename: " '() nil nil)) - (setq org-download-image-dir org-download-path-last-dir) -) - -(map! :leader - :desc "Insert a screenshot" - "i s" 'org-download-screenshot - :desc "Insert image from clipboard" - "i p" 'org-download-clipboard - "i P" 'org-download-clipboard-basename) - -(defun org-new-file-from-template() - "Copy a template from ~/Templates into a time stamped unique-named file in the -same directory as the org-buffer and insert a link to this file." - (interactive) - (setq template-file (completing-read "Template file:" (directory-files "~/Templates"))) - (setq filename - (concat - (make-temp-name - (concat (file-name-directory (buffer-file-name)) - "files/" - (file-name-nondirectory (buffer-file-name)) - "_" - (format-time-string "%Y%m%d_%H%M%S_")) ) (file-name-extension template-file t))) - (copy-file (concat user-home-directory "/Templates/" template-file) filename) - (setq prettyname (read-from-minibuffer "Pretty name:")) - (insert (concat "[[./files/" (file-name-nondirectory filename) "][" prettyname "]]")) - (org-display-inline-images)) - -(map! :leader - :desc "Create a new file from a template and insert a link at point" - "i t" 'my-org-new-file-from-template) - -(if (not (string= system-nix-profile "wsl")) - (when (require 'openwith nil 'noerror) - (setq openwith-associations - (list - (list (openwith-make-extension-regexp - '("mpg" "mpeg" "mp3" "mp4" - "avi" "wmv" "wav" "mov" "flv" - "ogm" "ogg" "mkv")) - "mpv" - '(file)) - (list (openwith-make-extension-regexp - '("doc" "xls" "ppt" "odt" "ods" "odg" "odp")) - "libreoffice" - '(file)) - '("\\.lyx" "lyx" (file)) - '("\\.chm" "kchmviewer" (file)) - (list (openwith-make-extension-regexp - '("pdf" "ps" "ps.gz" "dvi")) - "atril" - '(file)) - (list (openwith-make-extension-regexp - '("kdenlive")) - "kdenlive-accel" - '(file)) - (list (openwith-make-extension-regexp - '("kra")) - "krita" - '(file)) - (list (openwith-make-extension-regexp - '("blend" "blend1")) - "blender" - '(file)) - (list (openwith-make-extension-regexp - '("helio")) - "helio" - '(file)) - (list (openwith-make-extension-regexp - '("svg")) - "inkscape" - '(file)) - (list (openwith-make-extension-regexp - '("flp")) - "flstudio" - '(file)) - (list (openwith-make-extension-regexp - '("mid")) - "rosegarden" - '(file)) - )) - (openwith-mode 1))) - -(add-load-path! "~/.emacs.d/org-krita") -(require 'org-krita) -(add-hook 'org-mode-hook 'org-krita-mode) -(setq org-krita-extract-filename "preview.png") -(setq org-krita-scale 1) - -(add-load-path! "~/.emacs.d/org-xournalpp") -(require 'org-xournalpp) -(add-hook 'org-mode-hook 'org-xournalpp-mode) -(setq org-xournalpp-template-getter - '(closure - (t) - nil - (file-truename "~/Templates/template.xopp") ; use my own template - ) -) - -;; override width to static 250 for now -;; so I don't have massive images in org mode (scrolling not fun) -(defun org-xournalpp--create-image (link refresh) - "Extract svg/png from given LINK and return image. - -Regenerate the cached inline image, if REFRESH is true. - -If the path from LINK does not exist, nil is returned." - (let ((width 250) - (xopp-path (f-expand (org-element-property :path link)))) - (when (f-exists? xopp-path) - (if width - (create-image (org-xournalpp--get-image xopp-path refresh) - org-xournalpp-image-type - nil - :width width) - (create-image (org-xournalpp--get-image xopp-path refresh) - org-xournalpp-image-type - nil))))) - -(defun org-copy-link-to-clipboard-at-point () - "Copy current link at point into clipboard (useful for images and links)" - ;; Remember to press C-g to kill this foreground process if it hangs! - (interactive) - (if (eq major-mode #'org-mode) - (link-hint-copy-link-at-point) - ) - (if (eq major-mode #'ranger-mode) - (ranger-copy-absolute-file-paths) - ) - (if (eq major-mode #'image-mode) - (image-mode-copy-file-name-as-kill) - ) - (shell-command "~/.emacs.d/scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh " nil nil) -) - -(if (string= system-nix-profile "wsl") - (map! :leader - :desc "Copy link at point" - "y y" 'link-hint-copy-link-at-point) - (map! :leader - :desc "Copy link/file at point into system clipbord (C-g to escape if copying a file)" - "y y" 'org-copy-link-to-clipboard-at-point)) - -;; Online images inside of org mode is pretty cool -;; This snippit is from Tobias on Stack Exchange -;; https://emacs.stackexchange.com/questions/42281/org-mode-is-it-possible-to-display-online-images -(require 'org-yt) - -(defun org-image-link (protocol link _description) - "Interpret LINK as base64-encoded image data." - (cl-assert (string-match "\\`img" protocol) nil - "Expected protocol type starting with img") - (let ((buf (url-retrieve-synchronously (concat (substring protocol 3) ":" link)))) - (cl-assert buf nil - "Download of image \"%s\" failed." link) - (with-current-buffer buf - (goto-char (point-min)) - (re-search-forward "\r?\n\r?\n") - (buffer-substring-no-properties (point) (point-max))))) - -(org-link-set-parameters - "imghttp" - :image-data-fun #'org-image-link) - -(org-link-set-parameters - "imghttps" - :image-data-fun #'org-image-link) - -;; Mermaid diagrams -(setq ob-mermaid-cli-path "~/.nix-profile/bin/mmdc") - -;; Print org mode -(defun org-simple-print-buffer () - "Open an htmlized form of current buffer and open in a web browser to print" - (interactive) - (htmlize-buffer) - (browse-url-of-buffer (concat (buffer-name) ".html")) - (sleep-for 1) - (kill-buffer (concat (buffer-name) ".html"))) - -;; Doesn't work yet, bc htmlize-region takes arguments BEG and END -;(defun org-simple-print-region() -; "Open an htmlized form of current region and open in a web browser to print" -; (interactive) -; (htmlize-region ) -; (browse-url-of-buffer (concat (buffer-name) ".html")) -; (sleep-for 1) -; (kill-buffer (concat (buffer-name) ".html"))) - -(map! :leader - :prefix ("P" . "Print") - :desc "Simple print buffer in web browser" - "p" 'org-simple-print-buffer) - -(map! :leader - :prefix ("P" . "Print") - :desc "Simple print buffer in web browser" - "b" 'org-simple-print-buffer) - -;(map! :leader -; :prefix ("P" . "Print") -; :desc "Simple print region in web browser" -; "r" 'org-simple-print-region) - -;; Display macros inline in buffers -(add-to-list 'font-lock-extra-managed-props 'display) - -(font-lock-add-keywords - 'org-mode - '(("\\({{{[a-zA-Z#%)(_-+0-9]+}}}\\)" 0 - `(face nil display - ,(format "%s" - (let* ((input-str (match-string 0)) - (el (with-temp-buffer - (insert input-str) - (goto-char (point-min)) - (org-element-context))) - (text (org-macro-expand el org-macro-templates))) - (if text - text - input-str))))))) - -;; Org transclusion -(require 'org-transclusion) -(after! org - (map! :map global-map "" #'org-transclusion-add :leader :prefix "n" :desc "Org Transclusion Mode" "t" #'org-transclusion-mode) - (map! :leader :prefix "n" "l" #'org-transclusion-live-sync-start) - (setq org-transclusion-exclude-elements '(property-drawer keyword)) - (add-hook 'org-mode-hook #'org-transclusion-mode) -) - -(defun org-jekyll-new-post () - (interactive) - (setq new-blog-post-title (read-from-minibuffer "Post name: ")) - (setq new-blog-post-date (format-time-string "%Y-%m-%d" (date-to-time (org-read-date)))) - (setq new-blog-post-slug (downcase (replace-regexp-in-string "[^[:alpha:][:digit:]_-]" "" (string-replace " " "-" new-blog-post-title)))) - (setq new-blog-post-file (concat (projectile-project-root) "org/_posts/" new-blog-post-date "-" new-blog-post-slug ".org")) - (let ((org-capture-templates - `(("p" "New Jekyll blog post" plain (file new-blog-post-file) - ,(concat "#+title: " new-blog-post-title "\n#+options: toc:nil num:nil\n#+begin_export html\n---\nlayout: post\ntitle: " new-blog-post-title "\nexcerpt: %?\ntags: \npermalink: " new-blog-post-date "-" new-blog-post-slug "\n---\n#+end_export\n\n#+attr_html: :alt " new-blog-post-title " :align center\n[[../assets/" new-blog-post-date "-" new-blog-post-slug ".png]]"))) - )) (org-capture)) -) - -(defun org-jekyll-rename-post () - (interactive) - (setq new-blog-post-title (read-from-minibuffer "Post name: ")) - (setq new-blog-post-date (format-time-string "%Y-%m-%d" (date-to-time (org-read-date)))) - (setq new-blog-post-slug (downcase (replace-regexp-in-string "[^[:alpha:][:digit:]_-]" "" (string-replace " " "-" new-blog-post-title)))) - (org-roam-set-keyword "title" new-blog-post-title) - (replace-regexp "permalink: .*\n" (concat "permalink: " new-blog-post-date "-" new-blog-post-slug "\n") nil (point-min) (point-max)) - (replace-regexp "title: .*\n" (concat "title: " new-blog-post-title "\n") nil (point-min) (point-max)) - (setq prev-blog-post-filename-base (file-name-base (buffer-file-name))) - (doom/move-this-file (concat new-blog-post-date "-" new-blog-post-slug ".org")) - (shell-command (concat "sed -i s/" prev-blog-post-filename-base "/" (file-name-base (buffer-file-name)) "/g *.org") nil) - (replace-regexp prev-blog-post-filename-base (file-name-base (buffer-file-name)) nil (point-min) (point-max)) - (save-buffer) -) - -(map! :leader - :prefix ("N") - - :desc "New blog post" - "p" #'org-jekyll-new-post - - :desc "Rename or redate blog post and update links accordingly" - "e" #'org-jekyll-rename-post -) - -(require 'crdt) -(setq crdt-default-tls t) -(setq crdt-use-stunnel t) -(setq crdt-default-name "Emmet") -(if (file-exists-p "~/.emacs.d/crdt-private.el") (load! "~/.emacs.d/crdt-private.el")) -(defun crdt-connect-default () - (interactive) - (crdt-connect crdt-default-server-address crdt-default-name) -) -(map! :leader - :desc "crdt" - :prefix ("C") - - :desc "Connect to a crdt server" - "c" #'crdt-connect-default - - :desc "Connect to default crdt server" - "C" #'crdt-connect-default - - :desc "Disconnect from a crdt server" - "d" #'crdt-disconnect - - :desc "Add buffer to a session" - "a" #'crdt-share-buffer - - :desc "Stop sharing buffer when running a server" - "s" #'crdt-stop-share-buffer - - :desc "Run M-x on the (remote) crdt session" - "x" #'crdt-M-x - - :desc "List crdt buffers in a session" - "l" #'crdt-list-buffers - - :desc "List crdt users in a session" - "u" #'crdt-list-users -) - -(require 'org-analyzer) -(setq org-analyzer-wrapper-command "org-analyzer") -(setq org-analyzer-jar-file-name "~/.nix-profile/bin/org-analyzer.jar") -(setq org-analyzer-java-program "~/.nix-profile/bin/org-analyzer") ;; Is not actually java, buta wrapper shell script - -(defun org-analyzer-start-process (org-dir) - "Start the org analyzer process . -Argument ORG-DIR is where the org-files are located." - (org-analyzer-cleanup-process-state) - (unless (file-exists-p org-dir) - (warn "org-analyzer was started with org-directory set to - \"%s\"\nbut this directory does not exist. -Please set the variable `org-directory' to the location where you keep your org files." - org-directory)) - (let* ((name (format " *org-analyzer [org-dir:%s]*" org-dir)) - (proc-buffer (generate-new-buffer name)) - (proc nil)) - (setq org-analyzer-process-buffer proc-buffer) - (with-current-buffer proc-buffer - (setq default-directory (if (file-exists-p org-dir) - org-dir default-directory) - proc (condition-case err - (let ((process-connection-type nil) - (process-environment process-environment)) - (start-process name - (current-buffer) - org-analyzer-wrapper-command - "--port" - (format "%d" org-analyzer-http-port) - "--started-from-emacs" - (if (file-exists-p org-dir) org-dir ""))) - (error - (concat "Can't start org-analyzer (%s: %s)" - (car err) (cadr err))))) - (set-process-query-on-exit-flag proc nil) - (set-process-filter proc #'org-analyzer-process-filter)) - proc-buffer)) - -;;;------ Org roam configuration ------;;; -(require 'org-roam) -(require 'org-roam-dailies) - -(setq org-roam-directory (concat "~/Org/" user-default-roam-dir "/Notes") - org-roam-db-location (concat "~/Org/" user-default-roam-dir "/Notes/org-roam.db")) - -(setq org-roam-node-display-template - "${title:65}📝${tags:*}") - -(org-roam-db-autosync-mode) - -(setq mode-line-misc-info '((which-function-mode - (which-func-mode - ("" which-func-format " "))) - ("" so-long-mode-line-info) - (global-mode-string - ("" global-mode-string)) - " " - org-roam-db-choice) -) - -(setq org-roam-list-files-commands '(rg)) - -(setq full-org-roam-db-list nil) - -(setq full-org-roam-db-list (directory-files "~/Org" t "\\.[p,s]$")) -(dolist (item full-org-roam-db-list) - (setq full-org-roam-db-list - (append (directory-files item t "\\.[p,s]$") full-org-roam-db-list))) - -(setq org-roam-db-choice user-default-roam-dir) -(setq full-org-roam-db-list-pretty (list)) -(dolist (item full-org-roam-db-list) - (setq full-org-roam-db-list-pretty - (append (list - (replace-regexp-in-string (concat "\\/home\\/" user-username "\\/Org\\/") "" item)) full-org-roam-db-list-pretty))) - -(defun org-roam-open-dashboard () - "Open ${org-roam-directory}/dashboard.org (I use this naming convention to create dashboards for each of my org roam maps)" - (interactive) - (if (org-roam-node-from-title-or-alias "Overview") - (org-roam-node-open (org-roam-node-from-title-or-alias "Overview")) - (dired org-roam-directory)) -) - -(defun org-roam-open-inbox () - "Open ${org-roam-directory}/dashboard.org (I use this naming convention to create dashboards for each of my org roam maps)" - (interactive) - (if (org-roam-node-from-title-or-alias "Inbox") - (org-roam-node-open (org-roam-node-from-title-or-alias "Inbox")) - (message "No inbox found, capture something with M-x org-roam-capture-inbox")) -) - -(defun org-roam-capture-inbox () - (interactive) - (org-roam-capture- :node (org-roam-node-from-title-or-alias "Inbox") - :templates '(("i" "inbox" plain "* %?" - :if-new (file+head "%<%Y%m%d%H%M%S>-inbox.org" "#+title: Inbox\n"))))) - -(defun org-roam-switch-db (&optional arg silent) - "Switch to a different org-roam database, arg" - (interactive) - (when (not arg) - (setq full-org-roam-db-list nil) - - (setq full-org-roam-db-list (directory-files "~/Org" t "\\.[p,s]$")) - (dolist (item full-org-roam-db-list) - (setq full-org-roam-db-list - (append (directory-files item t "\\.[p,s]$") full-org-roam-db-list))) - - (setq full-org-roam-db-list-pretty (list)) - (dolist (item full-org-roam-db-list) - (setq full-org-roam-db-list-pretty - (append (list - (replace-regexp-in-string (concat "\\/home\\/" user-username "\\/Org\\/") "" item)) full-org-roam-db-list-pretty))) - - (setq org-roam-db-choice (completing-read "Select org roam database: " - full-org-roam-db-list-pretty nil t))) - (when arg - (setq org-roam-db-choice arg)) - - (setq org-roam-directory (file-truename (concat "~/Org/" org-roam-db-choice "/Notes")) - org-roam-db-location (file-truename (concat "~/Org/" org-roam-db-choice "/Notes/org-roam.db")) - org-directory (file-truename (concat "~/Org/" org-roam-db-choice "/Notes"))) - (when (not silent) - (org-roam-open-dashboard)) - - (org-roam-db-sync) - - (message (concat "Switched to " org-roam-db-choice " org-roam database!"))) - -(defun org-roam-default-overview () - (interactive) - (org-roam-switch-db user-default-roam-dir)) - -(defun org-roam-switch-db-id-open (arg ID &optional switchpersist) - "Switch to another org-roam db and visit file with id arg" - "If switchpersist is non-nil, stay in the new org-roam db after visiting file" - (interactive) - (setq prev-org-roam-db-choice org-roam-db-choice) - (org-roam-switch-db arg 1) - (org-roam-id-open ID) - (when (not switchpersist) - (org-roam-switch-db prev-org-roam-db-choice 1))) - -;;;------ Org-roam-agenda configuration ------;;; -(defun text-in-buffer-p (TEXT) -(save-excursion (goto-char (point-min)) (search-forward TEXT nil t))) - -(defun apply-old-todos-tag-maybe (&optional FILE) - (interactive) - (if (stringp FILE) - (setq the-daily-node-filename FILE) - (setq the-daily-node-filename buffer-file-name)) - (if (org-roam-dailies--daily-note-p the-daily-node-filename) - (if (<= (nth 2 (org-roam-dailies-calendar--file-to-date the-daily-node-filename)) (nth 2 org-agenda-current-date)) - (if (<= (nth 1 (org-roam-dailies-calendar--file-to-date the-daily-node-filename)) (nth 1 org-agenda-current-date)) - (if (<= (nth 0 (org-roam-dailies-calendar--file-to-date the-daily-node-filename)) (nth 0 org-agenda-current-date)) - (funcall (lambda () - (with-current-buffer (get-file-buffer the-daily-node-filename) (org-roam-tag-add '("old-todos"))) - (with-current-buffer (get-file-buffer the-daily-node-filename) (org-roam-tag-remove '("todos"))) - ) - ) - ) - ) - ) - ) -) - -(defun apply-old-todos-tag-maybe-and-save (FILE) - (interactive) - (find-file-noselect FILE) - (apply-old-todos-tag-maybe FILE) - (with-current-buffer (get-file-buffer the-daily-node-filename) (save-buffer)) - (with-current-buffer (get-file-buffer the-daily-node-filename) (kill-buffer)) -) - -(defun org-current-buffer-has-todos () - "Return non-nil if current buffer has any todo entry." - - (org-element-map ; (2) - (org-element-parse-buffer 'headline) ; (1) - 'headline - (lambda (h) - (eq (org-element-property :todo-type h) - 'todo)) - nil 'first-match)) ; (3) - -(defun org-has-recent-timestamps (OLD-DAYS) - "Return non-nil only if current buffer has entries with timestamps - more recent than OLD-DAYS days" - (interactive) - (if (org-element-map (org-element-parse-buffer) 'timestamp - (lambda (h) - (org-element-property :raw-value h))) - (org-element-map ; (2) - (org-element-parse-buffer) ; (1) - 'timestamp - (lambda (h) - (time-less-p (time-subtract (current-time) (* 60 60 24 OLD-DAYS)) (date-to-time (org-element-property :raw-value h)))) - nil 'first-match) nil)) - -(setq org-timestamps-days-for-old 21) - -; This has a bug where it won't sync a new agenda file -; if I'm editing an org roam node file while set to another -; org roam db -(defun add-todos-tag-on-save-org-mode-file() - (interactive) - (when (string= (message "%s" major-mode) "org-mode") - (if (org-roam-node-p (org-roam-node-at-point)) - (funcall (lambda() - (if (or (org-current-buffer-has-todos) (org-has-recent-timestamps org-timestamps-days-for-old)) - (org-roam-tag-add '("todos")) - (org-roam-tag-remove '("todos")) - ) - (apply-old-todos-tag-maybe) - ) - ) - ) - ) -) - -(add-hook 'before-save-hook 'add-todos-tag-on-save-org-mode-file) - -(defun org-roam-filter-by-tag (tag-name) - (lambda (node) - (member tag-name (org-roam-node-tags node)))) - -(defun org-roam-list-notes-by-tag (tag-name) - (mapcar #'org-roam-node-file - (seq-filter - (org-roam-filter-by-tag tag-name) - (org-roam-node-list)))) - -(defun org-roam-dailies-apply-old-todos-tags-to-all () -; (dolist (daily-node org-roam-dailies-files) -; (apply-old-todos-tag-maybe-and-save daily-node) -; ) - (setq num 0) - (while (< num (list-length (org-roam-list-notes-by-tag "todos"))) - (apply-old-todos-tag-maybe-and-save (nth num (org-roam-list-notes-by-tag "todos"))) - (setq num (1+ num)) - ) -) - -;; Refreshing org roam agenda -(defun org-roam-refresh-agenda-list () - (interactive) - (setq prev-org-roam-db-choice org-roam-db-choice) - (setq org-agenda-files '()) - (setq org-id-files '()) - (setq org-roam-directory (file-truename "~/Org") - org-roam-db-location (file-truename "~/Org/org-roam.db") - org-directory (file-truename "~/Org/")) - (org-roam-db-sync) - (setq org-agenda-files (org-roam-list-notes-by-tag "todos")) - (setq org-id-files (org-roam-list-files)) - (setq org-agenda-files (-uniq org-agenda-files)) - (org-roam-switch-db prev-org-roam-db-choice 1) -) - -;; Build agenda only when org agenda first opened for session -(setq org-roam-agenda-initialized nil) -(defun org-roam-refresh-agenda-list-init () - (if (not org-roam-agenda-initialized) - (funcall - (lambda () - (org-roam-refresh-agenda-list) - (setq org-roam-agenda-initialized t) - ) - ) - ) -) -(add-hook 'org-agenda-mode-hook 'org-roam-refresh-agenda-list-init) - -(map! :leader - :prefix ("o a") - - :desc "Refresh org agenda from roam dbs" - "r" 'org-roam-refresh-agenda-list) - -(map! :leader - :prefix ("N" . "org-roam notes") - - :desc "Capture new roam node" - "c" 'org-roam-capture - - :desc "Open org roam inbox" - "I o" 'org-roam-open-inbox - - :desc "Capture stuff in inbox" - "I c" 'org-roam-capture-inbox - - :desc "Insert roam node link at point" - "i" 'org-roam-node-insert - - :desc "Find roam node" - "." 'org-roam-node-find - - :desc "Switch org-roam database" - "s" 'org-roam-switch-db - - :desc "Update current org-roam database" - "u" 'org-roam-db-sync - - :desc "Re-zoom on current node in org-roam-ui" - "z" 'org-roam-ui-node-zoom - - :desc "Visualize org-roam database with org-roam-ui" - "O" 'org-roam-default-overview - - :desc "Visualize org-roam database with org-roam-ui" - "o" 'org-roam-open-dashboard) - -(after! org-roam - (setq org-roam-capture-templates - '(("d" "default" plain "%?" :target - (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") - :unnarrowed t)))) - -(setq olivetti-style 'fancy - olivetti-margin-width 100) -(setq-default olivetti-body-width 100) -(defun org-roam-olivetti-mode () - (interactive) - (if (org-roam-file-p) - (olivetti-mode)) - (if (org-roam-file-p) - (doom-disable-line-numbers-h))) - -(add-hook 'org-mode-hook 'org-roam-olivetti-mode) - -(add-load-path! "~/.emacs.d/org-nursery/lisp") -(require 'org-roam-dblocks) -(add-hook 'org-mode-hook 'org-roam-dblocks-autoupdate-mode) - -(setq org-id-extra-files 'org-agenda-text-search-extra-files) - -;(add-to-list 'display-buffer-alist '("^\\ORUI" display-buffer-in-side-window -; '(side . right) -; (window-width . 50) -;)) -;(add-to-list 'display-buffer-alist '("^\\localhost:35901" display-buffer-in-side-window -; '(side . right) -; (window-width . 50) -;)) - -;;(setq org-roam-ui-browser-function 'eaf-open-browser) ; xorg -(setq org-roam-ui-browser-function 'browse-url) ; wayland - -(defun open-org-roam-ui () - (interactive) - (+evil/window-vsplit-and-follow) - (org-roam-ui-open) - (evil-window-left 1)) - -(defun kill-org-roam-ui () - (interactive) -;; (delete-window (get-buffer-window "ORUI" t)) ; xorg -;; (kill-buffer "ORUI") ; xorg - (kill-buffer "*httpd*") -) - -; xorg -;;(map! :leader -;; :prefix ("N" . "org-roam notes") -;; :desc "Visualize org-roam database with org-roam-ui" -;; "v" 'open-org-roam-ui) - -; wayland -(map! :leader - :prefix ("N" . "org-roam notes") - :desc "Visualize org-roam database with org-roam-ui" - "v" 'org-roam-ui-open) - -(map! :leader - :prefix ("N" . "org-roam notes") - :desc "Kill all org roam ui buffers" - "V" 'kill-org-roam-ui) - -;;;------ Org agenda configuration ------;;; -;; Set span for agenda to be just daily -(setq org-agenda-span 1 - org-agenda-start-day "+0d" - org-agenda-skip-timestamp-if-done t - org-agenda-skip-deadline-if-done t - org-agenda-skip-scheduled-if-done t - org-agenda-skip-scheduled-if-deadline-is-shown t - org-agenda-skip-timestamp-if-deadline-is-shown t - org-log-into-drawer t) - -;; Custom styles for dates in agenda -(custom-set-faces! - '(org-agenda-date :inherit outline-1 :height 1.15) - '(org-agenda-date-today :inherit outline-2 :height 1.15) - '(org-agenda-date-weekend :inherit outline-1 :height 1.15) - '(org-agenda-date-weekend-today :inherit outline-2 :height 1.15) - '(org-super-agenda-header :inherit custom-button :weight bold :height 1.05) - `(link :foreground unspecified :underline nil :background ,(nth 1 (nth 7 doom-themes--colors))) - '(org-link :foreground unspecified)) - -;; Toggle completed entries function -(defun org-agenda-toggle-completed () - (interactive) - (setq org-agenda-skip-timestamp-if-done (not org-agenda-skip-timestamp-if-done) - org-agenda-skip-deadline-if-done (not org-agenda-skip-timestamp-if-done) - org-agenda-skip-scheduled-if-done (not org-agenda-skip-timestamp-if-done)) - (org-agenda-redo)) - -(map! - :map evil-org-agenda-mode-map - :after org-agenda - :nvmeg "s d" #'org-agenda-toggle-completed) - -;; Ricing org agenda -(setq org-agenda-current-time-string "") -(setq org-agenda-time-grid '((daily) () "" "")) - -(setq org-agenda-prefix-format '( -(agenda . " %?-2i %t ") - (todo . " %i %-12:c") - (tags . " %i %-12:c") - (search . " %i %-12:c"))) - -(setq org-agenda-hide-tags-regexp ".*") - -(setq org-agenda-category-icon-alist - `(("Teaching.p" ,(list (all-the-icons-faicon "graduation-cap" :height 0.8)) nil nil :ascent center) - ("Family.s" ,(list (all-the-icons-faicon "home" :v-adjust 0.005)) nil nil :ascent center) - ("Producer.p" ,(list (all-the-icons-faicon "youtube-play" :height 0.9)) nil nil :ascent center) - ("Bard.p" ,(list (all-the-icons-faicon "music" :height 0.9)) nil nil :ascent center) - ("Stories.s" ,(list (all-the-icons-faicon "book" :height 0.9)) nil nil :ascent center) - ("Author.p" ,(list (all-the-icons-faicon "pencil" :height 0.9)) nil nil :ascent center) - ("Gamedev.s" ,(list (all-the-icons-faicon "gamepad" :height 0.9)) nil nil :ascent center) - ("Knowledge.p" ,(list (all-the-icons-faicon "database" :height 0.8)) nil nil :ascent center) - ("Personal.p" ,(list (all-the-icons-material "person" :height 0.9)) nil nil :ascent center) -)) - -(defalias 'org-timestamp-down 'org-timestamp-down-day) -(defalias 'org-timestamp-up 'org-timestamp-up-day) - -(defun org-categorize-by-roam-db-on-save () - (interactive) - (when (string= (message "%s" major-mode) "org-mode") - (when - (string-prefix-p (concat "/home/" user-username "/Org") (expand-file-name (buffer-file-name))) - (setq categorizer-old-line (line-number-at-pos)) - (evil-goto-first-line) - (org-set-property "CATEGORY" (substring (string-trim-left (expand-file-name (buffer-file-name)) (concat "/home/" user-username "/Org/")) 0 (string-match "/" (string-trim-left (expand-file-name (buffer-file-name)) (concat "/home/" user-username "/Org/"))))) - (evil-goto-line categorizer-old-line) - ) - ) -) - -(add-hook 'after-save-hook 'org-categorize-by-roam-db-on-save) - -;; Function to be run when org-agenda is opened -(defun org-agenda-open-hook () - "Hook to be run when org-agenda is opened" - (olivetti-mode)) - -;; Adds hook to org agenda mode, making follow mode active in org agenda -(add-hook 'org-agenda-mode-hook 'org-agenda-open-hook) - -;; Easy refreshes on org agenda for syncthing file changes -;; adapted from https://www.reddit.com/r/orgmode/comments/mu6n5b/org_agenda_auto_updating/ -;; and https://lists.gnu.org/archive/html/help-gnu-emacs/2008-12/msg00435.html -(defadvice org-agenda-list (before refresh-org-agenda-on-revert activate) - (mapc (lambda (file) - (unless (verify-visited-file-modtime (get-file-buffer file)) - (with-current-buffer (get-file-buffer file) - (when (eq major-mode 'org-mode) - (revert-buffer nil 'noconfirm))))) - (org-agenda-files))) -(defadvice org-agenda-redo (before refresh-org-agenda-on-revert activate) - (mapc (lambda (file) - (unless (verify-visited-file-modtime (get-file-buffer file)) - (with-current-buffer (get-file-buffer file) - (when (eq major-mode 'org-mode) - (revert-buffer nil 'noconfirm))))) - (org-agenda-files))) -(defadvice org-agenda-redo-all (before refresh-org-agenda-on-revert activate) - (mapc (lambda (file) - (unless (verify-visited-file-modtime (get-file-buffer file)) - (with-current-buffer (get-file-buffer file) - (when (eq major-mode 'org-mode) - (revert-buffer nil 'noconfirm))))) - (org-agenda-files))) - -;; Function to list all my available org agenda files and switch to them -(defun list-and-switch-to-agenda-file () - "Lists all available agenda files and switches to desired one" - (interactive) - (setq full-agenda-file-list nil) - (setq choice (completing-read "Select agenda file:" org-agenda-files nil t)) - (find-file choice)) - -(map! :leader - :desc "Switch to specific org agenda file" - "o a s" 'list-and-switch-to-agenda-file) - -(defun org-agenda-switch-with-roam () - "Switches to org roam node file and database from org agenda view" - (interactive) - (org-agenda-switch-to) - (if (f-exists-p (concat (dir!) "/org-roam.db")) - (org-roam-switch-db (replace-regexp-in-string (concat "\\/home\\/" user-username "\\/Org\\/") "" (f-parent (dir!))) t)) - (if (f-exists-p (concat (f-parent (dir!)) "/org-roam.db")) - (org-roam-switch-db (replace-regexp-in-string (concat "\\/home\\/" user-username "\\/Org\\/") "" (f-parent (f-parent (dir!)))) t)) - (org-roam-olivetti-mode) -) - -(map! - :map evil-org-agenda-mode-map - :after org-agenda - :nvmeg "" #'org-agenda-switch-with-roam - :nvmeg "" #'org-agenda-switch-with-roam) -(map! - :map org-agenda-mode-map - :after org-agenda - :nvmeg "" #'org-agenda-switch-with-roam - :nvmeg "" #'org-agenda-switch-with-roam) - -(require 'org-super-agenda) - -(setq org-super-agenda-groups - '(;; Each group has an implicit boolean OR operator between its selectors. - (:name " Overdue " ; Optionally specify section name - :scheduled past - :order 2 - :face 'error) - - (:name "Personal " - :and(:file-path "Personal.p" :not (:tag "event")) - :order 3) - - (:name "Family " - :and(:file-path "Family.s" :not (:tag "event")) - :order 3) - - (:name "Teaching " - :and(:file-path "Teaching.p" :not (:tag "event")) - :order 3) - - (:name "Gamedev " - :and(:file-path "Gamedev.s" :not (:tag "event")) - :order 3) - - (:name "Youtube " - :and(:file-path "Producer.p" :not (:tag "event")) - :order 3) - - (:name "Music " - :and(:file-path "Bard.p" :not (:tag "event")) - :order 3) - - (:name "Storywriting " - :and(:file-path "Stories.s" :not (:tag "event")) - :order 3) - - (:name "Writing " - :and(:file-path "Author.p" :not (:tag "event")) - :order 3) - - (:name "Learning " - :and(:file-path "Knowledge.p" :not (:tag "event")) - :order 3) - - (:name " Today " ; Optionally specify section name - :time-grid t - :date today - :scheduled today - :order 1 - :face 'warning) - -)) - -(org-super-agenda-mode t) - -(map! :desc "Next line" - :map org-super-agenda-header-map - "j" 'org-agenda-next-line) - -(map! :desc "Next line" - :map org-super-agenda-header-map - "k" 'org-agenda-previous-line) - -(require 'calfw) -(require 'calfw-org) -(setq cfw:org-agenda-schedule-args '(:timestamp)) - -(map! :leader :desc "Open org calendar" - "O c" 'cfw:open-org-calendar) - -;;;------ magit configuration ------;;; -;; Need the following two blocks to make magit work with git bare repos -(require 'magit-todos) -(setq magit-todos-keywords-list '("TODO" "FIXME" "HACK" "REVIEW" "DEPRECATED" "BUG")) -(magit-todos-mode 1) - -(add-load-path! "~/.emacs.d/magit-file-icons") -(require 'magit-file-icons) -(setq magit-file-icons-icon-for-file-func 'all-the-icons-icon-for-file) -(setq magit-file-icons-icon-for-dir-func 'all-the-icons-icon-for-dir) -(magit-file-icons-mode 1) - -(require 'all-the-icons-ibuffer) -(add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode) -(setq all-the-icons-ibuffer-color-icon t) -(evil-set-initial-state 'ibuffer-mode 'normal) - -;;;------ dired configuration ------;;; - -(add-hook 'dired-mode-hook 'all-the-icons-dired-mode) -(setq all-the-icons-dired-monochrome nil) - -(map! :desc "Increase font size" - "C-=" 'text-scale-increase - - :desc "Decrease font size" - "C--" 'text-scale-decrease - - :desc "Jump to dired" - "M-f" 'dired-jump -) - -;;;------ ranger configuration ------;;; - -(map! :map ranger-mode-map - :desc "Mark current file" - "m" 'ranger-mark - - :desc "Toggle mark on current file" - "x" 'ranger-toggle-mark -) - -;;;-- hledger-mode configuration ;;;-- - -;;; Basic configuration -(require 'hledger-mode) - -;; To open files with .journal extension in hledger-mode -(add-to-list 'auto-mode-alist '("\\.journal\\'" . hledger-mode)) - -;; The default journal location is too opinionated. -(setq hledger-jfile (concat user-home-directory "/Org/Family.s/Notes/hledger.journal")) - -;;; Auto-completion for account names -;; For company-mode users: -(add-to-list 'company-backends 'hledger-company) - -(evil-define-key* 'normal hledger-view-mode-map "q" 'kill-current-buffer) -(evil-define-key* 'normal hledger-view-mode-map "[" 'hledger-prev-report) -(evil-define-key* 'normal hledger-view-mode-map "]" 'hledger-next-report) - -(map! :leader - :prefix ("l" . "hledger") - :desc "Exec hledger command" - "c" 'hledger-run-command - - :desc "Generate hledger balancesheet" - "b" 'hledger-balancesheet* - - :desc "Generate hledger daily report" - "d" 'hledger-daily-report*) - -(map! :localleader - :map hledger-mode-map - - :desc "Reschedule transaction at point" - "d s" 'hledger-reschedule - - :desc "Edit amount at point" - "t a" 'hledger-edit-amount) - -(require 'focus) - -(map! :leader - :prefix ("F" . "Focus mode") - :desc "Toggle focus mode" - "t" 'focus-mode - - :desc "Pin focused section" - "p" 'focus-pin - - :desc "Unpin focused section" - "u" 'focus-unpin) - -(add-to-list 'focus-mode-to-thing '(org-mode . org-element)) -(add-to-list 'focus-mode-to-thing '(python-mode . paragraph)) -(add-to-list 'focus-mode-to-thing '(lisp-mode . paragraph)) - -;(add-hook 'org-mode-hook #'focus-mode) - -;;;------ helpful configuration ------;;; - -(evil-set-initial-state 'helpful-mode 'normal) -(evil-define-key 'normal helpful-mode-map - "j" 'evil-next-visual-line - "k" 'evil-previous-visual-line - "q" 'helpful-kill-buffers) - -;;;------ helpful configuration ------;;; -(add-load-path! "~/.nix-profile/share/emacs/site-lisp/elpa/mu4e-1.12.2") -(require 'mu4e) -(require 'mu4e-contrib) -(require 'mu4e-actions) - -(after! mu4e - (setq mu4e-modeline-support nil) - (setq mu4e-sent-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Sent"))) - (setq mu4e-drafts-folder (lambda (msg) (concat "/" user-mail-address "/Drafts"))) - (setq mu4e-trash-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Trash"))) - (setq mu4e-refile-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Folders/" (completing-read "Refile msg to: " (directory-files (concat "~/.mail/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Folders")))))) - - (setq mu4e-index-lazy-check t) - (setq mu4e-index-cleanup t) - (setq mu4e-update-interval 120) - (mu4e-alert-enable-notifications) - - (define-key mu4e-main-mode-map (kbd "") #'doom/leader) - (define-key mu4e-headers-mode-map (kbd "") #'doom/leader) - (define-key mu4e-view-mode-map (kbd "") #'doom/leader) - - (define-key mu4e-main-mode-map (kbd "g g") #'evil-goto-first-line) - (define-key mu4e-main-mode-map (kbd "G") #'evil-goto-line) - (define-key mu4e-main-mode-map (kbd "h") #'evil-backward-char) - (define-key mu4e-main-mode-map (kbd "l") #'evil-forward-char) - (define-key mu4e-main-mode-map (kbd "w") #'evil-forward-word-begin) - - (unbind-key "g" mu4e-headers-mode-map) - (define-key mu4e-headers-mode-map (kbd "g g") #'evil-goto-first-line) - (define-key mu4e-headers-mode-map (kbd "G") #'evil-goto-line) - (define-key mu4e-headers-mode-map (kbd "h") #'evil-backward-char) - (define-key mu4e-headers-mode-map (kbd "l") #'evil-forward-char) - (define-key mu4e-headers-mode-map (kbd "w") #'evil-forward-word-begin) - - (unbind-key "g" mu4e-view-mode-map) - (define-key mu4e-view-mode-map (kbd "g g") #'evil-goto-first-line) - (define-key mu4e-view-mode-map (kbd "G") #'evil-goto-line) - (define-key mu4e-view-mode-map (kbd "h") #'evil-backward-char) - (define-key mu4e-view-mode-map (kbd "l") #'evil-forward-char) - (define-key mu4e-view-mode-map (kbd "w") #'evil-forward-word-begin) - - (map! :map 'mu4e-main-mode-map :desc "Jump to maildir" :ge "J" #'mu4e-search-maildir) - (map! :map 'mu4e-main-mode-map :desc "Next line" :ge "j" #'evil-next-visual-line) - (map! :map 'mu4e-main-mode-map :desc "Prev line" :ge "k" #'evil-previous-visual-line) - - (map! :map 'mu4e-headers-mode-map :desc "Jump to maildir" :ge "J" #'mu4e-search-maildir) - (map! :map 'mu4e-headers-mode-map :desc "Next line" :ge "j" #'evil-next-visual-line) - (map! :map 'mu4e-headers-mode-map :desc "Prev line" :ge "k" #'evil-previous-visual-line) - (map! :map 'mu4e-headers-mode-map :desc "Next char" :ge "l" #'evil-forward-char) - (map! :map 'mu4e-headers-mode-map :desc "Update mail and index" :ge "U" #'mu4e-update-mail-and-index) - (map! :map 'mu4e-headers-mode-map :desc "Compose reply" :ge "r" #'mu4e-compose-reply) - (map! :map 'mu4e-headers-mode-map :desc "Archive message" :ge "e" #'mu4e-headers-mark-for-refile) - - (map! :map 'mu4e-view-mode-map :desc "Jump to maildir" :ge "J" #'mu4e-search-maildir) - (map! :map 'mu4e-view-mode-map :desc "Next line" :ge "j" #'evil-next-visual-line) - (map! :map 'mu4e-view-mode-map :desc "Prev line" :ge "k" #'evil-previous-visual-line) - (map! :map 'mu4e-view-mode-map :desc "Update mail and index" :ge "U" #'mu4e-update-mail-and-index) - (map! :map 'mu4e-view-mode-map :desc "Compose reply" :ge "r" #'mu4e-compose-reply) - (map! :map 'mu4e-view-mode-map :desc "Archive message" :ge "e" #'mu4e-view-mark-for-refile) - - (add-to-list 'mu4e-header-info-custom - '(:maildir-folder-no-account . - ( :name "Maildir folder without account" ;; long name, as seen in the message-view - :shortname "Folder" ;; short name, as seen in the headers view - :help "Name of the subfolder without the maildir" ;; tooltip - :function (lambda (msg) (substring (mu4e-message-field msg :maildir) (+ 2 (length (nth 1 (split-string (mu4e-message-field msg :maildir) "/" ))))))))) - (add-to-list 'mu4e-bookmarks - '( :name "Unified inbox" - :query "maildir://.*/INBOX/" - :key ?i)) - (setq mu4e-headers-fields - '((:account-stripe . 1) - (:account . 25) - (:human-date . 12) - (:flags . 6) - (:from-or-to . 20) - (:maildir-folder-no-account . 30) - (:subject))) - - (add-hook 'mu4e-compose-mode-hook #'(lambda () (auto-save-mode -1))) - (setq mu4e-sent-messages-behavior 'delete) - - (setq sendmail-program "~/.nix-profile/bin/msmtp") - (setq send-mail-function 'smtpmail-send-it) - (setq message-sendmail-f-is-evil t) - (setq message-sendmail-extra-arguments '("--read-envelope-from")) - (setq message-send-mail-function 'message-send-mail-with-sendmail) - (if (file-exists-p "~/.emacs.d/mu4e-private.el") (load! "~/.emacs.d/mu4e-private.el")) - - ;; https://emacs.stackexchange.com/questions/3061/how-to-stop-mu4e-from-inserting-line-breaks - (defun no-auto-fill () - "Turn off auto-fill-mode." - (auto-fill-mode -1)) - - (defun no-org-msg-mode () - "Disable org-msg-mode since it doesn't respect multiline emails" - (org-msg-mode 0)) - - (add-hook 'mu4e-compose-mode-hook #'no-auto-fill) - (add-hook 'mu4e-compose-pre-hook #'no-org-msg-mode) - - (mu4e--start) ;; start mu4e silently - -) - -;;;-- Load emacs direnv;;;-- -(require 'direnv) -(direnv-mode) - -;;;-- projectile wrapper commands ;;;-- -(defun projectile-goto-project () - (interactive) - (projectile-switch-project t) - ;;(neotree-dir (projectile-project-root)) -) - -(map! :leader - :desc "Open project" - "p p" #'projectile-goto-project) -(map! :leader - :desc "Projectile commander" - "p @" #'projectile-commander) -(map! :leader - :desc "Projectile grep" - "/" #'projectile-grep) -(after! projectile (put 'projectile-grep 'disabled nil)) - -;;;-- projectile wrapper commands ;;;-- -(require 'sudo-edit) -(setq sudo-edit-local-method "doas") - -(map! :leader - :desc "Open current file as root" - "f U" #'sudo-edit-current-file) -(map! :leader - :desc "Find a file and open as root" - "f u" #'sudo-edit-find-file) - -;;;-- LSP stuff ;;;-- -(require 'lsp-mode) -(require 'nix-mode) -(require 'gdscript-mode) - -(add-hook 'nix-mode-hook 'lsp-deferred) -(add-hook 'gdscript-mode-hook 'lsp-deferred) - -(setq gdscript-godot-executable "godot4") - -(setq lsp-java-workspace-dir (concat user-home-directory "/.local/share/doom/java-workspace")) - -(setq lsp-treemacs-deps-position-params - '((side . right) - (slot . 1) - (window-width . 35))) - -(setq lsp-treemacs-symbols-position-params -'((side . right) - (slot . 2) - (window-width . 35))) - -(map! :leader :desc "Open treemacs symbol outliner" "o s" #'lsp-treemacs-symbols - :desc "Hide neotree" "o S" #'treemacs-quit) - -(setq +format-on-save-enabled-modes '(not emacs-lisp-mode sql-mode tex-mode latex-mode org-msg-edit-mode nix-mode)) - -(defun lsp-booster--advice-json-parse (old-fn &rest args) - "Try to parse bytecode instead of json." - (or - (when (equal (following-char) ?#) - (let ((bytecode (read (current-buffer)))) - (when (byte-code-function-p bytecode) - (funcall bytecode)))) - (apply old-fn args))) -(advice-add (if (progn (require 'json) - (fboundp 'json-parse-buffer)) - 'json-parse-buffer - 'json-read) - :around - #'lsp-booster--advice-json-parse) - -(defun lsp-booster--advice-final-command (old-fn cmd &optional test?) - "Prepend emacs-lsp-booster command to lsp CMD." - (let ((orig-result (funcall old-fn cmd test?))) - (if (and (not test?) ;; for check lsp-server-present? - (not (file-remote-p default-directory)) ;; see lsp-resolve-final-command, it would add extra shell wrapper - lsp-use-plists - (not (functionp 'json-rpc-connection)) ;; native json-rpc - (executable-find "emacs-lsp-booster")) - (progn - (when-let ((command-from-exec-path (executable-find (car orig-result)))) ;; resolve command from exec-path (in case not found in $PATH) - (setcar orig-result command-from-exec-path)) - (message "Using emacs-lsp-booster for %s!" orig-result) - (cons "emacs-lsp-booster" orig-result)) - orig-result))) -(advice-add 'lsp-resolve-final-command :around #'lsp-booster--advice-final-command) - -(map! :leader :desc "Find definition using lsp" "L d" #'lsp-find-definition) - -;; devdocs are cool -(require 'devdocs) - -(map! :leader :desc "Peruse devdocs" "L p" #'devdocs-peruse) - -(add-to-list 'tramp-remote-path 'tramp-own-remote-path) -(after! vterm - (add-to-list 'vterm-tramp-shells '("ssh" "zsh")) ;; I use zsh on all my servers -) - -;; I source my rss from my freshrss instance -;; I login with a private elisp file: ~/.emacs.d/freshrss-elfeed.el -;; freshrss-elfeed.el looks like this: -;;(elfeed-protocol-enable) -;;(setq elfeed-use-curl t) -;;(setq elfeed-set-timeout 36000) -;;(setq elfeed-log-level 'debug) -;;(setq freshrss-hostname "https://freshrss.example.com") -;;(setq elfeed-feeds (list -;; (list "fever+https://user@freshrss.example.com" -;; :api-url "https://user@freshrss.example.com/api/fever.php" -;; :password "mYsUpErCoMpLiCaTeDp@s$w0rD")))) -;;(setq main-elfeed-feed "https://user@freshrss.example.com/api/fever.php") - -(if (file-exists-p "~/.emacs.d/freshrss-elfeed.el") (load! "~/.emacs.d/freshrss-elfeed.el")) -(setq elfeed-search-filter "@6-months-ago +unread") -(setq browse-url-chromium-program "mpv") -(setq browse-url-chrome-program "mpv") -(setq browse-url-handlers '(("youtube.com" . browse-url-chrome) - ("youtu.be" . browse-url-chrome) - ("odcyn.com" . browse-url-chrome) - ("odysee.com" . browse-url-chrome) - ("tilvids.com" . browse-url-chrome))) -(map! :leader :desc "Open elfeed" "O n" #'elfeed) -(map! :map 'elfeed-search-mode-map :desc "Open url" :n "g o" #'elfeed-search-browse-url) - -(defun elfeed-full-update () - (interactive) - (elfeed-search-update--force) - (cl-loop for entry in elfeed-search-entries - do (elfeed-untag-1 entry 'unread)) - (elfeed-protocol-fever-reinit freshrss-hostname) - (elfeed-update)) - -(add-hook 'elfeed-search-mode-hook 'elfeed-full-update) -(add-hook 'elfeed-search-update-hook (lambda () (goto-char (point-min)))) diff --git a/user/app/doom-emacs/doom.nix b/user/app/doom-emacs/doom.nix deleted file mode 100644 index dde3ddf..0000000 --- a/user/app/doom-emacs/doom.nix +++ /dev/null @@ -1,148 +0,0 @@ -{ config, lib, pkgs, pkgs-emacs, pkgs-stable, inputs, userSettings, systemSettings, ... }: -let - themePolarity = lib.removeSuffix "\n" (builtins.readFile (./. + "../../../../themes"+("/"+userSettings.theme)+"/polarity.txt")); - dashboardLogo = ./. + "/nix-" + themePolarity + ".webp"; -in -{ - imports = [ - inputs.nix-doom-emacs.hmModule - ../git/git.nix - ../../shell/sh.nix - ../../shell/cli-collection.nix - ]; - - programs.doom-emacs = { - enable = true; - emacsPackage = pkgs-emacs.emacs29-pgtk; - doomPrivateDir = ./.; - # This block from https://github.com/znewman01/dotfiles/blob/be9f3a24c517a4ff345f213bf1cf7633713c9278/emacs/default.nix#L12-L34 - # Only init/packages so we only rebuild when those change. - doomPackageDir = let - filteredPath = builtins.path { - path = ./.; - name = "doom-private-dir-filtered"; - filter = path: type: - builtins.elem (baseNameOf path) [ "init.el" "packages.el" ]; - }; - in pkgs-emacs.linkFarm "doom-packages-dir" [ - { - name = "init.el"; - path = "${filteredPath}/init.el"; - } - { - name = "packages.el"; - path = "${filteredPath}/packages.el"; - } - { - name = "config.el"; - path = pkgs-emacs.emptyFile; - } - ]; - # End block - }; - - home.file.".emacs.d/themes/doom-stylix-theme.el".source = config.lib.stylix.colors { - template = builtins.readFile ./themes/doom-stylix-theme.el.mustache; - extension = ".el"; - }; - - home.packages = (with pkgs-emacs; [ - emacs-lsp-booster - file - wmctrl - jshon - aria - hledger - hunspell hunspellDicts.en_US-large - (pkgs-emacs.mu.override { emacs = emacs29-pgtk; }) - (pkgs.callPackage ./pkgs/org-analyzer.nix {}) - emacsPackages.mu4e - isync - msmtp - (python3.withPackages (p: with p; [ - pandas - requests - epc lxml - pysocks - pymupdf - markdown - ])) - ]) ++ (with pkgs-stable; [ - nodejs - nodePackages.mermaid-cli - ]) ++ (with pkgs; [ - openssl - stunnel - ]); - - services.mbsync = { - enable = true; - package = pkgs-stable.isync; - frequency = "*:0/5"; - }; - - home.file.".emacs.d/org-yaap" = { - source = "${inputs.org-yaap}"; - recursive = true; - }; - - home.file.".emacs.d/org-side-tree" = { - source = "${inputs.org-side-tree}"; - recursive = true; - }; - - home.file.".emacs.d/org-timeblock" = { - source = "${inputs.org-timeblock}"; - recursive = true; - }; - - home.file.".emacs.d/org-nursery" = { - source = "${inputs.org-nursery}"; - }; - - home.file.".emacs.d/org-krita" = { - source = "${inputs.org-krita}"; - }; - - home.file.".emacs.d/org-xournalpp" = { - source = "${inputs.org-xournalpp}"; - }; - - home.file.".emacs.d/org-sliced-images" = { - source = "${inputs.org-sliced-images}"; - }; - - home.file.".emacs.d/magit-file-icons" = { - source = "${inputs.magit-file-icons}"; - }; - - home.file.".emacs.d/dashboard-logo.webp".source = dashboardLogo; - home.file.".emacs.d/scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh" = { - source = ./scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh; - executable = true; - }; - - home.file.".emacs.d/phscroll" = { - source = "${inputs.phscroll}"; - }; - - home.file.".emacs.d/mini-frame" = { - source = "${inputs.mini-frame}"; - }; - - home.file.".emacs.d/system-vars.el".text = '' - ;;; ~/.emacs.d/config.el -*- lexical-binding: t; -*- - - ;; Import relevant variables from flake into emacs - - (setq user-full-name "''+userSettings.name+''") ; name - (setq user-username "''+userSettings.username+''") ; username - (setq user-mail-address "''+userSettings.email+''") ; email - (setq user-home-directory "/home/''+userSettings.username+''") ; absolute path to home directory as string - (setq user-default-roam-dir "''+userSettings.defaultRoamDir+''") ; absolute path to home directory as string - (setq system-nix-profile "''+systemSettings.profile+''") ; what profile am I using? - (setq system-wm-type "''+userSettings.wmType+''") ; wayland or x11? - (setq doom-font (font-spec :family "''+userSettings.font+''" :size 20)) ; import font - (setq dotfiles-dir "''+userSettings.dotfilesDir+''") ; import location of dotfiles directory - ''; -} diff --git a/user/app/doom-emacs/doom.org b/user/app/doom-emacs/doom.org deleted file mode 100644 index 3f9087f..0000000 --- a/user/app/doom-emacs/doom.org +++ /dev/null @@ -1,2330 +0,0 @@ -#+TITLE: Doom Emacs Literate Config -#+AUTHOR: Emmet -# FIXME doom emacs config -* Table of Contents :TOC:QUOTE: -#+BEGIN_QUOTE -- [[#what-is-doom-emacs][What is Doom Emacs?]] -- [[#configuration-for-doom-emacs][Configuration for Doom Emacs]] -- [[#my-configel][My config.el]] - - [[#preamble--user-configuration][Preamble + User Configuration]] - - [[#registers][Registers]] - - [[#org-mode-configuration][Org Mode Configuration]] - - [[#org-roam-configuration][Org Roam Configuration]] - - [[#org-agenda-configuration][Org Agenda Configuration]] - - [[#magit-configuration][Magit Configuration]] - - [[#ibuffer-configuration][Ibuffer Configuration]] - - [[#dired-configuration][Dired Configuration]] - - [[#ranger-configuration][Ranger Configuration]] - - [[#hledger-mode-configuration][hledger-mode Configuration]] - - [[#no-tab-bar-configuration][NO Tab Bar Configuration]] - - [[#focus-mode-configuration][Focus Mode Configuration]] - - [[#helpful-mode-configuration][Helpful Mode Configuration]] - - [[#mu4e-configuration][mu4e Configuration]] - - [[#direnv][Direnv]] - - [[#projectile][Projectile]] - - [[#sudo-edit][sudo-edit]] - - [[#lsp][LSP]] - - [[#devdocs][DevDocs]] - - [[#terminal][Terminal]] - - [[#elfeed][Elfeed]] -- [[#my-initel][My init.el]] -- [[#my-packagesel][My packages.el]] -- [[#nix-integration][Nix Integration]] -#+END_QUOTE - -* What is Doom Emacs? -[[https://github.com/doomemacs/doomemacs][Doom Emacs]] is a distribution of the [[https://www.gnu.org/software/emacs/][Emacs Text Editor]] designed for [[https://www.vim.org/][Vim]] users. I like to use Emacs due to its extensibility and extra features it is capable of (besides text editing). Some of these extra features include: -- [[https://orgmode.org/][Org Mode]] (Hierarchical text-based document format) -- [[https://www.orgroam.com/][Org Roam]] (A second brain / personal wiki) -- [[https://orgmode.org/][Org Agenda]] (Calendar and todo list) -- [[https://magit.vc/][Magit]] (Git Client) - -I have found Emacs to be incredibly efficient, and transferring my workflow to fit inside of Emacs has allowed me to get much more work done. I primarily use Emacs for writing, note-taking, task/project management and organizing information. - -* Configuration for Doom Emacs -Doom Emacs is configured via 3 main files, written in Elisp, a dialect of the Lisp programming language designed for Emacs. These 3 main files are: -- [[./config.el][config.el]] - Stores your main configuration and allows to set user variables. -- [[./init.el][init.el]] - Allows quick downloads of groups of Emacs packages. These groups of Emacs packages are curated by the Doom Emacs developers. -- [[./packages.el][packages.el]] - Allows you to download additional packages from Melpa (Emacs package manager). - -By storing your configuration in these 3 files, it allows for quick reproducible builds of Doom Emacs. - -You can also load separate files inside of [[./config.el][config.el]] via the =load!= function, like so: - -#+BEGIN_SRC emacs-lisp -(load! "~/.doom.d/private.el") -#+END_SRC - -This can be used to load private config file with non-public information, or can be used to create modular configuration. - -Doom Emacs is traditionally installed by cloning the repository ([[https://github.com/doomemacs/doomemacs][https://github.com/doomemacs/doomemacs]]) and running =./bin/doom install=. I instead install Doom Emacs via Nix Doom Emacs ([[https://github.com/nix-community/nix-doom-emacs][https://github.com/nix-community/nix-doom-emacs]]), which packages Doom Emacs as a Nix derivation. The advantage to this is that I get more reproducibility and the ability to rollback updates (if anything breaks), but the downside is that any time Emacs packages are changed/updated, the entire derivation must be rebuilt from scratch (this is often time-consuming). I load this as a Nix derivation in my flake using the [[./doom.nix][doom.nix]] module. - -* My config.el -** Preamble + User Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- - -;;;------ User configuration ------;;; -(setq use-package-always-defer t) - -;; Import relevant system variables from flake (see doom.nix) -;; includes variables like user-full-name, user-username, user-home-directory, user-email-address, doom-font, -;; and a few other custom variables I use later -(load! "~/.emacs.d/system-vars.el") -;; custom variables include: -;; dotfiles-dir, absolute path to home directory -;; user-default-roam-dir, name of default org-roam directory for the machine (relative to ~/Org) -;; system-nix-profile, profile selected from my dotfiles ("personal" "work" "wsl" etc...) -;; system-wm-type, wayland or x11? only should be considered if system-nix-profile is "personal" or "work" - -;; I prefer visual lines -(setq display-line-numbers-type 'visual - line-move-visual t) -(use-package-hook! evil - :pre-init - (setq evil-respect-visual-line-mode t) ;; sane j and k behavior - t) - -;; I also like evil mode visual movement -(map! :map evil-normal-state-map - :desc "Move to next visual line" - "j" 'evil-next-visual-line - :desc "Move to previous visual line" - "k" 'evil-previous-visual-line) - -;; Theme -(setq custom-theme-directory "~/.emacs.d/themes") -(setq doom-theme 'doom-stylix) -;; +unicode-init-fonts-h often errors out -(remove-hook 'doom-init-ui-hook '+unicode-init-fonts-h) - -;; Transparent background -(if (string= system-nix-profile "wsl") - ;; Can't be that tranparent under wsl because no blur - (funcall (lambda () - (set-frame-parameter nil 'alpha-background 98) - (add-to-list 'default-frame-alist '(alpha-background . 98)) - )) - ;; On Linux I can enable blur, however - (funcall (lambda () - (set-frame-parameter nil 'alpha-background 85) - (add-to-list 'default-frame-alist '(alpha-background . 85)) - )) -) - -(add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) - -;; Icons in completion buffers -(add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup) -(all-the-icons-completion-mode) - -;; Grammar tasing should be voluntary -(setq writegood-mode nil) - -;; Beacon shows where the cursor is, even when fast scrolling -(setq beacon-mode t) - -(setq company-idle-delay 0.05) - -;; Quicker window management keybindings -(bind-key* "C-j" #'evil-window-down) -(bind-key* "C-k" #'evil-window-up) -(bind-key* "C-h" #'evil-window-left) -(bind-key* "C-l" #'evil-window-right) -(bind-key* "C-q" #'evil-window-delete) -(bind-key* "M-q" #'kill-current-buffer) -(bind-key* "M-w" #'+workspace/close-window-or-workspace) -(bind-key* "M-n" #'next-buffer) -(bind-key* "M-p" #'previous-buffer) -(bind-key* "M-z" #'+vterm/toggle) -(bind-key* "M-e" #'+eshell/toggle) -(bind-key* (kbd "M-") #'+vterm/here) -(bind-key* (kbd "M-E") #'+eshell/here) - -;; Buffer management -(bind-key* "" #'next-buffer) -(bind-key* "" #'previous-buffer) - -;; Disables custom.el -(setq custom-file null-device) - -;; emacs-dashboard setup -(require 'all-the-icons) -(require 'dashboard) -(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*")) - doom-fallback-buffer-name "*dashboard*") -(setq image-scaling-factor 1) - -;; emacs-dashboard variables -(setq dashboard-banner-logo-title "Welcome to Nix Doom Emacs") -(setq dashboard-startup-banner "~/.emacs.d/dashboard-logo.webp") -(setq dashboard-icon-type 'all-the-icons) ;; use `all-the-icons' package -(setq dashboard-set-heading-icons t) -(setq dashboard-set-file-icons t) -(setq dashboard-set-navigator t) -(setq dashboard-items '()) -(setq dashboard-center-content t) -(setq dashboard-footer-messages '("Here to do customizing, or actual work?" - "M-x insert-inspiring-message" - "My software never has bugs. It just develops random features." - "Dad, what are clouds made of? Linux servers, mostly." - "There is no place like ~" - "~ sweet ~" - "sudo chown -R us ./allyourbase" - "I’ll tell you a DNS joke but it could take 24 hours for everyone to get it." - "I'd tell you a UDP joke, but you might not get it." - "I'll tell you a TCP joke. Do you want to hear it?")) - -;; Remove basic evil input and cursors from dashboard -(defun disable-cursor() - (setq-local evil-normal-state-cursor '(bar . 0)) - (hl-line-mode -1) -) -(add-hook 'dashboard-mode-hook 'disable-cursor) -(evil-define-key 'normal dashboard-mode-map - "j" 'evil-normal-state - "k" 'evil-normal-state - "h" 'evil-normal-state - "l" 'evil-normal-state) -(setq dashboard-navigator-buttons - `(;; line1 - ( (,"Roam" "" "" (lambda (&rest _)) 'org-formula) - (,(all-the-icons-octicon "globe" :height 1.0 :v-adjust 0.0) - "Notes overview" "" (lambda (&rest _) (org-roam-default-overview)) 'org-formula) - (,(all-the-icons-fileicon "org" :height 1.0 :v-adjust 0.0) - "Switch roam db" "" (lambda (&rest _) (org-roam-switch-db)) 'org-formula) - ) - ;; line 2 - ( (,"Git" "" "" (lambda (&rest _)) 'diredfl-exec-priv) - (,(all-the-icons-octicon "mark-github" :height 1.0 :v-adjust 0.0) - "GitHub" "" (lambda (&rest _) (browse-url "https://github.com/librephoenix")) 'diredfl-exec-priv) - (,(all-the-icons-faicon "gitlab" :height 1.0 :v-adjust 0.0) - "GitLab" "" (lambda (&rest _) (browse-url "https://gitlab.com/librephoenix")) 'diredfl-exec-priv) - (,(all-the-icons-faicon "coffee" :height 1.0 :v-adjust 0.0) - "Gitea" "" (lambda (&rest _) (browse-url my-gitea-domain)) 'diredfl-exec-priv) - (,(all-the-icons-octicon "triangle-up" :height 1.2 :v-adjust -0.1) - "Codeberg" "" (lambda (&rest _) (browse-url "https://codeberg.org/librephoenix")) 'diredfl-exec-priv) - ) - ;; line 3 - ( (,"Agenda" "" "" (lambda (&rest _)) 'dired-warning) - (,(all-the-icons-octicon "checklist" :height 1.0 :v-adjust 0.0) - "Agenda todos" "" (lambda (&rest _) (org-agenda-list)) 'dired-warning) - (,(all-the-icons-octicon "calendar" :height 1.0 :v-adjust 0.0) - "Agenda calendar" "" (lambda (&rest _) (cfw:open-org-calendar)) 'dired-warning) - ) - ;; line 4 - ( (,"Config" "" "" (lambda (&rest _)) 'dired-mark) - (,(all-the-icons-faicon "cogs" :height 1.0 :v-adjust 0.0) - "System config" "" (lambda (&rest _) (projectile-switch-project-by-name "~/.dotfiles" t)) 'dired-mark) - (,(all-the-icons-material "help" :height 1.0 :v-adjust -0.2) - "Doom documentation" "" (lambda (&rest _) (doom/help)) 'dired-mark) - ))) - -(setq dashboard-footer-icon - (all-the-icons-faicon "list-alt" - :height 1.0 - :v-adjust -0.15 - :face 'font-lock-keyword-face)) -(dashboard-setup-startup-hook) - -(map! :leader :desc "Open dashboard" "b b" #'dashboard-refresh-buffer) - -(setq scroll-conservatively 101) - -;; Smooth scrolling -;; requires good-scroll.el -;;(good-scroll-mode 1) -;;(setq good-scroll-duration 0.4 -;; good-scroll-step 270 -;; good-scroll-render-rate 0.03) -;; -;;(global-set-key (kbd "") #'good-scroll-up-full-screen) -;;(global-set-key (kbd "") #'good-scroll-down-full-screen) - -(setq scroll-margin 30) -(setq hscroll-margin 10) - -;; Requires for faster loading -(require 'org-agenda) -(require 'dired) - -;; Garbage collection to speed things up -(add-hook 'after-init-hook - #'(lambda () - (setq gc-cons-threshold (* 100 1024 1024)))) -(add-hook 'focus-out-hook 'garbage-collect) -(run-with-idle-timer 5 t 'garbage-collect) - -;; Enable autorevert globally so that buffers update when files change on disk. -;; Very useful when used with file syncing (i.e. syncthing) -(setq global-auto-revert-mode nil) -(setq auto-revert-use-notify t) - -;; Neotree fun -(defun neotree-snipe-dir () - (interactive) - (if (projectile-project-root) - (neotree-dir (projectile-project-root)) - (neotree-dir (file-name-directory (file-truename (buffer-name)))) - ) -) - -(map! :leader :desc "Open neotree here" "o n" #'neotree-snipe-dir - :desc "Hide neotree" "o N" #'neotree-hide) - -;; For camelCase -(global-subword-mode 1) - -;; ripgrep as grep -(setq grep-command "rg -nS --no-heading " - grep-use-null-device nil) - -;; Mini-frames ;; cool but kinda suboptimal atm -;(add-load-path! "~/.emacs.d/mini-frame") -;(require 'mini-frame) -;(setq mini-frame-ignore-commands '(evil-ex-search-forward helpful-variable helpful-callable)) -;(setq mini-frame-show-parameters -; '((left . 216) -; (top . 240) -; (width . 0.78) -; (height . 20) -; (alpha-background . 90)) -;) -;(setq mini-frame-detach-on-hide nil) -;(setq mini-frame-resize t) -;(setq resize-mini-frames t) -;(setq mini-frame-standalone nil) -;(mini-frame-mode 1) - -#+END_SRC -** Registers -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;------ Registers ------;;; - -(map! :leader - :desc "Jump to register" - "r" 'jump-to-register) - -(if (string= system-nix-profile "personal") (set-register ?f (cons 'file (concat user-home-directory "/Org/Family.s/Notes/hledger.org")))) -(set-register ?h (cons 'file user-home-directory)) -(set-register ?r (cons 'file (concat dotfiles-dir "/README.org"))) - -#+END_SRC -** Org Mode Configuration -*** Standard Org Mode Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;------ Org mode configuration ------;;; - -;; Set default org directory -(setq org-directory "~/Org") -(setq org-attach-directory "~/Org/.attach") -(setq org-attach-id-dir "~/Org/.attach") -(setq org-id-locations-file "~/Org/.orgids") -(setq org-cycle-include-plain-lists 'integrate) - -(remove-hook 'after-save-hook #'+literate|recompile-maybe) -(set-company-backend! 'org-mode nil) - -;; Automatically show images but manually control their size -(setq org-startup-with-inline-images t - org-image-actual-width nil) - -(require 'evil-org) -(require 'evil-org-agenda) -(add-hook 'org-mode-hook 'evil-org-mode -100) - -;; Top-level headings should be bigger! -(custom-set-faces! - `(outline-1 :height 1.3 :foreground ,(nth 1 (nth 14 doom-themes--colors))) - `(outline-2 :height 1.25 :foreground ,(nth 1 (nth 15 doom-themes--colors))) - `(outline-3 :height 1.2 :foreground ,(nth 1 (nth 19 doom-themes--colors))) - `(outline-4 :height 1.1 :foreground ,(nth 1 (nth 23 doom-themes--colors))) - `(outline-5 :height 1.1 :foreground ,(nth 1 (nth 24 doom-themes--colors))) - `(outline-6 :height 1.1 :foreground ,(nth 1 (nth 16 doom-themes--colors))) - `(outline-7 :height 1.05 :foreground ,(nth 1 (nth 18 doom-themes--colors))) - `(outline-8 :height 1.05 :foreground ,(nth 1 (nth 11 doom-themes--colors))) - '(variable-pitch :family "Intel One Mono") - `(org-agenda-date :inherit 'unspecified :foreground ,(nth 1 (nth 19 doom-themes--colors)) :weight bold :height 1.1) - `(org-agenda-date-today :inherit 'unspecified :foreground ,(nth 1 (nth 15 doom-themes--colors)) :weight bold :height 1.1) - `(org-agenda-date-weekend :inherit 'unspecified :foreground ,(nth 1 (nth 24 doom-themes--colors)) :weight bold :height 1.1) - `(org-agenda-date-weekend-today :inherit 'unspecified :foreground ,(nth 1 (nth 15 doom-themes--colors)) :weight bold :height 1.1) -) - -(after! org (org-eldoc-load)) - -(with-eval-after-load 'org (global-org-modern-mode)) - -;; Add frame borders and window dividers -(modify-all-frames-parameters - '((right-divider-width . 5) - (internal-border-width . 5))) -(dolist (face '(window-divider - window-divider-first-pixel - window-divider-last-pixel)) - (face-spec-reset-face face) - (set-face-foreground face (face-attribute 'default :background))) -(set-face-background 'fringe (face-attribute 'default :background)) - -(setq - ;; Edit settings - org-auto-align-tags nil - org-tags-column 0 - org-catch-invisible-edits 'show-and-error - org-special-ctrl-a/e t - org-insert-heading-respect-content t - - ;; Org styling, hide markup etc. - org-hide-emphasis-markers t - org-pretty-entities t - org-ellipsis "…") - -(setq-default line-spacing 0) - -; Automatic table of contents is nice -(if (require 'toc-org nil t) - (progn - (add-hook 'org-mode-hook 'toc-org-mode) - (add-hook 'markdown-mode-hook 'toc-org-mode)) - (warn "toc-org not found")) - -;;---- this block from http://fgiasson.com/blog/index.php/2016/06/21/optimal-emacs-settings-for-org-mode-for-literate-programming/ ----;; -;; Tangle Org files when we save them -(defun tangle-on-save-org-mode-file() - (when (string= (message "%s" major-mode) "org-mode") - (org-babel-tangle))) - -(add-hook 'after-save-hook 'tangle-on-save-org-mode-file) -;; ---- end block ---- ;; - -;; Better org table editing -;; This breaks multiline visual block edits -;;(setq-default evil-insert-state-exit-hook '(org-update-parent-todo-statistics -;; t)) -;;(setq org-table-automatic-realign nil) - -;; Better for org source blocks -(setq electric-indent-mode nil) -(setq org-src-window-setup 'current-window) -(set-popup-rule! "^\\*Org Src" - :side 'top' - :size 0.9) - -;; Horizontal scrolling tables -(add-load-path! "~/.emacs.d/phscroll") -(setq org-startup-truncated nil) -(with-eval-after-load "org" - (require 'org-phscroll)) -(setq phscroll-calculate-in-pixels t) - -;; Org side tree outline -(add-load-path! "~/.emacs.d/org-side-tree") -(require 'org-side-tree) -(setq org-side-tree-persistent nil) -(setq org-side-tree-fontify t) -(setq org-side-tree-enable-folding t) -(defun org-side-tree-create-or-toggle () - (interactive) - (if (or (org-side-tree-has-tree-p) (eq major-mode 'org-side-tree-mode)) - (org-side-tree-toggle) - (org-side-tree))) -(map! :leader - "O t" #'org-side-tree-create-or-toggle) -(map! :map org-side-tree-mode-map - "SPC" nil) - -#+END_SRC - -*** Org Download and Image Capture -#+BEGIN_SRC emacs-lisp :tangle config.el -(require 'org-download) - -;; Drag-and-drop to `dired` -(add-hook 'dired-mode-hook 'org-download-enable) - -;; system-wm-type, wayland or x11? only should be considered if system-nix-profile is "personal" or "work" -(if (string= system-wm-type "wayland") - (setq org-download-screenshot-method "grim -g \"$(slurp)\" %s") - (setq org-download-screenshot-method "flameshot gui -p %s") -) - -(after! org-download - (setq org-download-method 'directory)) - -(after! org - (setq-default org-download-image-dir "img/" - org-download-heading-lvl nil)) - -(add-to-list 'display-buffer-alist '("^*Async Shell Command*" . (display-buffer-no-window))) - -(defun org-download-clipboard-basename () - (interactive) - (setq org-download-path-last-dir org-download-image-dir) - (setq org-download-image-dir (completing-read "directory: " (-filter #'f-directory-p (directory-files-recursively "." "" t)) nil t)) - (org-download-clipboard (completing-read "basename: " '() nil nil)) - (setq org-download-image-dir org-download-path-last-dir) -) - -(map! :leader - :desc "Insert a screenshot" - "i s" 'org-download-screenshot - :desc "Insert image from clipboard" - "i p" 'org-download-clipboard - "i P" 'org-download-clipboard-basename) - -#+END_SRC -*** External Program File Management -#+BEGIN_SRC emacs-lisp :tangle config.el -(defun org-new-file-from-template() - "Copy a template from ~/Templates into a time stamped unique-named file in the -same directory as the org-buffer and insert a link to this file." - (interactive) - (setq template-file (completing-read "Template file:" (directory-files "~/Templates"))) - (setq filename - (concat - (make-temp-name - (concat (file-name-directory (buffer-file-name)) - "files/" - (file-name-nondirectory (buffer-file-name)) - "_" - (format-time-string "%Y%m%d_%H%M%S_")) ) (file-name-extension template-file t))) - (copy-file (concat user-home-directory "/Templates/" template-file) filename) - (setq prettyname (read-from-minibuffer "Pretty name:")) - (insert (concat "[[./files/" (file-name-nondirectory filename) "][" prettyname "]]")) - (org-display-inline-images)) - -(map! :leader - :desc "Create a new file from a template and insert a link at point" - "i t" 'my-org-new-file-from-template) - -(if (not (string= system-nix-profile "wsl")) - (when (require 'openwith nil 'noerror) - (setq openwith-associations - (list - (list (openwith-make-extension-regexp - '("mpg" "mpeg" "mp3" "mp4" - "avi" "wmv" "wav" "mov" "flv" - "ogm" "ogg" "mkv")) - "mpv" - '(file)) - (list (openwith-make-extension-regexp - '("doc" "xls" "ppt" "odt" "ods" "odg" "odp")) - "libreoffice" - '(file)) - '("\\.lyx" "lyx" (file)) - '("\\.chm" "kchmviewer" (file)) - (list (openwith-make-extension-regexp - '("pdf" "ps" "ps.gz" "dvi")) - "atril" - '(file)) - (list (openwith-make-extension-regexp - '("kdenlive")) - "kdenlive-accel" - '(file)) - (list (openwith-make-extension-regexp - '("kra")) - "krita" - '(file)) - (list (openwith-make-extension-regexp - '("blend" "blend1")) - "blender" - '(file)) - (list (openwith-make-extension-regexp - '("helio")) - "helio" - '(file)) - (list (openwith-make-extension-regexp - '("svg")) - "inkscape" - '(file)) - (list (openwith-make-extension-regexp - '("flp")) - "flstudio" - '(file)) - (list (openwith-make-extension-regexp - '("mid")) - "rosegarden" - '(file)) - )) - (openwith-mode 1))) - -(add-load-path! "~/.emacs.d/org-krita") -(require 'org-krita) -(add-hook 'org-mode-hook 'org-krita-mode) -(setq org-krita-extract-filename "preview.png") -(setq org-krita-scale 1) - -(add-load-path! "~/.emacs.d/org-xournalpp") -(require 'org-xournalpp) -(add-hook 'org-mode-hook 'org-xournalpp-mode) -(setq org-xournalpp-template-getter - '(closure - (t) - nil - (file-truename "~/Templates/template.xopp") ; use my own template - ) -) - -;; override width to static 250 for now -;; so I don't have massive images in org mode (scrolling not fun) -(defun org-xournalpp--create-image (link refresh) - "Extract svg/png from given LINK and return image. - -Regenerate the cached inline image, if REFRESH is true. - -If the path from LINK does not exist, nil is returned." - (let ((width 250) - (xopp-path (f-expand (org-element-property :path link)))) - (when (f-exists? xopp-path) - (if width - (create-image (org-xournalpp--get-image xopp-path refresh) - org-xournalpp-image-type - nil - :width width) - (create-image (org-xournalpp--get-image xopp-path refresh) - org-xournalpp-image-type - nil))))) - - -#+END_SRC -*** Copy Links/Files into Clipboard -#+BEGIN_SRC emacs-lisp :tangle config.el -(defun org-copy-link-to-clipboard-at-point () - "Copy current link at point into clipboard (useful for images and links)" - ;; Remember to press C-g to kill this foreground process if it hangs! - (interactive) - (if (eq major-mode #'org-mode) - (link-hint-copy-link-at-point) - ) - (if (eq major-mode #'ranger-mode) - (ranger-copy-absolute-file-paths) - ) - (if (eq major-mode #'image-mode) - (image-mode-copy-file-name-as-kill) - ) - (shell-command "~/.emacs.d/scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh " nil nil) -) - -(if (string= system-nix-profile "wsl") - (map! :leader - :desc "Copy link at point" - "y y" 'link-hint-copy-link-at-point) - (map! :leader - :desc "Copy link/file at point into system clipbord (C-g to escape if copying a file)" - "y y" 'org-copy-link-to-clipboard-at-point)) - -#+END_SRC -**** Copy Link/File to Clipboard Helper Script -Shamelessly stolen from [[https://unix.stackexchange.com/questions/30093/copy-image-from-command-line-to-clipboard][here]] and modified for my use. -#+BEGIN_SRC shell :tangle ./scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh :tangle-mode (identity #o755) -#!/bin/sh -if [ $(echo $XDG_SESSION_TYPE) == "wayland" ]; then - FILENAME="$(wl-paste)" - FILTEREDFILENAME=$(echo "$FILENAME" | sed "s+file:+./+") - echo "$FILTEREDFILENAME" - if [[ -f "$FILTEREDFILENAME" ]]; then - wl-copy < "$FILTEREDFILENAME" - fi -elif [ $(echo $XDG_SESSION_TYPE) == "x11" ]; then - FILENAME="$(xclip -o)" - FILTEREDFILENAME=$(echo "$FILENAME" | sed "s+file:+./+") - if [[ -f "$FILTEREDFILENAME" ]]; then - TYPE=$(file -b --mime-type "$FILTEREDFILENAME") - xclip -selection clipboard -t "$TYPE" -i "$FILTEREDFILENAME" - exit - fi -else - exit -fi -exit -#+END_SRC -*** NO Org Sliced Images -#+begin_src emacs-lisp -;; this is kinda buggy -(add-load-path! "~/.emacs.d/org-sliced-images") -(require 'org-sliced-images) -(defalias 'org-remove-inline-images #'org-sliced-images-remove-inline-images) -(defalias 'org-toggle-inline-images #'org-sliced-images-toggle-inline-images) -(defalias 'org-display-inline-images #'org-sliced-images-display-inline-images) -#+end_src -*** Org Online Images -#+BEGIN_SRC emacs-lisp :tangle config.el -;; Online images inside of org mode is pretty cool -;; This snippit is from Tobias on Stack Exchange -;; https://emacs.stackexchange.com/questions/42281/org-mode-is-it-possible-to-display-online-images -(require 'org-yt) - -(defun org-image-link (protocol link _description) - "Interpret LINK as base64-encoded image data." - (cl-assert (string-match "\\`img" protocol) nil - "Expected protocol type starting with img") - (let ((buf (url-retrieve-synchronously (concat (substring protocol 3) ":" link)))) - (cl-assert buf nil - "Download of image \"%s\" failed." link) - (with-current-buffer buf - (goto-char (point-min)) - (re-search-forward "\r?\n\r?\n") - (buffer-substring-no-properties (point) (point-max))))) - -(org-link-set-parameters - "imghttp" - :image-data-fun #'org-image-link) - -(org-link-set-parameters - "imghttps" - :image-data-fun #'org-image-link) -#+END_SRC -*** Org Mermaid Diagrams -#+BEGIN_SRC emacs-lisp :tangle config.el -;; Mermaid diagrams -(setq ob-mermaid-cli-path "~/.nix-profile/bin/mmdc") -#+END_SRC -*** Org Simple Printing -#+BEGIN_SRC emacs-lisp :tangle config.el -;; Print org mode -(defun org-simple-print-buffer () - "Open an htmlized form of current buffer and open in a web browser to print" - (interactive) - (htmlize-buffer) - (browse-url-of-buffer (concat (buffer-name) ".html")) - (sleep-for 1) - (kill-buffer (concat (buffer-name) ".html"))) - -;; Doesn't work yet, bc htmlize-region takes arguments BEG and END -;(defun org-simple-print-region() -; "Open an htmlized form of current region and open in a web browser to print" -; (interactive) -; (htmlize-region ) -; (browse-url-of-buffer (concat (buffer-name) ".html")) -; (sleep-for 1) -; (kill-buffer (concat (buffer-name) ".html"))) - -(map! :leader - :prefix ("P" . "Print") - :desc "Simple print buffer in web browser" - "p" 'org-simple-print-buffer) - -(map! :leader - :prefix ("P" . "Print") - :desc "Simple print buffer in web browser" - "b" 'org-simple-print-buffer) - -;(map! :leader -; :prefix ("P" . "Print") -; :desc "Simple print region in web browser" -; "r" 'org-simple-print-region) - -#+END_SRC -*** Org Inline Macros -#+BEGIN_SRC emacs-lisp :tangle config.el -;; Display macros inline in buffers -(add-to-list 'font-lock-extra-managed-props 'display) - -(font-lock-add-keywords - 'org-mode - '(("\\({{{[a-zA-Z#%)(_-+0-9]+}}}\\)" 0 - `(face nil display - ,(format "%s" - (let* ((input-str (match-string 0)) - (el (with-temp-buffer - (insert input-str) - (goto-char (point-min)) - (org-element-context))) - (text (org-macro-expand el org-macro-templates))) - (if text - text - input-str))))))) - -#+END_SRC -*** Org Transclusion -#+BEGIN_SRC emacs-lisp :tangle config.el -;; Org transclusion -(require 'org-transclusion) -(after! org - (map! :map global-map "" #'org-transclusion-add :leader :prefix "n" :desc "Org Transclusion Mode" "t" #'org-transclusion-mode) - (map! :leader :prefix "n" "l" #'org-transclusion-live-sync-start) - (setq org-transclusion-exclude-elements '(property-drawer keyword)) - (add-hook 'org-mode-hook #'org-transclusion-mode) -) - -#+END_SRC -*** Org Jekyll -#+begin_src emacs-lisp :tangle config.el -(defun org-jekyll-new-post () - (interactive) - (setq new-blog-post-title (read-from-minibuffer "Post name: ")) - (setq new-blog-post-date (format-time-string "%Y-%m-%d" (date-to-time (org-read-date)))) - (setq new-blog-post-slug (downcase (replace-regexp-in-string "[^[:alpha:][:digit:]_-]" "" (string-replace " " "-" new-blog-post-title)))) - (setq new-blog-post-file (concat (projectile-project-root) "org/_posts/" new-blog-post-date "-" new-blog-post-slug ".org")) - (let ((org-capture-templates - `(("p" "New Jekyll blog post" plain (file new-blog-post-file) - ,(concat "#+title: " new-blog-post-title "\n#+options: toc:nil num:nil\n#+begin_export html\n---\nlayout: post\ntitle: " new-blog-post-title "\nexcerpt: %?\ntags: \npermalink: " new-blog-post-date "-" new-blog-post-slug "\n---\n#+end_export\n\n#+attr_html: :alt " new-blog-post-title " :align center\n[[../assets/" new-blog-post-date "-" new-blog-post-slug ".png]]"))) - )) (org-capture)) -) - -(defun org-jekyll-rename-post () - (interactive) - (setq new-blog-post-title (read-from-minibuffer "Post name: ")) - (setq new-blog-post-date (format-time-string "%Y-%m-%d" (date-to-time (org-read-date)))) - (setq new-blog-post-slug (downcase (replace-regexp-in-string "[^[:alpha:][:digit:]_-]" "" (string-replace " " "-" new-blog-post-title)))) - (org-roam-set-keyword "title" new-blog-post-title) - (replace-regexp "permalink: .*\n" (concat "permalink: " new-blog-post-date "-" new-blog-post-slug "\n") nil (point-min) (point-max)) - (replace-regexp "title: .*\n" (concat "title: " new-blog-post-title "\n") nil (point-min) (point-max)) - (setq prev-blog-post-filename-base (file-name-base (buffer-file-name))) - (doom/move-this-file (concat new-blog-post-date "-" new-blog-post-slug ".org")) - (shell-command (concat "sed -i s/" prev-blog-post-filename-base "/" (file-name-base (buffer-file-name)) "/g *.org") nil) - (replace-regexp prev-blog-post-filename-base (file-name-base (buffer-file-name)) nil (point-min) (point-max)) - (save-buffer) -) - -(map! :leader - :prefix ("N") - - :desc "New blog post" - "p" #'org-jekyll-new-post - - :desc "Rename or redate blog post and update links accordingly" - "e" #'org-jekyll-rename-post -) - -#+end_src -*** Crdt -#+begin_src emacs-lisp :tangle config.el -(require 'crdt) -(setq crdt-default-tls t) -(setq crdt-use-stunnel t) -(setq crdt-default-name "Emmet") -(if (file-exists-p "~/.emacs.d/crdt-private.el") (load! "~/.emacs.d/crdt-private.el")) -(defun crdt-connect-default () - (interactive) - (crdt-connect crdt-default-server-address crdt-default-name) -) -(map! :leader - :desc "crdt" - :prefix ("C") - - :desc "Connect to a crdt server" - "c" #'crdt-connect-default - - :desc "Connect to default crdt server" - "C" #'crdt-connect-default - - :desc "Disconnect from a crdt server" - "d" #'crdt-disconnect - - :desc "Add buffer to a session" - "a" #'crdt-share-buffer - - :desc "Stop sharing buffer when running a server" - "s" #'crdt-stop-share-buffer - - :desc "Run M-x on the (remote) crdt session" - "x" #'crdt-M-x - - :desc "List crdt buffers in a session" - "l" #'crdt-list-buffers - - :desc "List crdt users in a session" - "u" #'crdt-list-users -) - -#+end_src -*** Org Analyzer -#+begin_src emacs-lisp :tangle config.el -(require 'org-analyzer) -(setq org-analyzer-wrapper-command "org-analyzer") -(setq org-analyzer-jar-file-name "~/.nix-profile/bin/org-analyzer.jar") -(setq org-analyzer-java-program "~/.nix-profile/bin/org-analyzer") ;; Is not actually java, buta wrapper shell script - -(defun org-analyzer-start-process (org-dir) - "Start the org analyzer process . -Argument ORG-DIR is where the org-files are located." - (org-analyzer-cleanup-process-state) - (unless (file-exists-p org-dir) - (warn "org-analyzer was started with org-directory set to - \"%s\"\nbut this directory does not exist. -Please set the variable `org-directory' to the location where you keep your org files." - org-directory)) - (let* ((name (format " *org-analyzer [org-dir:%s]*" org-dir)) - (proc-buffer (generate-new-buffer name)) - (proc nil)) - (setq org-analyzer-process-buffer proc-buffer) - (with-current-buffer proc-buffer - (setq default-directory (if (file-exists-p org-dir) - org-dir default-directory) - proc (condition-case err - (let ((process-connection-type nil) - (process-environment process-environment)) - (start-process name - (current-buffer) - org-analyzer-wrapper-command - "--port" - (format "%d" org-analyzer-http-port) - "--started-from-emacs" - (if (file-exists-p org-dir) org-dir ""))) - (error - (concat "Can't start org-analyzer (%s: %s)" - (car err) (cadr err))))) - (set-process-query-on-exit-flag proc nil) - (set-process-filter proc #'org-analyzer-process-filter)) - proc-buffer)) - -#+end_src -** Org Roam Configuration -*** Standard Org Roam Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;------ Org roam configuration ------;;; -(require 'org-roam) -(require 'org-roam-dailies) - -(setq org-roam-directory (concat "~/Org/" user-default-roam-dir "/Notes") - org-roam-db-location (concat "~/Org/" user-default-roam-dir "/Notes/org-roam.db")) - -(setq org-roam-node-display-template - "${title:65}📝${tags:*}") - -(org-roam-db-autosync-mode) - -(setq mode-line-misc-info '((which-function-mode - (which-func-mode - ("" which-func-format " "))) - ("" so-long-mode-line-info) - (global-mode-string - ("" global-mode-string)) - " " - org-roam-db-choice) -) - -(setq org-roam-list-files-commands '(rg)) - -#+END_SRC -*** Multi Org Roam Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -(setq full-org-roam-db-list nil) - -(setq full-org-roam-db-list (directory-files "~/Org" t "\\.[p,s]$")) -(dolist (item full-org-roam-db-list) - (setq full-org-roam-db-list - (append (directory-files item t "\\.[p,s]$") full-org-roam-db-list))) - -(setq org-roam-db-choice user-default-roam-dir) -(setq full-org-roam-db-list-pretty (list)) -(dolist (item full-org-roam-db-list) - (setq full-org-roam-db-list-pretty - (append (list - (replace-regexp-in-string (concat "\\/home\\/" user-username "\\/Org\\/") "" item)) full-org-roam-db-list-pretty))) - -(defun org-roam-open-dashboard () - "Open ${org-roam-directory}/dashboard.org (I use this naming convention to create dashboards for each of my org roam maps)" - (interactive) - (if (org-roam-node-from-title-or-alias "Overview") - (org-roam-node-open (org-roam-node-from-title-or-alias "Overview")) - (dired org-roam-directory)) -) - -(defun org-roam-open-inbox () - "Open ${org-roam-directory}/dashboard.org (I use this naming convention to create dashboards for each of my org roam maps)" - (interactive) - (if (org-roam-node-from-title-or-alias "Inbox") - (org-roam-node-open (org-roam-node-from-title-or-alias "Inbox")) - (message "No inbox found, capture something with M-x org-roam-capture-inbox")) -) - -(defun org-roam-capture-inbox () - (interactive) - (org-roam-capture- :node (org-roam-node-from-title-or-alias "Inbox") - :templates '(("i" "inbox" plain "* %?" - :if-new (file+head "%<%Y%m%d%H%M%S>-inbox.org" "#+title: Inbox\n"))))) - -(defun org-roam-switch-db (&optional arg silent) - "Switch to a different org-roam database, arg" - (interactive) - (when (not arg) - (setq full-org-roam-db-list nil) - - (setq full-org-roam-db-list (directory-files "~/Org" t "\\.[p,s]$")) - (dolist (item full-org-roam-db-list) - (setq full-org-roam-db-list - (append (directory-files item t "\\.[p,s]$") full-org-roam-db-list))) - - (setq full-org-roam-db-list-pretty (list)) - (dolist (item full-org-roam-db-list) - (setq full-org-roam-db-list-pretty - (append (list - (replace-regexp-in-string (concat "\\/home\\/" user-username "\\/Org\\/") "" item)) full-org-roam-db-list-pretty))) - - (setq org-roam-db-choice (completing-read "Select org roam database: " - full-org-roam-db-list-pretty nil t))) - (when arg - (setq org-roam-db-choice arg)) - - (setq org-roam-directory (file-truename (concat "~/Org/" org-roam-db-choice "/Notes")) - org-roam-db-location (file-truename (concat "~/Org/" org-roam-db-choice "/Notes/org-roam.db")) - org-directory (file-truename (concat "~/Org/" org-roam-db-choice "/Notes"))) - (when (not silent) - (org-roam-open-dashboard)) - - (org-roam-db-sync) - - (message (concat "Switched to " org-roam-db-choice " org-roam database!"))) - -(defun org-roam-default-overview () - (interactive) - (org-roam-switch-db user-default-roam-dir)) - -(defun org-roam-switch-db-id-open (arg ID &optional switchpersist) - "Switch to another org-roam db and visit file with id arg" - "If switchpersist is non-nil, stay in the new org-roam db after visiting file" - (interactive) - (setq prev-org-roam-db-choice org-roam-db-choice) - (org-roam-switch-db arg 1) - (org-roam-id-open ID) - (when (not switchpersist) - (org-roam-switch-db prev-org-roam-db-choice 1))) - -#+END_SRC - -#+RESULTS: -: org-roam-switch-db-id-open - -*** Org Roam "todos" Tagging for Org Agenda -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;------ Org-roam-agenda configuration ------;;; -(defun text-in-buffer-p (TEXT) -(save-excursion (goto-char (point-min)) (search-forward TEXT nil t))) - -(defun apply-old-todos-tag-maybe (&optional FILE) - (interactive) - (if (stringp FILE) - (setq the-daily-node-filename FILE) - (setq the-daily-node-filename buffer-file-name)) - (if (org-roam-dailies--daily-note-p the-daily-node-filename) - (if (<= (nth 2 (org-roam-dailies-calendar--file-to-date the-daily-node-filename)) (nth 2 org-agenda-current-date)) - (if (<= (nth 1 (org-roam-dailies-calendar--file-to-date the-daily-node-filename)) (nth 1 org-agenda-current-date)) - (if (<= (nth 0 (org-roam-dailies-calendar--file-to-date the-daily-node-filename)) (nth 0 org-agenda-current-date)) - (funcall (lambda () - (with-current-buffer (get-file-buffer the-daily-node-filename) (org-roam-tag-add '("old-todos"))) - (with-current-buffer (get-file-buffer the-daily-node-filename) (org-roam-tag-remove '("todos"))) - ) - ) - ) - ) - ) - ) -) - -(defun apply-old-todos-tag-maybe-and-save (FILE) - (interactive) - (find-file-noselect FILE) - (apply-old-todos-tag-maybe FILE) - (with-current-buffer (get-file-buffer the-daily-node-filename) (save-buffer)) - (with-current-buffer (get-file-buffer the-daily-node-filename) (kill-buffer)) -) - -(defun org-current-buffer-has-todos () - "Return non-nil if current buffer has any todo entry." - - (org-element-map ; (2) - (org-element-parse-buffer 'headline) ; (1) - 'headline - (lambda (h) - (eq (org-element-property :todo-type h) - 'todo)) - nil 'first-match)) ; (3) - -(defun org-has-recent-timestamps (OLD-DAYS) - "Return non-nil only if current buffer has entries with timestamps - more recent than OLD-DAYS days" - (interactive) - (if (org-element-map (org-element-parse-buffer) 'timestamp - (lambda (h) - (org-element-property :raw-value h))) - (org-element-map ; (2) - (org-element-parse-buffer) ; (1) - 'timestamp - (lambda (h) - (time-less-p (time-subtract (current-time) (* 60 60 24 OLD-DAYS)) (date-to-time (org-element-property :raw-value h)))) - nil 'first-match) nil)) - -(setq org-timestamps-days-for-old 21) - -; This has a bug where it won't sync a new agenda file -; if I'm editing an org roam node file while set to another -; org roam db -(defun add-todos-tag-on-save-org-mode-file() - (interactive) - (when (string= (message "%s" major-mode) "org-mode") - (if (org-roam-node-p (org-roam-node-at-point)) - (funcall (lambda() - (if (or (org-current-buffer-has-todos) (org-has-recent-timestamps org-timestamps-days-for-old)) - (org-roam-tag-add '("todos")) - (org-roam-tag-remove '("todos")) - ) - (apply-old-todos-tag-maybe) - ) - ) - ) - ) -) - -(add-hook 'before-save-hook 'add-todos-tag-on-save-org-mode-file) - -#+END_SRC -*** Setup Org Agenda from Org Roam -#+BEGIN_SRC emacs-lisp :tangle config.el -(defun org-roam-filter-by-tag (tag-name) - (lambda (node) - (member tag-name (org-roam-node-tags node)))) - -(defun org-roam-list-notes-by-tag (tag-name) - (mapcar #'org-roam-node-file - (seq-filter - (org-roam-filter-by-tag tag-name) - (org-roam-node-list)))) - -(defun org-roam-dailies-apply-old-todos-tags-to-all () -; (dolist (daily-node org-roam-dailies-files) -; (apply-old-todos-tag-maybe-and-save daily-node) -; ) - (setq num 0) - (while (< num (list-length (org-roam-list-notes-by-tag "todos"))) - (apply-old-todos-tag-maybe-and-save (nth num (org-roam-list-notes-by-tag "todos"))) - (setq num (1+ num)) - ) -) - -;; Refreshing org roam agenda -(defun org-roam-refresh-agenda-list () - (interactive) - (setq prev-org-roam-db-choice org-roam-db-choice) - (setq org-agenda-files '()) - (setq org-id-files '()) - (setq org-roam-directory (file-truename "~/Org") - org-roam-db-location (file-truename "~/Org/org-roam.db") - org-directory (file-truename "~/Org/")) - (org-roam-db-sync) - (setq org-agenda-files (org-roam-list-notes-by-tag "todos")) - (setq org-id-files (org-roam-list-files)) - (setq org-agenda-files (-uniq org-agenda-files)) - (org-roam-switch-db prev-org-roam-db-choice 1) -) - -;; Build agenda only when org agenda first opened for session -(setq org-roam-agenda-initialized nil) -(defun org-roam-refresh-agenda-list-init () - (if (not org-roam-agenda-initialized) - (funcall - (lambda () - (org-roam-refresh-agenda-list) - (setq org-roam-agenda-initialized t) - ) - ) - ) -) -(add-hook 'org-agenda-mode-hook 'org-roam-refresh-agenda-list-init) - -(map! :leader - :prefix ("o a") - - :desc "Refresh org agenda from roam dbs" - "r" 'org-roam-refresh-agenda-list) - -#+END_SRC -*** Org Roam Keybindings -#+BEGIN_SRC emacs-lisp :tangle config.el -(map! :leader - :prefix ("N" . "org-roam notes") - - :desc "Capture new roam node" - "c" 'org-roam-capture - - :desc "Open org roam inbox" - "I o" 'org-roam-open-inbox - - :desc "Capture stuff in inbox" - "I c" 'org-roam-capture-inbox - - :desc "Insert roam node link at point" - "i" 'org-roam-node-insert - - :desc "Find roam node" - "." 'org-roam-node-find - - :desc "Switch org-roam database" - "s" 'org-roam-switch-db - - :desc "Update current org-roam database" - "u" 'org-roam-db-sync - - :desc "Re-zoom on current node in org-roam-ui" - "z" 'org-roam-ui-node-zoom - - :desc "Visualize org-roam database with org-roam-ui" - "O" 'org-roam-default-overview - - :desc "Visualize org-roam database with org-roam-ui" - "o" 'org-roam-open-dashboard) - -#+END_SRC -*** Org Roam Capture Templates -#+BEGIN_SRC emacs-lisp :tangle config.el -(after! org-roam - (setq org-roam-capture-templates - '(("d" "default" plain "%?" :target - (file+head "%<%Y%m%d%H%M%S>-${slug}.org" "#+title: ${title}\n") - :unnarrowed t)))) - -#+END_SRC -*** Org Roam Olivetti Mode -#+BEGIN_SRC emacs-lisp :tangle config.el -(setq olivetti-style 'fancy - olivetti-margin-width 100) -(setq-default olivetti-body-width 100) -(defun org-roam-olivetti-mode () - (interactive) - (if (org-roam-file-p) - (olivetti-mode)) - (if (org-roam-file-p) - (doom-disable-line-numbers-h))) - -(add-hook 'org-mode-hook 'org-roam-olivetti-mode) - -#+END_SRC -*** Org Roam Dynamic Blocks -#+BEGIN_SRC emacs-lisp :tangle config.el -(add-load-path! "~/.emacs.d/org-nursery/lisp") -(require 'org-roam-dblocks) -(add-hook 'org-mode-hook 'org-roam-dblocks-autoupdate-mode) -#+END_SRC -*** Org Roam Export Setup -#+BEGIN_SRC emacs-lisp :tangle config.el -(setq org-id-extra-files 'org-agenda-text-search-extra-files) - -#+END_SRC -*** Org Roam UI Setup -I want this to be able to automatically open ORUI in EAF Browser in a split to the right. This kinda works now? -On Wayland, EAF doesn't work. -#+BEGIN_SRC emacs-lisp :tangle config.el -;(add-to-list 'display-buffer-alist '("^\\ORUI" display-buffer-in-side-window -; '(side . right) -; (window-width . 50) -;)) -;(add-to-list 'display-buffer-alist '("^\\localhost:35901" display-buffer-in-side-window -; '(side . right) -; (window-width . 50) -;)) - -;;(setq org-roam-ui-browser-function 'eaf-open-browser) ; xorg -(setq org-roam-ui-browser-function 'browse-url) ; wayland - -(defun open-org-roam-ui () - (interactive) - (+evil/window-vsplit-and-follow) - (org-roam-ui-open) - (evil-window-left 1)) - -(defun kill-org-roam-ui () - (interactive) -;; (delete-window (get-buffer-window "ORUI" t)) ; xorg -;; (kill-buffer "ORUI") ; xorg - (kill-buffer "*httpd*") -) - -; xorg -;;(map! :leader -;; :prefix ("N" . "org-roam notes") -;; :desc "Visualize org-roam database with org-roam-ui" -;; "v" 'open-org-roam-ui) - -; wayland -(map! :leader - :prefix ("N" . "org-roam notes") - :desc "Visualize org-roam database with org-roam-ui" - "v" 'org-roam-ui-open) - -(map! :leader - :prefix ("N" . "org-roam notes") - :desc "Kill all org roam ui buffers" - "V" 'kill-org-roam-ui) - -#+END_SRC -** Org Agenda Configuration -*** Standard Org Agenda Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;------ Org agenda configuration ------;;; -;; Set span for agenda to be just daily -(setq org-agenda-span 1 - org-agenda-start-day "+0d" - org-agenda-skip-timestamp-if-done t - org-agenda-skip-deadline-if-done t - org-agenda-skip-scheduled-if-done t - org-agenda-skip-scheduled-if-deadline-is-shown t - org-agenda-skip-timestamp-if-deadline-is-shown t - org-log-into-drawer t) - -;; Custom styles for dates in agenda -(custom-set-faces! - '(org-agenda-date :inherit outline-1 :height 1.15) - '(org-agenda-date-today :inherit outline-2 :height 1.15) - '(org-agenda-date-weekend :inherit outline-1 :height 1.15) - '(org-agenda-date-weekend-today :inherit outline-2 :height 1.15) - '(org-super-agenda-header :inherit custom-button :weight bold :height 1.05) - `(link :foreground unspecified :underline nil :background ,(nth 1 (nth 7 doom-themes--colors))) - '(org-link :foreground unspecified)) - -;; Toggle completed entries function -(defun org-agenda-toggle-completed () - (interactive) - (setq org-agenda-skip-timestamp-if-done (not org-agenda-skip-timestamp-if-done) - org-agenda-skip-deadline-if-done (not org-agenda-skip-timestamp-if-done) - org-agenda-skip-scheduled-if-done (not org-agenda-skip-timestamp-if-done)) - (org-agenda-redo)) - -(map! - :map evil-org-agenda-mode-map - :after org-agenda - :nvmeg "s d" #'org-agenda-toggle-completed) - -;; Ricing org agenda -(setq org-agenda-current-time-string "") -(setq org-agenda-time-grid '((daily) () "" "")) - -(setq org-agenda-prefix-format '( -(agenda . " %?-2i %t ") - (todo . " %i %-12:c") - (tags . " %i %-12:c") - (search . " %i %-12:c"))) - -(setq org-agenda-hide-tags-regexp ".*") - -(setq org-agenda-category-icon-alist - `(("Teaching.p" ,(list (all-the-icons-faicon "graduation-cap" :height 0.8)) nil nil :ascent center) - ("Family.s" ,(list (all-the-icons-faicon "home" :v-adjust 0.005)) nil nil :ascent center) - ("Producer.p" ,(list (all-the-icons-faicon "youtube-play" :height 0.9)) nil nil :ascent center) - ("Bard.p" ,(list (all-the-icons-faicon "music" :height 0.9)) nil nil :ascent center) - ("Stories.s" ,(list (all-the-icons-faicon "book" :height 0.9)) nil nil :ascent center) - ("Author.p" ,(list (all-the-icons-faicon "pencil" :height 0.9)) nil nil :ascent center) - ("Gamedev.s" ,(list (all-the-icons-faicon "gamepad" :height 0.9)) nil nil :ascent center) - ("Knowledge.p" ,(list (all-the-icons-faicon "database" :height 0.8)) nil nil :ascent center) - ("Personal.p" ,(list (all-the-icons-material "person" :height 0.9)) nil nil :ascent center) -)) - -#+END_SRC - -*** Org Agenda Convenience Functions -#+BEGIN_SRC emacs-lisp :tangle config.el -(defalias 'org-timestamp-down 'org-timestamp-down-day) -(defalias 'org-timestamp-up 'org-timestamp-up-day) - -(defun org-categorize-by-roam-db-on-save () - (interactive) - (when (string= (message "%s" major-mode) "org-mode") - (when - (string-prefix-p (concat "/home/" user-username "/Org") (expand-file-name (buffer-file-name))) - (setq categorizer-old-line (line-number-at-pos)) - (evil-goto-first-line) - (org-set-property "CATEGORY" (substring (string-trim-left (expand-file-name (buffer-file-name)) (concat "/home/" user-username "/Org/")) 0 (string-match "/" (string-trim-left (expand-file-name (buffer-file-name)) (concat "/home/" user-username "/Org/"))))) - (evil-goto-line categorizer-old-line) - ) - ) -) - -(add-hook 'after-save-hook 'org-categorize-by-roam-db-on-save) - -;; Function to be run when org-agenda is opened -(defun org-agenda-open-hook () - "Hook to be run when org-agenda is opened" - (olivetti-mode)) - -;; Adds hook to org agenda mode, making follow mode active in org agenda -(add-hook 'org-agenda-mode-hook 'org-agenda-open-hook) - -;; Easy refreshes on org agenda for syncthing file changes -;; adapted from https://www.reddit.com/r/orgmode/comments/mu6n5b/org_agenda_auto_updating/ -;; and https://lists.gnu.org/archive/html/help-gnu-emacs/2008-12/msg00435.html -(defadvice org-agenda-list (before refresh-org-agenda-on-revert activate) - (mapc (lambda (file) - (unless (verify-visited-file-modtime (get-file-buffer file)) - (with-current-buffer (get-file-buffer file) - (when (eq major-mode 'org-mode) - (revert-buffer nil 'noconfirm))))) - (org-agenda-files))) -(defadvice org-agenda-redo (before refresh-org-agenda-on-revert activate) - (mapc (lambda (file) - (unless (verify-visited-file-modtime (get-file-buffer file)) - (with-current-buffer (get-file-buffer file) - (when (eq major-mode 'org-mode) - (revert-buffer nil 'noconfirm))))) - (org-agenda-files))) -(defadvice org-agenda-redo-all (before refresh-org-agenda-on-revert activate) - (mapc (lambda (file) - (unless (verify-visited-file-modtime (get-file-buffer file)) - (with-current-buffer (get-file-buffer file) - (when (eq major-mode 'org-mode) - (revert-buffer nil 'noconfirm))))) - (org-agenda-files))) - -;; Function to list all my available org agenda files and switch to them -(defun list-and-switch-to-agenda-file () - "Lists all available agenda files and switches to desired one" - (interactive) - (setq full-agenda-file-list nil) - (setq choice (completing-read "Select agenda file:" org-agenda-files nil t)) - (find-file choice)) - -(map! :leader - :desc "Switch to specific org agenda file" - "o a s" 'list-and-switch-to-agenda-file) - -(defun org-agenda-switch-with-roam () - "Switches to org roam node file and database from org agenda view" - (interactive) - (org-agenda-switch-to) - (if (f-exists-p (concat (dir!) "/org-roam.db")) - (org-roam-switch-db (replace-regexp-in-string (concat "\\/home\\/" user-username "\\/Org\\/") "" (f-parent (dir!))) t)) - (if (f-exists-p (concat (f-parent (dir!)) "/org-roam.db")) - (org-roam-switch-db (replace-regexp-in-string (concat "\\/home\\/" user-username "\\/Org\\/") "" (f-parent (f-parent (dir!)))) t)) - (org-roam-olivetti-mode) -) - -(map! - :map evil-org-agenda-mode-map - :after org-agenda - :nvmeg "" #'org-agenda-switch-with-roam - :nvmeg "" #'org-agenda-switch-with-roam) -(map! - :map org-agenda-mode-map - :after org-agenda - :nvmeg "" #'org-agenda-switch-with-roam - :nvmeg "" #'org-agenda-switch-with-roam) - -#+END_SRC -*** Org Super Agenda Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -(require 'org-super-agenda) - -(setq org-super-agenda-groups - '(;; Each group has an implicit boolean OR operator between its selectors. - (:name " Overdue " ; Optionally specify section name - :scheduled past - :order 2 - :face 'error) - - (:name "Personal " - :and(:file-path "Personal.p" :not (:tag "event")) - :order 3) - - (:name "Family " - :and(:file-path "Family.s" :not (:tag "event")) - :order 3) - - (:name "Teaching " - :and(:file-path "Teaching.p" :not (:tag "event")) - :order 3) - - (:name "Gamedev " - :and(:file-path "Gamedev.s" :not (:tag "event")) - :order 3) - - (:name "Youtube " - :and(:file-path "Producer.p" :not (:tag "event")) - :order 3) - - (:name "Music " - :and(:file-path "Bard.p" :not (:tag "event")) - :order 3) - - (:name "Storywriting " - :and(:file-path "Stories.s" :not (:tag "event")) - :order 3) - - (:name "Writing " - :and(:file-path "Author.p" :not (:tag "event")) - :order 3) - - (:name "Learning " - :and(:file-path "Knowledge.p" :not (:tag "event")) - :order 3) - - (:name " Today " ; Optionally specify section name - :time-grid t - :date today - :scheduled today - :order 1 - :face 'warning) - -)) - -(org-super-agenda-mode t) - -(map! :desc "Next line" - :map org-super-agenda-header-map - "j" 'org-agenda-next-line) - -(map! :desc "Next line" - :map org-super-agenda-header-map - "k" 'org-agenda-previous-line) - -#+END_SRC - -*** NO Org Agenda Notifications -#+BEGIN_SRC emacs-lisp -(add-load-path! "~/.emacs.d/org-yaap") -(require 'org-yaap) -(setq org-yaap-alert-title "Org Agenda") -(setq org-yaap-overdue-alerts 20) -(setq org-yaap-alert-before 20) -(setq org-yaap-daily-alert '(7 30)) -(setq org-yaap-daemon-idle-time 30) -(org-yaap-mode 1) -#+END_SRC -*** Calfw -#+begin_src emacs-lisp :tangle config.el -(require 'calfw) -(require 'calfw-org) -(setq cfw:org-agenda-schedule-args '(:timestamp)) - -(map! :leader :desc "Open org calendar" - "O c" 'cfw:open-org-calendar) -#+end_src -*** NO Org Timeblock -#+begin_src emacs-lisp -(add-load-path! "~/.emacs.d/org-timeblock") -(require 'org-timeblock) - -(map! :leader :desc "Open org timeblock" - "O c" 'org-timeblock) - -(map! :desc "Next day" - :map org-timeblock-mode-map - :nvmeg "l" 'org-timeblock-day-later) -(map! :desc "Previous day" - :map org-timeblock-mode-map - :nvmeg "h" 'org-timeblock-day-earlier) -(map! :desc "Schedule event" - :map org-timeblock-mode-map - :nvmeg "m" 'org-timeblock-schedule) -(map! :desc "Event duration" - :map org-timeblock-mode-map - :nvmeg "d" 'org-timeblock-set-duration) - -#+end_src -** Magit Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;------ magit configuration ------;;; -;; Need the following two blocks to make magit work with git bare repos -(require 'magit-todos) -(setq magit-todos-keywords-list '("TODO" "FIXME" "HACK" "REVIEW" "DEPRECATED" "BUG")) -(magit-todos-mode 1) - -(add-load-path! "~/.emacs.d/magit-file-icons") -(require 'magit-file-icons) -(setq magit-file-icons-icon-for-file-func 'all-the-icons-icon-for-file) -(setq magit-file-icons-icon-for-dir-func 'all-the-icons-icon-for-dir) -(magit-file-icons-mode 1) - -#+END_SRC -** Ibuffer Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -(require 'all-the-icons-ibuffer) -(add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode) -(setq all-the-icons-ibuffer-color-icon t) -(evil-set-initial-state 'ibuffer-mode 'normal) - -#+END_SRC -** Dired Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;------ dired configuration ------;;; - -(add-hook 'dired-mode-hook 'all-the-icons-dired-mode) -(setq all-the-icons-dired-monochrome nil) - -(map! :desc "Increase font size" - "C-=" 'text-scale-increase - - :desc "Decrease font size" - "C--" 'text-scale-decrease - - :desc "Jump to dired" - "M-f" 'dired-jump -) - - -#+END_SRC -** Ranger Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;------ ranger configuration ------;;; - -(map! :map ranger-mode-map - :desc "Mark current file" - "m" 'ranger-mark - - :desc "Toggle mark on current file" - "x" 'ranger-toggle-mark -) - -#+END_SRC -** hledger-mode Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;-- hledger-mode configuration ;;;-- - -;;; Basic configuration -(require 'hledger-mode) - -;; To open files with .journal extension in hledger-mode -(add-to-list 'auto-mode-alist '("\\.journal\\'" . hledger-mode)) - -;; The default journal location is too opinionated. -(setq hledger-jfile (concat user-home-directory "/Org/Family.s/Notes/hledger.journal")) - -;;; Auto-completion for account names -;; For company-mode users: -(add-to-list 'company-backends 'hledger-company) - -(evil-define-key* 'normal hledger-view-mode-map "q" 'kill-current-buffer) -(evil-define-key* 'normal hledger-view-mode-map "[" 'hledger-prev-report) -(evil-define-key* 'normal hledger-view-mode-map "]" 'hledger-next-report) - -(map! :leader - :prefix ("l" . "hledger") - :desc "Exec hledger command" - "c" 'hledger-run-command - - :desc "Generate hledger balancesheet" - "b" 'hledger-balancesheet* - - :desc "Generate hledger daily report" - "d" 'hledger-daily-report*) - -(map! :localleader - :map hledger-mode-map - - :desc "Reschedule transaction at point" - "d s" 'hledger-reschedule - - :desc "Edit amount at point" - "t a" 'hledger-edit-amount) - -#+END_SRC -** NO Tab Bar Configuration -I don't have this active right now since it's kinda weird with pgtk... -#+BEGIN_SRC emacs-lisp -;;;-- tab-bar-mode configuration ;;;-- - -;; Kbd tab navigation -(map! - :map evil-normal-state-map - "H" #'tab-bar-switch-to-prev-tab - "L" #'tab-bar-switch-to-next-tab - "C-" #'tab-bar-switch-to-prev-tab - "C-" #'tab-bar-switch-to-next-tab) - -(evil-global-set-key 'normal (kbd "C-w") 'tab-bar-close-tab) -(evil-global-set-key 'normal (kbd "C-t") 'tab-bar-new-tab) - -(setq tab-bar-new-tab-choice "*dashboard*") - -(tab-bar-mode t) - -#+END_SRC -** Focus Mode Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -(require 'focus) - -(map! :leader - :prefix ("F" . "Focus mode") - :desc "Toggle focus mode" - "t" 'focus-mode - - :desc "Pin focused section" - "p" 'focus-pin - - :desc "Unpin focused section" - "u" 'focus-unpin) - -(add-to-list 'focus-mode-to-thing '(org-mode . org-element)) -(add-to-list 'focus-mode-to-thing '(python-mode . paragraph)) -(add-to-list 'focus-mode-to-thing '(lisp-mode . paragraph)) - -;(add-hook 'org-mode-hook #'focus-mode) - -#+END_SRC -** Helpful Mode Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;------ helpful configuration ------;;; - -(evil-set-initial-state 'helpful-mode 'normal) -(evil-define-key 'normal helpful-mode-map - "j" 'evil-next-visual-line - "k" 'evil-previous-visual-line - "q" 'helpful-kill-buffers) - -#+END_SRC -** mu4e Configuration -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;------ helpful configuration ------;;; -(add-load-path! "~/.nix-profile/share/emacs/site-lisp/elpa/mu4e-1.12.2") -(require 'mu4e) -(require 'mu4e-contrib) -(require 'mu4e-actions) - -(after! mu4e - (setq mu4e-modeline-support nil) - (setq mu4e-sent-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Sent"))) - (setq mu4e-drafts-folder (lambda (msg) (concat "/" user-mail-address "/Drafts"))) - (setq mu4e-trash-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Trash"))) - (setq mu4e-refile-folder (lambda (msg) (concat "/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Folders/" (completing-read "Refile msg to: " (directory-files (concat "~/.mail/" (nth 1 (split-string (mu4e-message-field msg :maildir) "/" )) "/Folders")))))) - - (setq mu4e-index-lazy-check t) - (setq mu4e-index-cleanup t) - (setq mu4e-update-interval 120) - (mu4e-alert-enable-notifications) - - (define-key mu4e-main-mode-map (kbd "") #'doom/leader) - (define-key mu4e-headers-mode-map (kbd "") #'doom/leader) - (define-key mu4e-view-mode-map (kbd "") #'doom/leader) - - (define-key mu4e-main-mode-map (kbd "g g") #'evil-goto-first-line) - (define-key mu4e-main-mode-map (kbd "G") #'evil-goto-line) - (define-key mu4e-main-mode-map (kbd "h") #'evil-backward-char) - (define-key mu4e-main-mode-map (kbd "l") #'evil-forward-char) - (define-key mu4e-main-mode-map (kbd "w") #'evil-forward-word-begin) - - (unbind-key "g" mu4e-headers-mode-map) - (define-key mu4e-headers-mode-map (kbd "g g") #'evil-goto-first-line) - (define-key mu4e-headers-mode-map (kbd "G") #'evil-goto-line) - (define-key mu4e-headers-mode-map (kbd "h") #'evil-backward-char) - (define-key mu4e-headers-mode-map (kbd "l") #'evil-forward-char) - (define-key mu4e-headers-mode-map (kbd "w") #'evil-forward-word-begin) - - (unbind-key "g" mu4e-view-mode-map) - (define-key mu4e-view-mode-map (kbd "g g") #'evil-goto-first-line) - (define-key mu4e-view-mode-map (kbd "G") #'evil-goto-line) - (define-key mu4e-view-mode-map (kbd "h") #'evil-backward-char) - (define-key mu4e-view-mode-map (kbd "l") #'evil-forward-char) - (define-key mu4e-view-mode-map (kbd "w") #'evil-forward-word-begin) - - (map! :map 'mu4e-main-mode-map :desc "Jump to maildir" :ge "J" #'mu4e-search-maildir) - (map! :map 'mu4e-main-mode-map :desc "Next line" :ge "j" #'evil-next-visual-line) - (map! :map 'mu4e-main-mode-map :desc "Prev line" :ge "k" #'evil-previous-visual-line) - - (map! :map 'mu4e-headers-mode-map :desc "Jump to maildir" :ge "J" #'mu4e-search-maildir) - (map! :map 'mu4e-headers-mode-map :desc "Next line" :ge "j" #'evil-next-visual-line) - (map! :map 'mu4e-headers-mode-map :desc "Prev line" :ge "k" #'evil-previous-visual-line) - (map! :map 'mu4e-headers-mode-map :desc "Next char" :ge "l" #'evil-forward-char) - (map! :map 'mu4e-headers-mode-map :desc "Update mail and index" :ge "U" #'mu4e-update-mail-and-index) - (map! :map 'mu4e-headers-mode-map :desc "Compose reply" :ge "r" #'mu4e-compose-reply) - (map! :map 'mu4e-headers-mode-map :desc "Archive message" :ge "e" #'mu4e-headers-mark-for-refile) - - (map! :map 'mu4e-view-mode-map :desc "Jump to maildir" :ge "J" #'mu4e-search-maildir) - (map! :map 'mu4e-view-mode-map :desc "Next line" :ge "j" #'evil-next-visual-line) - (map! :map 'mu4e-view-mode-map :desc "Prev line" :ge "k" #'evil-previous-visual-line) - (map! :map 'mu4e-view-mode-map :desc "Update mail and index" :ge "U" #'mu4e-update-mail-and-index) - (map! :map 'mu4e-view-mode-map :desc "Compose reply" :ge "r" #'mu4e-compose-reply) - (map! :map 'mu4e-view-mode-map :desc "Archive message" :ge "e" #'mu4e-view-mark-for-refile) - - (add-to-list 'mu4e-header-info-custom - '(:maildir-folder-no-account . - ( :name "Maildir folder without account" ;; long name, as seen in the message-view - :shortname "Folder" ;; short name, as seen in the headers view - :help "Name of the subfolder without the maildir" ;; tooltip - :function (lambda (msg) (substring (mu4e-message-field msg :maildir) (+ 2 (length (nth 1 (split-string (mu4e-message-field msg :maildir) "/" ))))))))) - (add-to-list 'mu4e-bookmarks - '( :name "Unified inbox" - :query "maildir://.*/INBOX/" - :key ?i)) - (setq mu4e-headers-fields - '((:account-stripe . 1) - (:account . 25) - (:human-date . 12) - (:flags . 6) - (:from-or-to . 20) - (:maildir-folder-no-account . 30) - (:subject))) - - (add-hook 'mu4e-compose-mode-hook #'(lambda () (auto-save-mode -1))) - (setq mu4e-sent-messages-behavior 'delete) - - (setq sendmail-program "~/.nix-profile/bin/msmtp") - (setq send-mail-function 'smtpmail-send-it) - (setq message-sendmail-f-is-evil t) - (setq message-sendmail-extra-arguments '("--read-envelope-from")) - (setq message-send-mail-function 'message-send-mail-with-sendmail) - (if (file-exists-p "~/.emacs.d/mu4e-private.el") (load! "~/.emacs.d/mu4e-private.el")) - - ;; https://emacs.stackexchange.com/questions/3061/how-to-stop-mu4e-from-inserting-line-breaks - (defun no-auto-fill () - "Turn off auto-fill-mode." - (auto-fill-mode -1)) - - (defun no-org-msg-mode () - "Disable org-msg-mode since it doesn't respect multiline emails" - (org-msg-mode 0)) - - (add-hook 'mu4e-compose-mode-hook #'no-auto-fill) - (add-hook 'mu4e-compose-pre-hook #'no-org-msg-mode) - - (mu4e--start) ;; start mu4e silently - -) - -#+END_SRC -** Direnv -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;-- Load emacs direnv;;;-- -(require 'direnv) -(direnv-mode) -#+END_SRC -** Projectile -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;-- projectile wrapper commands ;;;-- -(defun projectile-goto-project () - (interactive) - (projectile-switch-project t) - ;;(neotree-dir (projectile-project-root)) -) - -(map! :leader - :desc "Open project" - "p p" #'projectile-goto-project) -(map! :leader - :desc "Projectile commander" - "p @" #'projectile-commander) -(map! :leader - :desc "Projectile grep" - "/" #'projectile-grep) -(after! projectile (put 'projectile-grep 'disabled nil)) - -#+END_SRC -** sudo-edit -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;-- projectile wrapper commands ;;;-- -(require 'sudo-edit) -(setq sudo-edit-local-method "doas") - -(map! :leader - :desc "Open current file as root" - "f U" #'sudo-edit-current-file) -(map! :leader - :desc "Find a file and open as root" - "f u" #'sudo-edit-find-file) - -#+END_SRC -** LSP -#+BEGIN_SRC emacs-lisp :tangle config.el -;;;-- LSP stuff ;;;-- -(require 'lsp-mode) -(require 'nix-mode) -(require 'gdscript-mode) - -(add-hook 'nix-mode-hook 'lsp-deferred) -(add-hook 'gdscript-mode-hook 'lsp-deferred) - -(setq gdscript-godot-executable "godot4") - -(setq lsp-java-workspace-dir (concat user-home-directory "/.local/share/doom/java-workspace")) - -(setq lsp-treemacs-deps-position-params - '((side . right) - (slot . 1) - (window-width . 35))) - -(setq lsp-treemacs-symbols-position-params -'((side . right) - (slot . 2) - (window-width . 35))) - -(map! :leader :desc "Open treemacs symbol outliner" "o s" #'lsp-treemacs-symbols - :desc "Hide neotree" "o S" #'treemacs-quit) - -(setq +format-on-save-enabled-modes '(not emacs-lisp-mode sql-mode tex-mode latex-mode org-msg-edit-mode nix-mode)) - -(defun lsp-booster--advice-json-parse (old-fn &rest args) - "Try to parse bytecode instead of json." - (or - (when (equal (following-char) ?#) - (let ((bytecode (read (current-buffer)))) - (when (byte-code-function-p bytecode) - (funcall bytecode)))) - (apply old-fn args))) -(advice-add (if (progn (require 'json) - (fboundp 'json-parse-buffer)) - 'json-parse-buffer - 'json-read) - :around - #'lsp-booster--advice-json-parse) - -(defun lsp-booster--advice-final-command (old-fn cmd &optional test?) - "Prepend emacs-lsp-booster command to lsp CMD." - (let ((orig-result (funcall old-fn cmd test?))) - (if (and (not test?) ;; for check lsp-server-present? - (not (file-remote-p default-directory)) ;; see lsp-resolve-final-command, it would add extra shell wrapper - lsp-use-plists - (not (functionp 'json-rpc-connection)) ;; native json-rpc - (executable-find "emacs-lsp-booster")) - (progn - (when-let ((command-from-exec-path (executable-find (car orig-result)))) ;; resolve command from exec-path (in case not found in $PATH) - (setcar orig-result command-from-exec-path)) - (message "Using emacs-lsp-booster for %s!" orig-result) - (cons "emacs-lsp-booster" orig-result)) - orig-result))) -(advice-add 'lsp-resolve-final-command :around #'lsp-booster--advice-final-command) - -(map! :leader :desc "Find definition using lsp" "L d" #'lsp-find-definition) - -#+END_SRC -** DevDocs -#+BEGIN_SRC emacs-lisp :tangle config.el -;; devdocs are cool -(require 'devdocs) - -(map! :leader :desc "Peruse devdocs" "L p" #'devdocs-peruse) -#+END_SRC - -** Terminal -#+BEGIN_SRC emacs-lisp :tangle config.el -(add-to-list 'tramp-remote-path 'tramp-own-remote-path) -(after! vterm - (add-to-list 'vterm-tramp-shells '("ssh" "zsh")) ;; I use zsh on all my servers -) -#+END_SRC -** Elfeed -#+BEGIN_SRC emacs-lisp :tangle config.el -;; I source my rss from my freshrss instance -;; I login with a private elisp file: ~/.emacs.d/freshrss-elfeed.el -;; freshrss-elfeed.el looks like this: -;;(elfeed-protocol-enable) -;;(setq elfeed-use-curl t) -;;(setq elfeed-set-timeout 36000) -;;(setq elfeed-log-level 'debug) -;;(setq freshrss-hostname "https://freshrss.example.com") -;;(setq elfeed-feeds (list -;; (list "fever+https://user@freshrss.example.com" -;; :api-url "https://user@freshrss.example.com/api/fever.php" -;; :password "mYsUpErCoMpLiCaTeDp@s$w0rD")))) -;;(setq main-elfeed-feed "https://user@freshrss.example.com/api/fever.php") - -(if (file-exists-p "~/.emacs.d/freshrss-elfeed.el") (load! "~/.emacs.d/freshrss-elfeed.el")) -(setq elfeed-search-filter "@6-months-ago +unread") -(setq browse-url-chromium-program "mpv") -(setq browse-url-chrome-program "mpv") -(setq browse-url-handlers '(("youtube.com" . browse-url-chrome) - ("youtu.be" . browse-url-chrome) - ("odcyn.com" . browse-url-chrome) - ("odysee.com" . browse-url-chrome) - ("tilvids.com" . browse-url-chrome))) -(map! :leader :desc "Open elfeed" "O n" #'elfeed) -(map! :map 'elfeed-search-mode-map :desc "Open url" :n "g o" #'elfeed-search-browse-url) - -(defun elfeed-full-update () - (interactive) - (elfeed-search-update--force) - (cl-loop for entry in elfeed-search-entries - do (elfeed-untag-1 entry 'unread)) - (elfeed-protocol-fever-reinit freshrss-hostname) - (elfeed-update)) - -(add-hook 'elfeed-search-mode-hook 'elfeed-full-update) -(add-hook 'elfeed-search-update-hook (lambda () (goto-char (point-min)))) - -#+END_SRC - -* My init.el -This section is the [[./init.el][init.el]] section, which controls which Doom modules are loaded. - -=SPC h d h= (vim) or =C-h d h= (non-vim) can be used to access Doom's documentation (including a "Module Index"). - -=K= (vim) or =C-c c k= (non-vim) can be used to view a module's documentation (this can help you discover module flags as well). - -=gd= (vim) or =C-c c d= (non-vim) will let you browse a module's directory (source code). - -#+BEGIN_SRC emacs-lisp :tangle init.el -(doom! :input - ;;chinese - ;;japanese - ;;layout ; auie,ctsrnm is the superior home row - - :completion - company ; the ultimate code completion backend - ;;helm ; the *other* search engine for love and life - ;;ido ; the other *other* search engine... - ;;ivy ; a search engine for love and life - vertico ; the search engine of the future - - :ui - ;;deft ; notational velocity for Emacs - doom ; what makes DOOM look the way it does - ;;doom-dashboard ; a nifty splash screen for Emacs - doom-quit ; DOOM quit-message prompts when you quit Emacs - (emoji +unicode) ; 🙂 - hl-todo ; highlight todo/fixme/note/deprecated/hack/review - ;;hydra - ;;indent-guides ; highlighted indent columns - ;;ligatures ; ligatures and symbols to make your code pretty again - ;;minimap ; show a map of the code on the side - modeline ; snazzy, Atom-inspired modeline, plus API - nav-flash ; blink cursor line after big motions - neotree ; a project drawer, like NERDTree for vim - ophints ; highlight the region an operation acts on - (popup +defaults) ; tame sudden yet inevitable temporary windows - ;;tabs ; a tab bar for Emacs - treemacs ; a project drawer, like neotree but cooler - unicode ; extended unicode support for various languages - vc-gutter ; vcs diff in the fringe - ;;vi-tilde-fringe ; fringe tildes to mark beyond EOB - window-select ; visually switch windows - workspaces ; tab emulation, persistence & separate workspaces - ;;zen ; distraction-free coding or writing - - :editor - (evil +everywhere); come to the dark side, we have cookies - file-templates ; auto-snippets for empty files - fold ; (nigh) universal code folding - (format +onsave) ; automated prettiness - ;;god ; run Emacs commands without modifier keys - ;;lispy ; vim for lisp, for people who don't like vim - multiple-cursors ; editing in many places at once - ;;objed ; text object editing for the innocent - ;;parinfer ; turn lisp into python, sort of - ;;rotate-text ; cycle region at point between text candidates - snippets ; my elves. They type so I don't have to - word-wrap ; soft wrapping with language-aware indent - - :emacs - (dired +ranger) ; making dired pretty [functional] - electric ; smarter, keyword-based electric-indent - ibuffer ; interactive buffer management - undo ; persistent, smarter undo for your inevitable mistakes - vc ; version-control and Emacs, sitting in a tree - - :term - eshell ; the elisp shell that works everywhere - ;;shell ; simple shell REPL for Emacs - ;;term ; basic terminal emulator for Emacs - vterm ; the best terminal emulation in Emacs - - :checkers - syntax ; tasing you for every semicolon you forget - (spell +flyspell) ; tasing you for misspelling mispelling - ;;grammar ; tasing grammar mistake every you make - - :tools - ;;ansible - ;;biblio ; Writes a PhD for you (citation needed) - ;;debugger ; stepping through code, to help you add bugs - ;;direnv - docker - ;;editorconfig ; let someone else argue about tabs vs spaces - ;;ein ; tame Jupyter notebooks with emacs - (eval +overlay) ; run code, run (also, repls) - ;;gist ; interacting with github gists - lookup ; navigate your code and its documentation - (lsp) ; M-x vscode - magit ; a git porcelain for Emacs - ;;make ; run make tasks from Emacs - ;;pass ; password manager for nerds - ;;pdf ; pdf enhancements - ;;prodigy ; managing external services & code builders - rgb ; creating color strings - ;;taskrunner ; taskrunner for all your projects - ;;terraform ; infrastructure as code - ;;tmux ; an API for interacting with tmux - ;;upload ; map local to remote projects via ssh/ftp - - :os - ;;(:if IS-MAC macos) ; improve compatibility with macOS - tty ; improve the terminal Emacs experience - - :lang - ;;agda ; types of types of types of types... - ;;beancount ; mind the GAAP - ;;cc ; C > C++ == 1 - ;;clojure ; java with a lisp - common-lisp ; if you've seen one lisp, you've seen them all - ;;coq ; proofs-as-programs - ;;crystal ; ruby at the speed of c - ;;csharp ; unity, .NET, and mono shenanigans - data ; config/data formats - ;;(dart +flutter) ; paint ui and not much else - ;;dhall - ;;elixir ; erlang done right - ;;elm ; care for a cup of TEA? - emacs-lisp ; drown in parentheses - ;;erlang ; an elegant language for a more civilized age - ;;ess ; emacs speaks statistics - ;;factor - ;;faust ; dsp, but you get to keep your soul - ;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) - ;;fsharp ; ML stands for Microsoft's Language - ;;fstar ; (dependent) types and (monadic) effects and Z3 - (gdscript +lsp) ; the language you waited for - ;;(go +lsp) ; the hipster dialect - (haskell +lsp) ; a language that's lazier than I am - ;;hy ; readability of scheme w/ speed of python - ;;idris ; a language you can depend on - json ; At least it ain't XML - (java +lsp) ; the poster child for carpal tunnel syndrome - javascript ; all(hope(abandon(ye(who(enter(here)))))) - ;;julia ; a better, faster MATLAB - (kotlin +lsp) ; a better, slicker Java(Script) - latex ; writing papers in Emacs has never been so fun - ;;lean ; for folks with too much to prove - ;;ledger ; be audit you can be - lua ; one-based indices? one-based indices - markdown ; writing docs for people to ignore - ;;nim ; python + lisp at the speed of c - (nix +lsp) ; I hereby declare "nix geht mehr!" - ;;ocaml ; an objective camel - (org +roam2) ; organize your plain life in plain text - ;;php ; perl's insecure younger brother - ;;plantuml ; diagrams for confusing people more - ;;purescript ; javascript, but functional - python ; beautiful is better than ugly - ;;qt ; the 'cutest' gui framework ever - ;;racket ; a DSL for DSLs - ;;raku ; the artist formerly known as perl6 - ;;rest ; Emacs as a REST client - ;;rst ; ReST in peace - ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} - ;;rust ; 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 - ;;sml - ;;solidity ; do you need a blockchain? No. - ;;swift ; who asked for emoji variables? - ;;terra ; Earth and Moon in alignment for performance. - web ; the tubes - yaml ; JSON, but readable - ;;zig ; C, but simpler - - :email - (mu4e +org) - ;;notmuch - ;;(wanderlust +gmail) - - :app - calendar - ;;emms - ;;everywhere ; *leave* Emacs!? You must be joking - ;;irc ; how neckbeards socialize - rss ; emacs as an RSS reader - ;;twitter ; twitter client https://twitter.com/vnought - - :config - ;;literate - (default +bindings +smartparens)) - -#+END_SRC - -* My packages.el -The [[./packages.el][packages.el]] file allows extra packages to be configured outside of the typical Doom modules from [[./init.el][init.el]]. - -Packages are declared via =(package! some-package)= where =some-package= is from MELPA, ELPA, or emacsmirror. - -There are other ways to install packages outside of Emacs package archives, including directly from git. Installing a package directly from git requires a =:recipe=. Here is [[https://github.com/raxod502/straight.el#the-recipe-format][a full documentation of the recipe format]]. - -Doom's built-in packages can also be modified here: -- =(package! builtin-package :disable t)= to disable -- =(package! builtin-package-2 :recipe (:repo "myfork/package"))= to override the recipe - - Side-note: the full recipe for built-in packages does not need specification, as the override will inherit the unspecified properties directly from Doom - -Any git package can be configured for a particular commit or branch: -- =(package! builtin-package :recipe (:branch "develop")= for a particular branch -- =(package! builtin-package :pin "1a2b3c4d5e")= for a particular commit -- =(unpin! pinned-package another-pinned-package)= to get bleeding edge instead of Doom's stability - -#+BEGIN_SRC emacs-lisp :tangle packages.el -(package! org-analyzer :pin "0908eea") -(package! embark :pin "0908eea") -(package! dashboard) -(package! direnv) -(package! org :pin "5bdfc02c6fa1b9ad4f075ac1ad1e4086ead310db") -(package! org-modern) -(package! org-super-agenda) -(package! emacsql :pin "c1a4407") -(package! org-roam-ui) -(package! org-transclusion) -(package! org-download) -(package! org-yt) -(package! toc-org) -(package! lister) -(package! all-the-icons-ibuffer) -(package! all-the-icons-dired) -(package! all-the-icons-completion) -(package! ox-reveal) -(package! magit-todos) -(package! hledger-mode) -(package! rainbow-mode) -(package! crdt) -(package! ess) -(package! openwith) -(package! ob-mermaid) -(package! focus) -(package! olivetti) -(package! async) -(package! centered-cursor-mode) -(package! elfeed) -(package! elfeed-protocol) -(package! docker-tramp :disable t) -(package! org-ql) -(package! persist) -(package! sudo-edit) -(package! solaire-mode :disable t) -(package! el-patch) -(package! devdocs) -#+END_SRC -* Nix Integration -In order to have Nix load my Doom Emacs configuration [[./doom.nix][doom.nix]], which I source in the =imports= block of my [[../../../profiles/work/home.nix][home.nix]]. -#+BEGIN_SRC nix :tangle doom.nix -{ config, lib, pkgs, pkgs-emacs, pkgs-stable, inputs, userSettings, systemSettings, ... }: -let - themePolarity = lib.removeSuffix "\n" (builtins.readFile (./. + "../../../../themes"+("/"+userSettings.theme)+"/polarity.txt")); - dashboardLogo = ./. + "/nix-" + themePolarity + ".webp"; -in -{ - imports = [ - inputs.nix-doom-emacs.hmModule - ../git/git.nix - ../../shell/sh.nix - ../../shell/cli-collection.nix - ]; - - programs.doom-emacs = { - enable = true; - emacsPackage = pkgs-emacs.emacs29-pgtk; - doomPrivateDir = ./.; - # This block from https://github.com/znewman01/dotfiles/blob/be9f3a24c517a4ff345f213bf1cf7633713c9278/emacs/default.nix#L12-L34 - # Only init/packages so we only rebuild when those change. - doomPackageDir = let - filteredPath = builtins.path { - path = ./.; - name = "doom-private-dir-filtered"; - filter = path: type: - builtins.elem (baseNameOf path) [ "init.el" "packages.el" ]; - }; - in pkgs-emacs.linkFarm "doom-packages-dir" [ - { - name = "init.el"; - path = "${filteredPath}/init.el"; - } - { - name = "packages.el"; - path = "${filteredPath}/packages.el"; - } - { - name = "config.el"; - path = pkgs-emacs.emptyFile; - } - ]; - # End block - }; - - home.file.".emacs.d/themes/doom-stylix-theme.el".source = config.lib.stylix.colors { - template = builtins.readFile ./themes/doom-stylix-theme.el.mustache; - extension = ".el"; - }; - - home.packages = (with pkgs-emacs; [ - emacs-lsp-booster - nil - nixfmt - kotlin-language-server - file - wmctrl - jshon - aria - hledger - hunspell hunspellDicts.en_US-large - (pkgs-emacs.mu.override { emacs = emacs29-pgtk; }) - (pkgs.callPackage ./pkgs/org-analyzer.nix {}) - emacsPackages.mu4e - isync - msmtp - (python3.withPackages (p: with p; [ - pandas - requests - epc lxml - pysocks - pymupdf - markdown - ])) - ]) ++ (with pkgs-stable; [ - nodejs - nodePackages.mermaid-cli - ]) ++ (with pkgs; [ - openssl - stunnel - ]); - - services.mbsync = { - enable = true; - package = pkgs-stable.isync; - frequency = "*:0/5"; - }; - - home.file.".emacs.d/org-yaap" = { - source = "${inputs.org-yaap}"; - recursive = true; - }; - - home.file.".emacs.d/org-side-tree" = { - source = "${inputs.org-side-tree}"; - recursive = true; - }; - - home.file.".emacs.d/org-timeblock" = { - source = "${inputs.org-timeblock}"; - recursive = true; - }; - - home.file.".emacs.d/org-nursery" = { - source = "${inputs.org-nursery}"; - }; - - home.file.".emacs.d/org-krita" = { - source = "${inputs.org-krita}"; - }; - - home.file.".emacs.d/org-xournalpp" = { - source = "${inputs.org-xournalpp}"; - }; - - home.file.".emacs.d/org-sliced-images" = { - source = "${inputs.org-sliced-images}"; - }; - - home.file.".emacs.d/magit-file-icons" = { - source = "${inputs.magit-file-icons}"; - }; - - home.file.".emacs.d/dashboard-logo.webp".source = dashboardLogo; - home.file.".emacs.d/scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh" = { - source = ./scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh; - executable = true; - }; - - home.file.".emacs.d/phscroll" = { - source = "${inputs.phscroll}"; - }; - - home.file.".emacs.d/mini-frame" = { - source = "${inputs.mini-frame}"; - }; - - home.file.".emacs.d/system-vars.el".text = '' - ;;; ~/.emacs.d/config.el -*- lexical-binding: t; -*- - - ;; Import relevant variables from flake into emacs - - (setq user-full-name "''+userSettings.name+''") ; name - (setq user-username "''+userSettings.username+''") ; username - (setq user-mail-address "''+userSettings.email+''") ; email - (setq user-home-directory "/home/''+userSettings.username+''") ; absolute path to home directory as string - (setq user-default-roam-dir "''+userSettings.defaultRoamDir+''") ; absolute path to home directory as string - (setq system-nix-profile "''+systemSettings.profile+''") ; what profile am I using? - (setq system-wm-type "''+userSettings.wmType+''") ; wayland or x11? - (setq doom-font (font-spec :family "''+userSettings.font+''" :size 20)) ; import font - (setq dotfiles-dir "''+userSettings.dotfilesDir+''") ; import location of dotfiles directory - ''; -} -#+END_SRC diff --git a/user/app/doom-emacs/init.el b/user/app/doom-emacs/init.el deleted file mode 100644 index fc4c77f..0000000 --- a/user/app/doom-emacs/init.el +++ /dev/null @@ -1,175 +0,0 @@ -(doom! :input - ;;chinese - ;;japanese - ;;layout ; auie,ctsrnm is the superior home row - - :completion - company ; the ultimate code completion backend - ;;helm ; the *other* search engine for love and life - ;;ido ; the other *other* search engine... - ;;ivy ; a search engine for love and life - vertico ; the search engine of the future - - :ui - ;;deft ; notational velocity for Emacs - doom ; what makes DOOM look the way it does - ;;doom-dashboard ; a nifty splash screen for Emacs - doom-quit ; DOOM quit-message prompts when you quit Emacs - (emoji +unicode) ; 🙂 - hl-todo ; highlight todo/fixme/note/deprecated/hack/review - ;;hydra - ;;indent-guides ; highlighted indent columns - ;;ligatures ; ligatures and symbols to make your code pretty again - ;;minimap ; show a map of the code on the side - modeline ; snazzy, Atom-inspired modeline, plus API - nav-flash ; blink cursor line after big motions - neotree ; a project drawer, like NERDTree for vim - ophints ; highlight the region an operation acts on - (popup +defaults) ; tame sudden yet inevitable temporary windows - ;;tabs ; a tab bar for Emacs - treemacs ; a project drawer, like neotree but cooler - unicode ; extended unicode support for various languages - vc-gutter ; vcs diff in the fringe - ;;vi-tilde-fringe ; fringe tildes to mark beyond EOB - window-select ; visually switch windows - workspaces ; tab emulation, persistence & separate workspaces - ;;zen ; distraction-free coding or writing - - :editor - (evil +everywhere); come to the dark side, we have cookies - file-templates ; auto-snippets for empty files - fold ; (nigh) universal code folding - (format +onsave) ; automated prettiness - ;;god ; run Emacs commands without modifier keys - ;;lispy ; vim for lisp, for people who don't like vim - multiple-cursors ; editing in many places at once - ;;objed ; text object editing for the innocent - ;;parinfer ; turn lisp into python, sort of - ;;rotate-text ; cycle region at point between text candidates - snippets ; my elves. They type so I don't have to - word-wrap ; soft wrapping with language-aware indent - - :emacs - (dired +ranger) ; making dired pretty [functional] - electric ; smarter, keyword-based electric-indent - ibuffer ; interactive buffer management - undo ; persistent, smarter undo for your inevitable mistakes - vc ; version-control and Emacs, sitting in a tree - - :term - eshell ; the elisp shell that works everywhere - ;;shell ; simple shell REPL for Emacs - ;;term ; basic terminal emulator for Emacs - vterm ; the best terminal emulation in Emacs - - :checkers - syntax ; tasing you for every semicolon you forget - (spell +flyspell) ; tasing you for misspelling mispelling - ;;grammar ; tasing grammar mistake every you make - - :tools - ;;ansible - ;;biblio ; Writes a PhD for you (citation needed) - ;;debugger ; stepping through code, to help you add bugs - ;;direnv - docker - ;;editorconfig ; let someone else argue about tabs vs spaces - ;;ein ; tame Jupyter notebooks with emacs - (eval +overlay) ; run code, run (also, repls) - ;;gist ; interacting with github gists - lookup ; navigate your code and its documentation - (lsp) ; M-x vscode - magit ; a git porcelain for Emacs - ;;make ; run make tasks from Emacs - ;;pass ; password manager for nerds - ;;pdf ; pdf enhancements - ;;prodigy ; managing external services & code builders - rgb ; creating color strings - ;;taskrunner ; taskrunner for all your projects - ;;terraform ; infrastructure as code - ;;tmux ; an API for interacting with tmux - ;;upload ; map local to remote projects via ssh/ftp - - :os - ;;(:if IS-MAC macos) ; improve compatibility with macOS - tty ; improve the terminal Emacs experience - - :lang - ;;agda ; types of types of types of types... - ;;beancount ; mind the GAAP - ;;cc ; C > C++ == 1 - ;;clojure ; java with a lisp - common-lisp ; if you've seen one lisp, you've seen them all - ;;coq ; proofs-as-programs - ;;crystal ; ruby at the speed of c - ;;csharp ; unity, .NET, and mono shenanigans - data ; config/data formats - ;;(dart +flutter) ; paint ui and not much else - ;;dhall - ;;elixir ; erlang done right - ;;elm ; care for a cup of TEA? - emacs-lisp ; drown in parentheses - ;;erlang ; an elegant language for a more civilized age - ;;ess ; emacs speaks statistics - ;;factor - ;;faust ; dsp, but you get to keep your soul - ;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) - ;;fsharp ; ML stands for Microsoft's Language - ;;fstar ; (dependent) types and (monadic) effects and Z3 - (gdscript +lsp) ; the language you waited for - ;;(go +lsp) ; the hipster dialect - (haskell +lsp) ; a language that's lazier than I am - ;;hy ; readability of scheme w/ speed of python - ;;idris ; a language you can depend on - json ; At least it ain't XML - (java +lsp) ; the poster child for carpal tunnel syndrome - javascript ; all(hope(abandon(ye(who(enter(here)))))) - ;;julia ; a better, faster MATLAB - (kotlin +lsp) ; a better, slicker Java(Script) - latex ; writing papers in Emacs has never been so fun - ;;lean ; for folks with too much to prove - ;;ledger ; be audit you can be - lua ; one-based indices? one-based indices - markdown ; writing docs for people to ignore - ;;nim ; python + lisp at the speed of c - (nix +lsp) ; I hereby declare "nix geht mehr!" - ;;ocaml ; an objective camel - (org +roam2) ; organize your plain life in plain text - ;;php ; perl's insecure younger brother - ;;plantuml ; diagrams for confusing people more - ;;purescript ; javascript, but functional - python ; beautiful is better than ugly - ;;qt ; the 'cutest' gui framework ever - ;;racket ; a DSL for DSLs - ;;raku ; the artist formerly known as perl6 - ;;rest ; Emacs as a REST client - ;;rst ; ReST in peace - ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} - ;;rust ; 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 - ;;sml - ;;solidity ; do you need a blockchain? No. - ;;swift ; who asked for emoji variables? - ;;terra ; Earth and Moon in alignment for performance. - web ; the tubes - yaml ; JSON, but readable - ;;zig ; C, but simpler - - :email - (mu4e +org) - ;;notmuch - ;;(wanderlust +gmail) - - :app - calendar - ;;emms - ;;everywhere ; *leave* Emacs!? You must be joking - ;;irc ; how neckbeards socialize - rss ; emacs as an RSS reader - ;;twitter ; twitter client https://twitter.com/vnought - - :config - ;;literate - (default +bindings +smartparens)) diff --git a/user/app/doom-emacs/nix-dark.png b/user/app/doom-emacs/nix-dark.png deleted file mode 100644 index f887f3fe2e244e5179f4a6cb087e18c4147f7f5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57446 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%0A=lGbg1k-t#G;=^vF`lqQ0v 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 A@Bjb+ diff --git a/user/app/doom-emacs/nix-dark.webp b/user/app/doom-emacs/nix-dark.webp deleted file mode 100644 index b225ed745ebea395a8b95fbac279cdc62a1cb8ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26946 zcmWIYbaS)HWMBw)bqWXzu<+5%WMI(mZVVR)Wk2FJ>9E=6zthjEyIN@~D5)KgUq4H# zUGB2jtV+g6Zl`-&YW_3M=UI2X*ULYV-LXIMa?meHS*iRVao67M{&eGN6Yun{DT{2^ z-BC3;q-tSd^2MX?)T1OvV_~jc`)@4glhI@AShX+({#Ig_g!lI zWSMeL=AP4c@ul7Sx9X-Ch4gij4jvk zlyenb-DcgV)Xp|zTA|c|wNlg6+L??*K7=2Uk_c%$wITZk-&WC9gT6(*R}ac6hZpGz z<|um>ed2mKN!!ly!K3V(oTnD$F3(%6y;D5-bcLEe^Py>fPxAl!|Fu}zeZPIwwqxIJ zOgpArt#UJJ^WIIz4L;4dIW2PA0i|Y@)0<2t>3UDo$ySLJY)%!Lp?Z4LjY&~w&Rp1Z zAgOuA#docz_J99dx9|S_@85rx{r`3T^_eeMx0d&NT5m77U{&U;TN>Ivy^ozQO)Tws z*1CZG1&?@3jn)OcULgLuWWiyB;zcu~&huK{Ic~S__1dBZ?S03O*Pbb#wL9w7-l$b} zAM)NF*%tMb)}J4^vKBn|``h@?yHAZgP9#wm-+6o?6|Q89Ku;bY0N8UqAHbtc!jY z>#M&r=yI_1GYy`5I-a4@?{>HDt0Fy~ zcWe2KORxUS>if0r(3u{;`$r!)Ot(67=FjRgUk(`>>nv8b;bX9nyt(b|>fP(A?|-k| zfBvsU-y@Bi-)m)gl6jK7H8edvz4%nyCrz2+vPtdt2kFQyYg>Ac`pR9lm{NAhL{Omj z{rh$0VJBk$9G`n_!5^QWJ_`f(1!epQ*u1c2(H|G3mu25ho||NQs&Bv5k6+z4;twA9 zr)5{Q=&Kj=gN&{@8?pc;ml5d(r4cVyAYCEDv{q8c4Nex6!glPZ4a-^*?eL;HZbjpt|T&0R8c$J{M*w@hBr zt(2)B$$vz8=Sr8kF24M)x2>2W@3C+t>(ft5yHvfOo)Xm-T|IU6)cCmar&0~8N=2SZ zX`I?WH8ZaEX4=nZi*;`6-FFLExP5og-lDs+b;IP`6TfpmdEet`xsv~M*r_n>EAtYL zRz3aYef-hC&^5U~ex0&O_unPp!J+E%bE?z#C#SiJCRLu;dGb#R<0b{phQn@(GpBDk z;kQiY+rmKQRLKX$t!ciS#C8gt^q*(x$&&8)sQF}ylrBrx(_^BgUylmU{eMYcH!{Jo z>BR4iCY$^=?RHUK*eo&Ss$MAPteu`GH|ss`TBmZtLqKo#)MlQ!&mIO&JGr1VDgTPn z6Wy8C*4q=sbeE-GWn5n`pmyZ$@fW#AXFuVX=A)bOe)ad7RlgR!#=Yi|jVYybyc)Ye$i6>0Pr&M?LcL47?9E zPTSeqcfP4DcI)260H zOcr)~Zhx@Kc(Qg^&GYyMd7a$*^R+%L{!-JrvgB(k+oC^i4=qa5=M}h^NNsn_dvdJl zi_OIyy^PaEzn@)rY{Dnynk*9@?P+SbEUX3)QA&vEnJe=-h6rhHGF z<@mt6-N;tri?i#DSCZux$JX3<^d-KzH}Z^HwUp+kAFT zA=`n@xveuE&2aZ&i$2nB^8Tjb!_F&GuG{usbW@ux++twkA^YTUO6x|yowrP$S$&zK z`Ei3fXZqZY?o*6eyq;;9nOlnZEu6gYVSw?$(AhqZt2VgA?XiD3O|0bG&$%Cu9_V)b z{QmBy$j8Yad|v*1e2`~;OKVYa3+6#l=t!c%ne;LO^?YZ1Uhrh z<~!Muxc*Xe!Oupc(^`LD>VCOnveGith<(GQ+pDjqSh7u9nm)DCOyS&N%>|Y{7r$o} zT&+pX5xx8G(@UEZ9mm*Z+8$2Wlrqu#!>hv&=cdfnE?&xG<+o98+r%rv>u)z$d}Zl1 zP1)JC`R>h7DXzoE)BG%7ZqMSga=5%9XW0wu-CT#(*Oh$ZsaVT-d54@#RL2^t5>4a9 z_f@P^Cgu4YW?swMHaGE+@+oDN!+w8W)}H2y(J?V^Q`?kKFLt`~nqtO}^}=4k4+V<@ z-!&$Gaa{iR|BP=6T@!N8vF0Qk@yt-ar{Q*$)2VH4#bt9T(be}7nOIzx9N6jqak;vL zUE$xC<=c{-e#^+(MqW4=ZnZCR<|Z?nd0ULl1rACbbl^};iT9~;5h zMIH?{M^ERLWI?U$Xs@=mwC-ix`WDxk)HcPgy0D1lPeAXz-&KJ zpTE8B>(f<7?>Mtue)RgnZ-WJKC7Y+_d^y8;<5i>3kyOjGH`9|84*Tsnm-uK`HqQgu zfIlh6c7!{AKOMsVTz+2F?pp%)9`31{Ho3gAujKyebB9Y```e!IUlitfpuIKO*DAp1 ztj*i?4sDia7)wv?kyNvpn043V#iJ0JEj?Do(sCQlU3#6~XIWpGmf|o=@^8Q0#?>>v zvRw?A-jy#Nz0>%?6E)$o@->q#sW#@;JegHnA)er_Kcz19daHl`=Z~tLGO|+dH^gr1 z$aXYVRM2|;?3c@>FDolIR)rk>dPA(vZ=1s5v(=)HIYa$<-~WCayyQdwv4dAPoLhM4 z@bY$z;5Wy%Kl;tV%{U?2^1(^Bkcj@5T^4L}3oV{^sodz4ELA$lAHhDajrHAqo4g;3 zY*+bzOyAb_ed{Uv?yUVvGV{I(m37r9Xo;ScQx`1T=KA7v-jkFKmu>c?+}?UDp+I_y z#@dM4>yN)nm&raNs`@#sn*D5s-kiThcSBoRSu{R;P~%FKDdydvBon~hvvXePtF;K&)6ofOaC+-yQ+tig{Yb;N(m-p&_qQ2Ny!2RMH$%5}TfO9w4@VE}41M)l z>GmuAPn-3&G<;FKF)g@hr8A`ER!T`qo%?nA9oxJU!T*9LE<8~5f76Fq@e}H~-j==A#_4A5 z+j3vOC~WGM^NHwa{ML2&!Atjy9WrOH>{z$6EA-dPC53VmR~XdHd7OW!eAgPWEl=0$ zOkXuAYDM`phHJZu12(;hewN`H8L@(~HOc?qrP;-2ZwsWZ^c!9Pd&Ld_)Wxc>!n&bG8_%*cC?r0m+SYovB%)`ep+tzV=2->A->$govA``|_GaW;W)VS-nwwvCXU8nrFo7*sZr<~^CCmqA zv+78F=}Nn`^0q*$x0lq?^>g%>GGF<{+R#(lnN)Ch+94+y9)Fu^!H)U`ZUVh3(eA4! z3;o~l^1_#nXQyJ99Z-0-ij(Qwj%7}=nk7;k=S^HAs~0UPS&$O3m0(u8=Qz!h8NV|4xGoD{j}VWz=@`H~M|&Z({s6S;_bxirW`-2n4iT z`4Gt2cxd?ttF=3lme1vIo7!$BezGxA;AGT%twY`-wX5fquBxvpbK$T4uxpY1(KSa_ z&HF0tAh6e{n$`7*5no#Mjw3U@jPEYysFz;Ikg#^^A#vp?X&UE$$t*QXFP>+4^{m1| zZ@UR)5^Fy$Qwp~~k~8&w(X-_w{M7U5h9D z47l#NN!X=2gm1;CMg4EIBd;@R&3bY&=lhF$)r&)}KeVm7)KfH}OGn$&j4ez<^EAi0oRsdGeKsQ(Y#uo^e@p!ozK+fZod!TT--)E~dPB&@iFc z*}&xa%RC0RS!e!zQnBTHS?V1*d)||aav}gRP1|fc3|NrhtpW6Q`P9UvYa! zEwi;jx7_r@Y2J?xcDc&_ZrT#Ie((Ff%mcx@rU^duoG^1vYL<^fi%#6C!iC-%7hk^E z&a1|gfB0F~jPAqDZEkmWy}fO|VCIahj@i-@C%Rq)wsP6kX>i`wQjgs2sg-o<%7zuz zpQmJe5|G&EG3iY3ImxBheVIy^{xVa0AF)y*<4P`%@Y~z<@7WAEbk^KDE{>6S zkbK0o^>EhS_ZIKpx^1p-RkG^3>oxh%0gpA6@Bgm&z3AfWu!e0%9ffyt^sRBb`;AwD zSxiw{+I(HNqx36=D$NCK#ms_ytIOO3%b%R@g* zKGL;#{rwO|g{GB;yE=tue9#u!u$@`ql=PzR&J`z*tvkFpLVZ)qcJZB0=1*2&s#;eR zZ>t+5vn%ai?jBWfCP(>eH_Fscy#Cy;J`Djc)7tdu=QKj^boz$GrwT@y>Tv ziC&jEy}G|@!Ib%1B8tzISx;Z#UlQhj(OouSvT^jZRW+(cMcX_*b{5r6I;yj+Gwz@N z6_(A3UPm{a7$n(%aje{50UKhC+xria0 z`Nq@>;vY3@=kpjb86LlL#?PZ@N6u{hH!Kr{_BigJ72Ck-tg<$RX?NJzSiliD~k+fohVv+<@%hhW}ANVf9-YqJhg(=mLoyf`8tK>6v+6E~o2Tp;(^f0O)#OE#08Uc1#XPSRSidYA2{ zOx^mA$(dYk=dW5G$-VKSGr98V1E)!1*~i}AzgD<+LE@XApRFcH++X(+f8X&oJ}V?33*Tpu6TU?Zmn>L-r@eYILIma>| zzaH7W^>PU&yMPd0VdNU3_Zo53L;T{6}U5e64J}QrR5^n|hAleDqL@!>sN_ zre4A1B6SXp$D6Xs=WMpzl+N>IvfH<5RgKf;M0+nUdVGnW)%wc8ElY(}4hx)U?_K!5 zx8uf(Q_88o z%h`V?9@bkL{Cv$b?nDm*W6lbl6E0WIsXH--yLKIT*_T{)?7r>0?Q@R>z7dR*QmxzM zV=J<0j^rKZho-x}+5cx+a^aDqfb8eVrR>g2rmzThe){0{`B_wf+Tm3a=cYQw=87&oA-`_{Jlswt(UGYo( zNO0hR`C11Z`q$ogaw2fnx$Sb_w%cC+8GoTr(_-e7TE3hDpY#Jop&vHLXU?)yYQ7&F z_e^y|oz#+epY4~o%WD36;?6$?6|r*9m0B*yvHz`DnS83{+K)Af z4l02X3zi&8OI6%2`~J(PydSwf&!6nRCBMNTv$lA1vDNgjrYRF^4h1~Zj1F7;@%yxi zm22nMo-99qI8Z<&uu!k&{CsAUT{@E|@XJiB^-EoUdC&dbh1XB&En`zCjCi%)j8*bk zV!-bgC)A(vhQ4zW(VS9S^=(B#h{Y9`wa-)wlX*gdZfX>5Og|AIz_NJ8jj88DB6_+5 zB#XA{`Ea~Xi`xH=qtWZiiZ{2lwY9n1Zmur4sq?k3y~BLog9L%gH$I$s{F$Kzuf;DjY5n#4z=;)? z_N#`@US%9=YWZgJUS>yyM-v2pt6FCseAad1lpdE*q?SacQ^oco!yk%jAyKV!cn&!& zSg|6b(IGZ=ujg@R71hU+H+J0Kq+hP|eWAC+L-iRO=CwqYe$nnZneX=7^vzG7xjz?$ z#ES0X)Q-r~H)EQ2DDRF_F84H*cI^)vy4gQvc^x|RsB%_<^u0NSZ6I{E zg&ht2ZX5q+Z+gVYU$OnA+sk7wkIy`o@@SI&Pptsl)QFV%K*a^)dfz^isM1 zBAUnTkIr7ym6BYeBBy-F+HGP&Pr^FGrX7zZ9!o5iI6R|Sg1O$BxBN(fn%}<2x3R}} z$f-=+YAmx;pk$}dVxPm;1s?L9SDS4fdbDD5&LR<+EREGnbAJ7OSoqsnZEJN|^*3LE z4|f zU2>@7xGn#~!t!I>vG*))zuUI(@KrOpd4DFCZ+>~{{jJv*U$TDg>(QMk@V50`?8Ntv zUic(52JZ0*_!02>Mℑ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 diff --git a/user/app/doom-emacs/nix-light.webp b/user/app/doom-emacs/nix-light.webp deleted file mode 100644 index 92c3aad59c542394dddb54b9cf1c0674f5d931de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22286 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 M=12V%UODUx0DSagIRF3v diff --git a/user/app/doom-emacs/packages.el b/user/app/doom-emacs/packages.el deleted file mode 100644 index 4d367bf..0000000 --- a/user/app/doom-emacs/packages.el +++ /dev/null @@ -1,38 +0,0 @@ -(package! org-analyzer :pin "0908eea") -(package! embark :pin "0908eea") -(package! dashboard) -(package! direnv) -(package! org :pin "5bdfc02c6fa1b9ad4f075ac1ad1e4086ead310db") -(package! org-modern) -(package! org-super-agenda) -(package! emacsql :pin "c1a4407") -(package! org-roam-ui) -(package! org-transclusion) -(package! org-download) -(package! org-yt) -(package! toc-org) -(package! lister) -(package! all-the-icons-ibuffer) -(package! all-the-icons-dired) -(package! all-the-icons-completion) -(package! ox-reveal) -(package! magit-todos) -(package! hledger-mode) -(package! rainbow-mode) -(package! crdt) -(package! ess) -(package! openwith) -(package! ob-mermaid) -(package! focus) -(package! olivetti) -(package! async) -(package! centered-cursor-mode) -(package! elfeed) -(package! elfeed-protocol) -(package! docker-tramp :disable t) -(package! org-ql) -(package! persist) -(package! sudo-edit) -(package! solaire-mode :disable t) -(package! el-patch) -(package! devdocs) diff --git a/user/app/doom-emacs/pkgs/org-analyzer.nix b/user/app/doom-emacs/pkgs/org-analyzer.nix deleted file mode 100644 index d3c3974..0000000 --- a/user/app/doom-emacs/pkgs/org-analyzer.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ stdenv, fetchFromGitHub, pkgs, ... }: -let name = "clj-org-analyzer"; - version = "1.0.2"; -in stdenv.mkDerivation -{ - inherit name version; - - src = builtins.fetchurl { - url = "https://github.com/rksm/clj-org-analyzer/releases/download/1.0.2/org-analyzer-1.0.2.jar"; - sha256 = "sha256:1j5c688yg6f5y6n86rf6vkwd1csn1y4dc716d5bczmyr2sgi9c67"; - }; - - dontUnpack = true; - - installPhase = '' - mkdir $out $out/bin; - cp $src $out/bin/org-analyzer.jar; - echo "#!/bin/sh - ${pkgs.jdk}/bin/java -jar $out/bin/org-analyzer.jar $@" > $out/bin/org-analyzer - chmod +x $out/bin/org-analyzer.jar - chmod +x $out/bin/org-analyzer - ''; - -} diff --git a/user/app/doom-emacs/scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh b/user/app/doom-emacs/scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh deleted file mode 100755 index 59c147b..0000000 --- a/user/app/doom-emacs/scripts/copy-link-or-file/copy-link-or-file-to-clipboard.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -if [ $(echo $XDG_SESSION_TYPE) == "wayland" ]; then - FILENAME="$(wl-paste)" - FILTEREDFILENAME=$(echo "$FILENAME" | sed "s+file:+./+") - echo "$FILTEREDFILENAME" - if [[ -f "$FILTEREDFILENAME" ]]; then - wl-copy < "$FILTEREDFILENAME" - fi -elif [ $(echo $XDG_SESSION_TYPE) == "x11" ]; then - FILENAME="$(xclip -o)" - FILTEREDFILENAME=$(echo "$FILENAME" | sed "s+file:+./+") - if [[ -f "$FILTEREDFILENAME" ]]; then - TYPE=$(file -b --mime-type "$FILTEREDFILENAME") - xclip -selection clipboard -t "$TYPE" -i "$FILTEREDFILENAME" - exit - fi -else - exit -fi -exit diff --git a/user/app/doom-emacs/themes/doom-stylix-theme.el.mustache b/user/app/doom-emacs/themes/doom-stylix-theme.el.mustache deleted file mode 100644 index e83b979..0000000 --- a/user/app/doom-emacs/themes/doom-stylix-theme.el.mustache +++ /dev/null @@ -1,177 +0,0 @@ -;;; doom-stylix-theme.el --- stylix template created from doom-one -*- lexical-binding: t; no-byte-compile: t; -*- -;; -;; Author: Emmet K -;; Maintainer: Emmet K -;; Source: https://github.com/doomemacs/themes -;; -;;; Commentary: -;; -;; Stylix template for Doom Emacs. -;; -;;; Code: - -(require 'doom-themes) - -;; -;;; Variables - -(defgroup doom-stylix-theme nil - "Options for the `doom-one' theme." - :group 'doom-themes) - -(defcustom doom-stylix-brighter-modeline nil - "If non-nil, more vivid colors will be used to style the mode-line." - :group 'doom-stylix-theme - :type 'boolean) - -(defcustom doom-stylix-brighter-comments nil - "If non-nil, comments will be highlighted in more vivid colors." - :group 'doom-stylix-theme - :type 'boolean) - -(defcustom doom-stylix-padded-modeline doom-themes-padded-modeline - "If non-nil, adds a 4px padding to the mode-line. -Can be an integer to determine the exact padding." - :group 'doom-stylix-theme - :type '(choice integer boolean)) - - -;; -;;; Theme definition - -(def-doom-theme doom-stylix - "A theme generated from current stylix theme." - - ;; name default 256 16 - ((bg '("#{{base00-hex}}" "black" "black" )) - (fg '("#{{base05-hex}}" "#bfbfbf" "brightwhite" )) - - ;; These are off-color variants of bg/fg, used primarily for `solaire-mode', - ;; but can also be useful as a basis for subtle highlights (e.g. for hl-line - ;; or region), especially when paired with the `doom-darken', `doom-lighten', - ;; and `doom-blend' helper functions. - (bg-alt '("#{{base01-hex}}" "black" "black" )) - (fg-alt '("#{{base07-hex}}" "#2d2d2d" "white" )) - - ;; These should represent a spectrum from bg to fg, where base0 is a starker - ;; bg and base8 is a starker fg. For example, if bg is light grey and fg is - ;; dark grey, base0 should be white and base8 should be black. - (base0 '("#{{base00-hex}}" "black" "black" )) - (base1 '("#{{base01-hex}}" "#1e1e1e" "brightblack" )) - (base2 '("#{{base01-hex}}" "#2e2e2e" "brightblack" )) - (base3 '("#{{base02-hex}}" "#262626" "brightblack" )) - (base4 '("#{{base03-hex}}" "#3f3f3f" "brightblack" )) - (base5 '("#{{base04-hex}}" "#525252" "brightblack" )) - (base6 '("#{{base05-hex}}" "#6b6b6b" "brightblack" )) - (base7 '("#{{base06-hex}}" "#979797" "brightblack" )) - (base8 '("#{{base07-hex}}" "#dfdfdf" "white" )) - - (grey base4) - (red '("#{{base08-hex}}" "#ff6655" "red" )) - (orange '("#{{base09-hex}}" "#dd8844" "brightred" )) - (green '("#{{base0B-hex}}" "#99bb66" "green" )) - (teal '("#{{base0C-hex}}" "#44b9b1" "brightgreen" )) - (yellow '("#{{base0A-hex}}" "#ECBE7B" "yellow" )) - (blue '("#{{base0E-hex}}" "#51afef" "brightblue" )) - (dark-blue '("#{{base0E-hex}}" "#2257A0" "blue" )) - (magenta '("#{{base0F-hex}}" "#c678dd" "brightmagenta")) - (violet '("#{{base0F-hex}}" "#a9a1e1" "magenta" )) - (cyan '("#{{base0D-hex}}" "#46D9FF" "brightcyan" )) - (dark-cyan '("#{{base0C-hex}}" "#5699AF" "cyan" )) - - ;; These are the "universal syntax classes" that doom-themes establishes. - ;; These *must* be included in every doom themes, or your theme will throw an - ;; error, as they are used in the base theme defined in doom-themes-base. - (highlight blue) - (vertical-bar (doom-darken base1 0.1)) - (selection dark-blue) - (builtin magenta) - (comments (if doom-stylix-brighter-comments dark-cyan base5)) - (doc-comments (doom-lighten (if doom-stylix-brighter-comments dark-cyan base5) 0.25)) - (constants violet) - (functions magenta) - (keywords blue) - (methods cyan) - (operators blue) - (type yellow) - (strings green) - (variables (doom-lighten magenta 0.4)) - (numbers orange) - (region `(,(doom-lighten (car bg-alt) 0.15) ,@(doom-lighten (cdr base1) 0.35))) - (error red) - (warning yellow) - (success green) - (vc-modified orange) - (vc-added green) - (vc-deleted red) - - ;; These are extra color variables used only in this theme; i.e. they aren't - ;; mandatory for derived themes. - (modeline-fg fg) - (modeline-fg-alt base5) - (modeline-bg (if doom-stylix-brighter-modeline - (doom-darken blue 0.45) - (doom-darken bg-alt 0.1))) - (modeline-bg-alt (if doom-stylix-brighter-modeline - (doom-darken blue 0.475) - `(,(doom-darken (car bg-alt) 0.15) ,@(cdr bg)))) - (modeline-bg-inactive `(,(car bg-alt) ,@(cdr base1))) - (modeline-bg-inactive-alt `(,(doom-darken (car bg-alt) 0.1) ,@(cdr bg))) - - (-modeline-pad - (when doom-stylix-padded-modeline - (if (integerp doom-stylix-padded-modeline) doom-stylix-padded-modeline 4)))) - - - ;;;; Base theme face overrides - (((line-number &override) :foreground base4) - ((line-number-current-line &override) :foreground fg) - ((font-lock-comment-face &override) - :background (if doom-stylix-brighter-comments (doom-lighten bg 0.05))) - (mode-line - :background modeline-bg :foreground modeline-fg - :box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg))) - (mode-line-inactive - :background modeline-bg-inactive :foreground modeline-fg-alt - :box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-inactive))) - (mode-line-emphasis :foreground (if doom-stylix-brighter-modeline base8 highlight)) - - ;;;; css-mode / scss-mode - (css-proprietary-property :foreground orange) - (css-property :foreground green) - (css-selector :foreground blue) - ;;;; doom-modeline - (doom-modeline-bar :background (if doom-stylix-brighter-modeline modeline-bg highlight)) - (doom-modeline-buffer-file :inherit 'mode-line-buffer-id :weight 'bold) - (doom-modeline-buffer-path :inherit 'mode-line-emphasis :weight 'bold) - (doom-modeline-buffer-project-root :foreground green :weight 'bold) - ;;;; elscreen - (elscreen-tab-other-screen-face :background "#{{base01-hex}}" :foreground "#{{base06-hex}}") - ;;;; ivy - (ivy-current-match :background dark-blue :distant-foreground base0 :weight 'normal) - ;;;; LaTeX-mode - (font-latex-math-face :foreground green) - ;;;; markdown-mode - (markdown-markup-face :foreground base5) - (markdown-header-face :inherit 'bold :foreground red) - ((markdown-code-face &override) :background (doom-lighten base3 0.05)) - ;;;; org-mode - (org-block :background (doom-darken bg 0.05 ) :extend t) - (org-code :background (doom-darken bg 0.05 ) :extend t) - ;;;; rjsx-mode - (rjsx-tag :foreground red) - (rjsx-attr :foreground orange) - ;;;; solaire-mode - (solaire-mode-line-face - :inherit 'mode-line - :background modeline-bg-alt - :box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-alt))) - (solaire-mode-line-inactive-face - :inherit 'mode-line-inactive - :background modeline-bg-inactive-alt - :box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-inactive-alt)))) - - ;;;; Base theme variable overrides- - ()) - -;;; doom-stylix-theme.el ends here diff --git a/user/app/emacsng/default.nix b/user/app/emacsng/default.nix deleted file mode 100644 index e2c4c61..0000000 --- a/user/app/emacsng/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ config, lib, pkgs, inputs, ... }: - -{ - home.packages = [ - inputs.emacsng.packages.${pkgs.system}.emacsngWRPgtk - pkgs.source-code-pro - ]; -} diff --git a/user/pkgs/rogauracore.nix b/user/pkgs/rogauracore.nix deleted file mode 100644 index d141753..0000000 --- a/user/pkgs/rogauracore.nix +++ /dev/null @@ -1,17 +0,0 @@ -# THIS DOES NOT WORK YET! -{ stdenv, pkgs, ... }: - -let name = "rogauracore"; - owner = "wroberts"; - version = "1.6"; -in - stdenv.mkDerivation { - inherit name owner version; - src = fetchTarball { - url = "https://github.com/"+owner+"/"+name+"/releases/download/"+version+"/rogauracore-"+version+".tar.gz"; - sha256 = "0vpypcq71yv0v8vbgpkn8xy77j22g55aw6i83s30mpbpjjna2lm9"; - }; - buildInputs = [ pkgs.udev - pkgs.libusb - ]; -} diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 9198dad..b4b05b3 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -1,4 +1,4 @@ -{ inputs, config, lib, pkgs, userSettings, systemSettings, pkgs-nwg-dock-hyprland, ... }: let +{ inputs, config, lib, pkgs, userSettings, systemSettings, ... }: let pkgs-hyprland = inputs.hyprland.inputs.nixpkgs.legacyPackages.${pkgs.stdenv.hostPlatform.system}; in { @@ -109,7 +109,6 @@ in bind=SUPERSHIFT,T,exec,screenshot-ocr bind=CTRLALT,Delete,exec,hyprctl kill bind=SUPERSHIFT,K,exec,hyprctl kill - bind=SUPER,W,exec,nwg-dock-wrapper bind=,code:172,exec,lollypop -t bind=,code:208,exec,lollypop -t @@ -420,24 +419,23 @@ in rustPlatform = oldAttrs.rustPlatform // { buildRustPackage = args: oldAttrs.rustPlatform.buildRustPackage (args // { pname = "hyprnome"; - version = "unstable-2024-05-06"; + version = "0.3.1"; src = fetchFromGitHub { owner = "donovanglover"; repo = "hyprnome"; - rev = "f185e6dbd7cfcb3ecc11471fab7d2be374bd5b28"; - hash = "sha256-tmko/bnGdYOMTIGljJ6T8d76NPLkHAfae6P6G2Aa2Qo="; + rev = "a4597387e777fde8f8a79090cce418843e5b85d1"; + hash = "sha256-GZn7qS1J6QSanWdy17sMBbwJ77iMij2jKRgPdrjt6tM="; }; cargoDeps = oldAttrs.cargoDeps.overrideAttrs (oldAttrs: rec { name = "${pname}-vendor.tar.gz"; inherit src; - outputHash = "sha256-cQwAGNKTfJTnXDI3IMJQ2583NEIZE7GScW7TsgnKrKs="; + outputHash = "sha256-oxIZTp5ZJRUjXLpMw2nOnPHYHhHN03HWFRhBZ82Ac10="; }); - cargoHash = "sha256-cQwAGNKTfJTnXDI3IMJQ2583NEIZE7GScW7TsgnKrKs="; + cargoHash = "sha256-oxIZTp5ZJRUjXLpMw2nOnPHYHhHN03HWFRhBZ82Ac10="; }); }; }) ) - gnome.zenity wlr-randr wtype ydotool @@ -472,15 +470,6 @@ in tesseract $imgname $txtname; wl-copy -n < $txtfname '') - (pkgs.writeScriptBin "nwg-dock-wrapper" '' - #!/bin/sh - if pgrep -x ".nwg-dock-hyprl" > /dev/null - then - nwg-dock-hyprland - else - nwg-dock-hyprland -f -x -i 64 -nolauncher -a start -ml 8 -mr 8 -mb 8 - fi - '') (pkgs.writeScriptBin "sct" '' #!/bin/sh killall wlsunset &> /dev/null; @@ -509,74 +498,12 @@ in if pgrep -x nixos-rebuild > /dev/null || pgrep -x home-manager > /dev/null || pgrep -x kdenlive > /dev/null || pgrep -x FL64.exe > /dev/null || pgrep -x blender > /dev/null || pgrep -x flatpak > /dev/null; then echo "Shouldn't suspend"; sleep 10; else echo "Should suspend"; systemctl suspend; fi '') - ]) - ++ - (with pkgs-hyprland; [ ]) - ++ (with pkgs-nwg-dock-hyprland; [ - (nwg-dock-hyprland.overrideAttrs (oldAttrs: { - patches = ./patches/noactiveclients.patch; - })) - ]); + ]); home.file.".local/share/pixmaps/hyprland-logo-stylix.svg".source = config.lib.stylix.colors { template = builtins.readFile ../../pkgs/hyprland-logo-stylix.svg.mustache; extension = "svg"; }; - home.file.".config/nwg-dock-hyprland/style.css".text = '' - window { - background: rgba(''+config.lib.stylix.colors.base00-rgb-r+'',''+config.lib.stylix.colors.base00-rgb-g+'',''+config.lib.stylix.colors.base00-rgb-b+'',0.0); - border-radius: 20px; - padding: 4px; - margin-left: 4px; - margin-right: 4px; - border-style: none; - } - - #box { - /* Define attributes of the box surrounding icons here */ - padding: 10px; - background: rgba(''+config.lib.stylix.colors.base00-rgb-r+'',''+config.lib.stylix.colors.base00-rgb-g+'',''+config.lib.stylix.colors.base00-rgb-b+'',0.55); - border-radius: 20px; - padding: 4px; - margin-left: 4px; - margin-right: 4px; - border-style: none; - } - button { - border-radius: 10px; - padding: 4px; - margin-left: 4px; - margin-right: 4px; - background: rgba(''+config.lib.stylix.colors.base03-rgb-r+'',''+config.lib.stylix.colors.base03-rgb-g+'',''+config.lib.stylix.colors.base03-rgb-b+'',0.55); - color: #''+config.lib.stylix.colors.base07+''; - font-size: 12px - } - - button:hover { - background: rgba(''+config.lib.stylix.colors.base04-rgb-r+'',''+config.lib.stylix.colors.base04-rgb-g+'',''+config.lib.stylix.colors.base04-rgb-b+'',0.55); - } - - ''; - home.file.".config/nwg-dock-pinned".text = '' - nwggrid - Alacritty - neovide - qutebrowser - brave-browser - writer - impress - calc - draw - krita - xournalpp - obs - kdenlive - flstudio - blender - openscad - Cura - virt-manager - ''; home.file.".config/hypr/hypridle.conf".text = '' general { lock_cmd = pgrep hyprlock || hyprlock From 0c5037333f7bfec48496680c6b144a5107fe5eeb Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 8 Nov 2024 14:42:12 -0600 Subject: [PATCH 004/317] Turned off broken firejail profiles, needs fixing --- system/security/firejail.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/system/security/firejail.nix b/system/security/firejail.nix index 03533d3..e3176a8 100644 --- a/system/security/firejail.nix +++ b/system/security/firejail.nix @@ -8,13 +8,13 @@ # executable = "${pkgs.prismlauncher}/bin/prismlauncher"; # profile = ./firejail-profiles/prismlauncher.profile; #}; - steam = { - executable = "${pkgs.steam}/bin/steam"; - profile = "${pkgs.firejail}/etc/firejail/steam.profile"; - }; - steam-run = { - executable = "${pkgs.steam}/bin/steam-run"; - profile = "${pkgs.firejail}/etc/firejail/steam.profile"; - }; + #steam = { + # executable = "${pkgs.steam}/bin/steam"; + # profile = "${pkgs.firejail}/etc/firejail/steam.profile"; + #}; + #steam-run = { + # executable = "${pkgs.steam}/bin/steam-run"; + # profile = "${pkgs.firejail}/etc/firejail/steam.profile"; + #}; }; } From be4639509d3eef0be9b67a64148de9a6a93e2353 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 8 Nov 2024 14:58:00 -0600 Subject: [PATCH 005/317] Fixed cura desktop file --- profiles/work/home.nix | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 32e137e..7305ee4 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -125,23 +125,13 @@ }; extraPkgs = pkgs: with pkgs; []; }) - #(pkgs-stable.cura.overrideAttrs (oldAttrs: { - # postInstall = oldAttrs.postInstall + ''cp -rf ${(pkgs.makeDesktopItem { - # name = "com.ultimaker.cura"; - # icon = "cura-icon"; - # desktopName = "Cura"; - # exec = "env QT_QPA_PLATFORM=xcb ${pkgs-stable.cura}/bin/cura %F"; - # tryExec = "env QT_QPA_PLATFORM=xcb ${pkgs-stable.cura}/bin/cura"; - # terminal = false; - # type = "Application"; - # categories = ["Graphics"]; - # mimeTypes = ["model/stl" "application/vnd.ms-3mfdocument" "application/prs.wavefront-obj" - # "image/bmp" "image/gif" "image/jpeg" "image/png" "text/x-gcode" "application/x-amf" - # "application/x-ply" "application/x-ctm" "model/vnd.collada+xml" "model/gltf-binary" - # "model/gltf+json" "model/vnd.collada+xml+zip"]; - # })}/share/applications $out/share''; - #})) - #(pkgs.writeShellScriptBin "curax" ''env QT_QPA_PLATFORM=xcb ${pkgs-stable.cura}/bin/cura $@'') + (pkgs.makeDesktopItem { + name = "Cura"; + desktopName = "Cura"; + exec = "env QT_QPA_PLATFORM=xcb Cura %i"; + terminal = false; + type = "Application"; + }) (pkgs-stable.curaengine_stable) openscad (stdenv.mkDerivation { From 33f3d14cbf15bcd68251e6d1fcbf7dd02e02a2b6 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 8 Nov 2024 14:59:53 -0600 Subject: [PATCH 006/317] Trying bfq scheduler --- system/hardware-configuration.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/system/hardware-configuration.nix b/system/hardware-configuration.nix index 313c9f1..0d19ab1 100644 --- a/system/hardware-configuration.nix +++ b/system/hardware-configuration.nix @@ -33,6 +33,11 @@ hardware.amdgpu.opencl.enable = true; hardware.amdgpu.amdvlk.enable = true; + # makes disk io not freeze the computer + services.udev.extraRules = '' + ACTION=="add|change", SUBSYSTEM=="block", ENV{ID_SERIAL_SHORT}=="BTKA121225GP512A", ATTR{queue/scheduler}="bfq" + ''; + systemd.tmpfiles.rules = let rocmEnv = pkgs.symlinkJoin { From 1e9af194578f5be9477527af3655450f8cdf0185 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 8 Nov 2024 21:56:06 -0600 Subject: [PATCH 007/317] Extra gpu stuff on qutebrowser --- flake.nix | 4 ++-- user/app/browser/qute-containers.nix | 2 +- user/app/browser/qutebrowser.nix | 3 ++- user/wm/hyprland/hyprprofiles/hyprprofiles.nix | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index 6fe8cad..e245fc4 100644 --- a/flake.nix +++ b/flake.nix @@ -25,9 +25,9 @@ theme = "io"; # selcted theme from my themes directory (./themes/) wm = "hyprland"; # Selected window manager or desktop environment; must select one in both ./user/wm/ and ./system/wm/ # window manager type (hyprland or x11) translator - wmType = if ((wm == "hyprland") || (wm == "plasma")) then "wayland" else "x11"; + wmType = if (wm == "hyprland") then "wayland" else "x11"; browser = "qutebrowser"; # Default browser; must select one from ./user/app/browser/ - spawnBrowser = if ((browser == "qutebrowser") && (wm == "hyprland")) then "qutebrowser-hyprprofile" else (if (browser == "qutebrowser") then "qutebrowser --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag num-raster-threads=4" else browser); # Browser spawn command must be specail for qb, since it doesn't gpu accelerate by default (why?) + spawnBrowser = if ((browser == "qutebrowser") && (wm == "hyprland")) then "qutebrowser-hyprprofile" else (if (browser == "qutebrowser") then "qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4" else browser); # Browser spawn command must be specail for qb, since it doesn't gpu accelerate by default (why?) defaultRoamDir = "Personal.p"; # Default org roam directory relative to ~/Org term = "alacritty"; # Default terminal command; font = "Intel One Mono"; # Selected font diff --git a/user/app/browser/qute-containers.nix b/user/app/browser/qute-containers.nix index 3bb1fd0..5406680 100644 --- a/user/app/browser/qute-containers.nix +++ b/user/app/browser/qute-containers.nix @@ -16,7 +16,7 @@ in phases = "installPhase"; - postPatch = ''sed -i "s/qutebrowser/qutebrowser --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag num-raster-threads=4/g" container-open''; + postPatch = ''sed -i "s/qutebrowser/qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4/g" container-open''; installPhase = '' mkdir -p $out $out/bin diff --git a/user/app/browser/qutebrowser.nix b/user/app/browser/qutebrowser.nix index 0717c41..7e79a8e 100644 --- a/user/app/browser/qutebrowser.nix +++ b/user/app/browser/qutebrowser.nix @@ -116,7 +116,8 @@ if (os.path.isfile(secretFile)): secretsExists = True config.set('scrolling.smooth',True) -config.set('qt.args',['ignore-gpu-blacklist','enable-gpu-rasterization','enable-native-gpu-memory-buffers','num-raster-threads=4']) +config.set('qt.args',['ignore-gpu-blacklist','enable-gpu-rasterization','enable-accelerated-video-decode','enable-quic','enable-zero-copy','enable-native-gpu-memory-buffers','num-raster-threads=4']) +config.set('qt.workarounds.disable_accelerated_2d_canvas','never') config.load_autoconfig(True) base00 = "#''+config.lib.stylix.colors.base00+''" diff --git a/user/wm/hyprland/hyprprofiles/hyprprofiles.nix b/user/wm/hyprland/hyprprofiles/hyprprofiles.nix index adad903..e73b402 100644 --- a/user/wm/hyprland/hyprprofiles/hyprprofiles.nix +++ b/user/wm/hyprland/hyprprofiles/hyprprofiles.nix @@ -32,7 +32,7 @@ in if [[ $profile ]]; then container-open $profile $1; else - qutebrowser --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag num-raster-threads=4 $1; + qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4 $1; fi '') (pkgs.makeDesktopItem { From caa751a30b988b43318e007e243615be9749553b Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 10 Nov 2024 20:44:29 -0600 Subject: [PATCH 008/317] Updated system and removed unecessary blender patch --- flake.lock | 6 +++--- flake.nix | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index a295841..a473c16 100644 --- a/flake.lock +++ b/flake.lock @@ -689,11 +689,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730785428, - "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", + "lastModified": 1731139594, + "narHash": "sha256-IigrKK3vYRpUu+HEjPL/phrfh7Ox881er1UEsZvw9Q4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", + "rev": "76612b17c0ce71689921ca12d9ffdc9c23ce40b2", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index e245fc4..d681b04 100644 --- a/flake.nix +++ b/flake.nix @@ -56,7 +56,7 @@ (import inputs.nixpkgs { system = systemSettings.system; rocmSupport = (if systemSettings.gpu == "amd" then true else false); }).applyPatches { name = "nixpkgs-patched"; src = inputs.nixpkgs; - patches = [ ./patches/nixpkgs-354095.patch ]; + patches = [ ]; }; # configure pkgs From 7b6cc8d4b33e979077363a3f1a9cf91b00388d4c Mon Sep 17 00:00:00 2001 From: Emmet K <> Date: Thu, 14 Nov 2024 22:39:43 -0600 Subject: [PATCH 009/317] Updated chadrc for newer nvchad --- user/app/nvim/lua/chadrc.lua | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/user/app/nvim/lua/chadrc.lua b/user/app/nvim/lua/chadrc.lua index 0a54e69..2f5dec3 100644 --- a/user/app/nvim/lua/chadrc.lua +++ b/user/app/nvim/lua/chadrc.lua @@ -16,17 +16,18 @@ M.base46 = { M.ui = { theme = "stylix", - nvdash = { - load_on_startup = true, - buttons = { - { " Find File", "Spc .", "Telescope find_files" }, - { "󰙅 Nvimtree", "SPC e", "NvimTreeToggle" }, - { " Projects ", "Spc p p", "Telescope workspaces" }, - { "󰯌 Vsplit ", "Spc w v", "vsplit" }, - { "󰯋 Split ", "Spc w s", "split" }, - { "󰋗 Help", "Spc c h", "NvCheatsheet" }, - }, - } } +M.nvdash = { + load_on_startup = true, + buttons = { + { txt = " Find File", keys = "Spc .", cmd = "Telescope find_files" }, + { txt = "󰙅 Nvimtree", keys = "SPC e", cmd = "NvimTreeToggle" }, + { txt = " Projects ", keys = "Spc p p", cmd = "Telescope workspaces" }, + { txt = "󰯌 Vsplit ", keys = "Spc w v", cmd = "vsplit" }, + { txt = "󰯋 Split ", keys = "Spc w s", cmd = "split" }, + { txt = "󰋗 Help", keys = "Spc c h", cmd = "NvCheatsheet" }, + }, + } + return M From 46020354bbdd1c3b0c16ef8fd4940354db3f1da0 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 15 Nov 2024 21:17:52 -0600 Subject: [PATCH 010/317] Updated system + hyprland --- flake.lock | 321 ++++++++++++++++++++++++----------------------------- flake.nix | 12 +- 2 files changed, 153 insertions(+), 180 deletions(-) diff --git a/flake.lock b/flake.lock index a473c16..725638e 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1730968822, - "narHash": "sha256-NocDjINsh6ismkhb0Xr6xPRksmhuB2WGf8ZmXMhxu7Y=", + "lastModified": 1731496216, + "narHash": "sha256-nlQrNN+tmJ+iP6Ck/czwZI0Hxz3oNvUyGkVruxJwgwA=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "a49bc3583ff223f426cb3526fdaa4bcaa247ec14", + "rev": "3b00e96f90cb0040de6d88ad99bf5f4d443f0c59", "type": "github" }, "original": { @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1731033962, - "narHash": "sha256-1LO6MzklwZ3ry3gi8ET129L7P2aRsAWOj1XeiNM6qHM=", + "lastModified": 1731599190, + "narHash": "sha256-yatAfGU1EkcVFPhm/F0qiBmR4go7BWn0NFbT7505yMk=", "owner": "StevenBlack", "repo": "hosts", - "rev": "a9296b0d324a66ae0a5cad3c1f3d2afcf3d09eb8", + "rev": "77186ce2572f82d5569cbd99f0744fe80cc0ecf0", "type": "github" }, "original": { @@ -116,6 +116,22 @@ } }, "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { "flake": false, "locked": { "lastModified": 1673956053, @@ -132,24 +148,6 @@ } }, "flake-utils": { - "inputs": { - "systems": "systems_3" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { "inputs": { "systems": [ "stylix", @@ -170,21 +168,6 @@ "type": "github" } }, - "flakey-profile": { - "locked": { - "lastModified": 1712898590, - "narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=", - "owner": "lf-", - "repo": "flakey-profile", - "rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d", - "type": "github" - }, - "original": { - "owner": "lf-", - "repo": "flakey-profile", - "type": "github" - } - }, "fromYaml": { "flake": false, "locked": { @@ -201,6 +184,28 @@ "type": "github" } }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "gnome-shell": { "flake": false, "locked": { @@ -267,11 +272,11 @@ ] }, "locked": { - "lastModified": 1730837930, - "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=", + "lastModified": 1731604581, + "narHash": "sha256-Qq2YZZaDTB3FZLWU/Hgh1uuWlUBl3cMLGB99bm7rFUM=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f607e07f3ac7e53541120536708e824acccfaa8", + "rev": "1d0862ee2d7c6f6cd720d6f32213fa425004be10", "type": "github" }, "original": { @@ -297,11 +302,11 @@ ] }, "locked": { - "lastModified": 1727532803, - "narHash": "sha256-ZaZ7h7PY8mQc4vtGmVqWLAq9CAO02gHMyNR5yY8zDmM=", + "lastModified": 1728669738, + "narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "b98726e431d4d3ed58bd58bee1047cdb81cec69f", + "rev": "0264e698149fcb857a66a53018157b41f8d97bb0", "type": "github" }, "original": { @@ -342,22 +347,25 @@ "nixpkgs": [ "nixpkgs" ], + "pre-commit-hooks": "pre-commit-hooks", "systems": "systems", "xdph": "xdph" }, "locked": { - "lastModified": 1728478479, - "narHash": "sha256-AbfdIlK92oWpI39xlIaUekPeL9u95sXzxVsSqhIMfIc=", - "owner": "hyprwm", - "repo": "Hyprland", - "rev": "4520b30d498daca8079365bdb909a8dea38e8d55", - "type": "github" + "lastModified": 1731526492, + "narHash": "sha256-2Gob+eZEPpF225QrRLXyfeQ9L63YHFa/tNh15FW/Rzo=", + "ref": "refs/heads/main", + "rev": "3fb47372b79265ebdabeeefdad10359d5b18377a", + "revCount": 5451, + "submodules": true, + "type": "git", + "url": "https://code.hyprland.org/hyprwm/Hyprland.git" }, "original": { - "owner": "hyprwm", - "ref": "v0.44.1", - "repo": "Hyprland", - "type": "github" + "rev": "3fb47372b79265ebdabeeefdad10359d5b18377a", + "submodules": true, + "type": "git", + "url": "https://code.hyprland.org/hyprwm/Hyprland.git" } }, "hyprland-plugins": { @@ -377,15 +385,16 @@ ] }, "locked": { - "lastModified": 1729596320, - "narHash": "sha256-sBPr6O2Ad916f+L7biAjmJVx4TLDITC4joKgeOT47V8=", - "rev": "4d7f0b5d8b952f31f7d2e29af22ab0a55ca5c219", - "revCount": 198, + "lastModified": 1731619734, + "narHash": "sha256-ZroMITOTQ3eu6z+3m7DJtaKePJWDTPuElkgmKl3rl9g=", + "ref": "refs/heads/main", + "rev": "344a69db96fa8c6dc3b8f1f8f5a75f6eb441cbf2", + "revCount": 204, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprland-plugins.git" }, "original": { - "rev": "4d7f0b5d8b952f31f7d2e29af22ab0a55ca5c219", + "rev": "344a69db96fa8c6dc3b8f1f8f5a75f6eb441cbf2", "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprland-plugins.git" } @@ -402,38 +411,11 @@ ] }, "locked": { - "lastModified": 1727451107, - "narHash": "sha256-qV9savtHwmZUa0eJE294WYJjKPGB2+bJhwByFShsVyo=", + "lastModified": 1728345020, + "narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "6b3261ee13a6d2b99de79a31d352f6996e35bde3", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, - "hyprland-protocols_2": { - "inputs": { - "nixpkgs": [ - "hyprland", - "xdph", - "nixpkgs" - ], - "systems": [ - "hyprland", - "xdph", - "systems" - ] - }, - "locked": { - "lastModified": 1721326555, - "narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84", + "rev": "a7c183800e74f337753de186522b9017a07a8cee", "type": "github" }, "original": { @@ -458,11 +440,11 @@ ] }, "locked": { - "lastModified": 1725997860, - "narHash": "sha256-d/rZ/fHR5l1n7PeyLw0StWMNLXVU9c4HFyfskw568so=", + "lastModified": 1728168612, + "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "dfeb5811dd6485490cce18d6cc1e38a055eea876", + "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", "type": "github" }, "original": { @@ -535,11 +517,11 @@ ] }, "locked": { - "lastModified": 1727300645, - "narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=", + "lastModified": 1731518387, + "narHash": "sha256-aZZw1ZvTMLkcA6udlvkA3hrCkuipoWLy8s/JNnIclxY=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c", + "rev": "315fba5d21d87ddb756d4bebdb49f99d86b0ffe8", "type": "github" }, "original": { @@ -598,41 +580,6 @@ "type": "github" } }, - "lix": { - "flake": false, - "locked": { - "lastModified": 1720626042, - "narHash": "sha256-f8k+BezKdJfmE+k7zgBJiohtS3VkkriycdXYsKOm3sc=", - "rev": "2a4376be20d70feaa2b0e640c5041fb66ddc67ed", - "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/2a4376be20d70feaa2b0e640c5041fb66ddc67ed.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://git.lix.systems/lix-project/lix/archive/2.90.0.tar.gz" - } - }, - "lix-module": { - "inputs": { - "flake-utils": "flake-utils", - "flakey-profile": "flakey-profile", - "lix": "lix", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1720641669, - "narHash": "sha256-yEO2cGNgzm9x/XxiDQI+WckSWnZX63R8aJLBRSXtYNE=", - "rev": "5c48c833c15bb80d127a398a8c2484d42fdd8257", - "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/5c48c833c15bb80d127a398a8c2484d42fdd8257.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz" - } - }, "nix-formatter-pack": { "inputs": { "nixpkgs": [ @@ -689,11 +636,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1731139594, - "narHash": "sha256-IigrKK3vYRpUu+HEjPL/phrfh7Ox881er1UEsZvw9Q4=", + "lastModified": 1731319897, + "narHash": "sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY+/Z96ZcLpooIbuEI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "76612b17c0ce71689921ca12d9ffdc9c23ce40b2", + "rev": "dc460ec76cbff0e66e269457d7b728432263166c", "type": "github" }, "original": { @@ -736,11 +683,27 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1730883749, - "narHash": "sha256-mwrFF0vElHJP8X3pFCByJR365Q2463ATp2qGIrDUdlE=", + "lastModified": 1730741070, + "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dba414932936fde69f0606b4f1d87c5bc0003ede", + "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { + "locked": { + "lastModified": 1731652201, + "narHash": "sha256-XUO0JKP1hlww0d7mm3kpmIr4hhtR4zicg5Wwes9cPMg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c21b77913ea840f8bcf9adf4c41cecc2abffd38d", "type": "github" }, "original": { @@ -767,11 +730,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1725194671, - "narHash": "sha256-tLGCFEFTB5TaOKkpfw3iYT9dnk4awTP/q4w+ROpMfuw=", + "lastModified": 1731531548, + "narHash": "sha256-sz8/v17enkYmfpgeeuyzniGJU0QQBfmAjlemAUYhfy8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b833ff01a0d694b910daca6e2ff4a3f26dee478c", + "rev": "24f0d4acd634792badd6470134c387a3b039dace", "type": "github" }, "original": { @@ -835,6 +798,30 @@ "type": "github" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1731363552, + "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "blocklist-hosts": "blocklist-hosts", @@ -844,10 +831,9 @@ "hyprland": "hyprland", "hyprland-plugins": "hyprland-plugins", "hyprlock": "hyprlock", - "lix-module": "lix-module", "nix-on-droid": "nix-on-droid", "nixpkgs": "nixpkgs", - "nixpkgs-stable": "nixpkgs-stable", + "nixpkgs-stable": "nixpkgs-stable_2", "nvchad": "nvchad", "rust-overlay": "rust-overlay", "stylix": "stylix" @@ -858,11 +844,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1731032894, - "narHash": "sha256-dQSyYPmrQiPr+PGEd+K8038rubFGz7G/dNXVeaGWE0w=", + "lastModified": 1731724228, + "narHash": "sha256-3R48B+BVeZ8IWsXF7TdRm441RsdJt21yQ5ZgxuNTXYc=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "d52f2a4c103a0acf09ded857b9e2519ae2360e59", + "rev": "f6c4c2a7b8969c2b172847b3ef474e0d3bd8bdce", "type": "github" }, "original": { @@ -893,22 +879,22 @@ "base16-fish": "base16-fish", "base16-helix": "base16-helix", "base16-vim": "base16-vim", - "flake-compat": "flake-compat", - "flake-utils": "flake-utils_2", + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils", "gnome-shell": "gnome-shell", "home-manager": "home-manager", "nixpkgs": "nixpkgs_3", - "systems": "systems_4", + "systems": "systems_3", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-tmux": "tinted-tmux" }, "locked": { - "lastModified": 1731002033, - "narHash": "sha256-uGjTjvvlGQfQ0yypVP+at0NizI2nrb6kz4wGAqzRGbY=", + "lastModified": 1731657386, + "narHash": "sha256-Mm/JL8tFUS1SOmmZDPcswExUxzw0VpHcEyZI1h58CGA=", "owner": "danth", "repo": "stylix", - "rev": "f71c2effed1ce4f9fbeefe402e4e431428ffe93a", + "rev": "5ab1207b2fdeb5a022f2dd7cccf6be760f1b150f", "type": "github" }, "original": { @@ -962,34 +948,20 @@ "type": "github" } }, - "systems_4": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "tinted-foot": { "flake": false, "locked": { - "lastModified": 1696725948, - "narHash": "sha256-65bz2bUL/yzZ1c8/GQASnoiGwaF8DczlxJtzik1c0AU=", + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", "owner": "tinted-theming", "repo": "tinted-foot", - "rev": "eedbcfa30de0a4baa03e99f5e3ceb5535c2755ce", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", "type": "github" }, "original": { "owner": "tinted-theming", "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", "type": "github" } }, @@ -1028,7 +1000,10 @@ }, "xdph": { "inputs": { - "hyprland-protocols": "hyprland-protocols_2", + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], "hyprlang": [ "hyprland", "hyprlang" @@ -1051,11 +1026,11 @@ ] }, "locked": { - "lastModified": 1727524473, - "narHash": "sha256-1DGktDtSWIJpnDbVoj/qpvJSH5zg6JbOfuh6xqZMap0=", + "lastModified": 1730743262, + "narHash": "sha256-iTLqj3lU8kFehPm5tXpctzkD274t/k1nwSSq3qCWXeg=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "7e500e679ede40e79cf2d89b5f5fa3e34923bd26", + "rev": "09b23cef06fe248e61cec8862c04b9bcb62f4b6d", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d681b04..f69a80f 100644 --- a/flake.nix +++ b/flake.nix @@ -140,7 +140,6 @@ system = systemSettings.system; modules = [ (./. + "/profiles" + ("/" + systemSettings.profile) + "/configuration.nix") - inputs.lix-module.nixosModules.default ./system/bin/phoenix.nix ]; # load configuration.nix from selected PROFILE specialArgs = { @@ -189,10 +188,6 @@ }; inputs = { - lix-module = { - url = "https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz"; - inputs.nixpkgs.follows = "nixpkgs"; - }; nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs-stable.url = "nixpkgs/nixos-24.05"; @@ -209,13 +204,16 @@ }; hyprland = { - url = "github:hyprwm/Hyprland/v0.44.1?submodules=true"; + type = "git"; + url = "https://code.hyprland.org/hyprwm/Hyprland.git"; + submodules = true; + rev = "3fb47372b79265ebdabeeefdad10359d5b18377a"; #v0.45.0 inputs.nixpkgs.follows = "nixpkgs"; }; hyprland-plugins = { type = "git"; url = "https://code.hyprland.org/hyprwm/hyprland-plugins.git"; - rev = "4d7f0b5d8b952f31f7d2e29af22ab0a55ca5c219"; #v0.44.1 + rev = "344a69db96fa8c6dc3b8f1f8f5a75f6eb441cbf2"; #v0.45.0 inputs.hyprland.follows = "hyprland"; }; hyprlock = { From 9e9561dd4fd4f63cd85b6f538f62ff915d37c223 Mon Sep 17 00:00:00 2001 From: Emmet K <> Date: Wed, 20 Nov 2024 15:04:07 -0600 Subject: [PATCH 011/317] iio-hyprland is really cool --- system/wm/hyprland.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/system/wm/hyprland.nix b/system/wm/hyprland.nix index 5d7cada..7b7c008 100644 --- a/system/wm/hyprland.nix +++ b/system/wm/hyprland.nix @@ -26,6 +26,11 @@ in }; }; + programs.iio-hyprland.enable = true; + environment.systemPackages = with pkgs; [ + jq + ]; + services.xserver.excludePackages = [ pkgs.xterm ]; services.xserver = { From 5c6d42ea79b1f25b01c821596c10cb6db909c6f1 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 22 Nov 2024 21:05:37 -0600 Subject: [PATCH 012/317] Updated system --- flake.lock | 61 ++++++++++++++++++----------------- profiles/work/home.nix | 2 +- user/shell/cli-collection.nix | 1 - 3 files changed, 32 insertions(+), 32 deletions(-) diff --git a/flake.lock b/flake.lock index 725638e..f28c382 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1731496216, - "narHash": "sha256-nlQrNN+tmJ+iP6Ck/czwZI0Hxz3oNvUyGkVruxJwgwA=", + "lastModified": 1731959031, + "narHash": "sha256-TGcvIjftziC1CjuiHCzrYDwmOoSFYIhdiKmLetzB5L0=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "3b00e96f90cb0040de6d88ad99bf5f4d443f0c59", + "rev": "4468981c1c50999f315baa1508f0e53c4ee70c52", "type": "github" }, "original": { @@ -38,11 +38,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1708890466, - "narHash": "sha256-LlrC09LoPi8OPYOGPXegD72v+//VapgAqhbOFS3i8sc=", + "lastModified": 1732200724, + "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "665b3c6748534eb766c777298721cece9453fdae", + "rev": "153d52373b0fb2d343592871009a286ec8837aec", "type": "github" }, "original": { @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1731599190, - "narHash": "sha256-yatAfGU1EkcVFPhm/F0qiBmR4go7BWn0NFbT7505yMk=", + "lastModified": 1732052407, + "narHash": "sha256-DFT9j7SZeqUC3p4VfixcBJngXTXO9xkgweS2ICL+uKA=", "owner": "StevenBlack", "repo": "hosts", - "rev": "77186ce2572f82d5569cbd99f0744fe80cc0ecf0", + "rev": "eb2d3ba350c6712771615ad498be21c5ee2854cf", "type": "github" }, "original": { @@ -171,11 +171,11 @@ "fromYaml": { "flake": false, "locked": { - "lastModified": 1689549921, - "narHash": "sha256-iX0pk/uB019TdBGlaJEWvBCfydT6sRq+eDcGPifVsCM=", + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", "owner": "SenchoPens", "repo": "fromYaml", - "rev": "11fbbbfb32e3289d3c631e0134a23854e7865c84", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", "type": "github" }, "original": { @@ -231,11 +231,11 @@ ] }, "locked": { - "lastModified": 1724435763, - "narHash": "sha256-UNky3lJNGQtUEXT2OY8gMxejakSWPTfWKvpFkpFlAfM=", + "lastModified": 1730837930, + "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=", "owner": "nix-community", "repo": "home-manager", - "rev": "c2cd2a52e02f1dfa1c88f95abeb89298d46023be", + "rev": "2f607e07f3ac7e53541120536708e824acccfaa8", "type": "github" }, "original": { @@ -272,11 +272,11 @@ ] }, "locked": { - "lastModified": 1731604581, - "narHash": "sha256-Qq2YZZaDTB3FZLWU/Hgh1uuWlUBl3cMLGB99bm7rFUM=", + "lastModified": 1732303962, + "narHash": "sha256-5Umjb5AdtxV5jSJd5jxoCckh5mlg+FBQDsyAilu637g=", "owner": "nix-community", "repo": "home-manager", - "rev": "1d0862ee2d7c6f6cd720d6f32213fa425004be10", + "rev": "8cf9cb2ee78aa129e5b8220135a511a2be254c0c", "type": "github" }, "original": { @@ -494,6 +494,7 @@ "locked": { "lastModified": 1725203994, "narHash": "sha256-N7Kfq8tpOWjtRKBnH5RqcDtQFGZPZ5vXgmxbnZVPCuU=", + "ref": "refs/heads/main", "rev": "73b0fc26c0e2f6f82f9d9f5b02e660a958902763", "revCount": 248, "type": "git", @@ -636,11 +637,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1731319897, - "narHash": "sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY+/Z96ZcLpooIbuEI=", + "lastModified": 1732014248, + "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dc460ec76cbff0e66e269457d7b728432263166c", + "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", "type": "github" }, "original": { @@ -699,11 +700,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1731652201, - "narHash": "sha256-XUO0JKP1hlww0d7mm3kpmIr4hhtR4zicg5Wwes9cPMg=", + "lastModified": 1731797254, + "narHash": "sha256-df3dJApLPhd11AlueuoN0Q4fHo/hagP75LlM5K1sz9g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c21b77913ea840f8bcf9adf4c41cecc2abffd38d", + "rev": "e8c38b73aeb218e27163376a2d617e61a2ad9b59", "type": "github" }, "original": { @@ -844,11 +845,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1731724228, - "narHash": "sha256-3R48B+BVeZ8IWsXF7TdRm441RsdJt21yQ5ZgxuNTXYc=", + "lastModified": 1732242723, + "narHash": "sha256-NWI8csIK0ujFlFuEXKnoc+7hWoCiEtINK9r48LUUMeU=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f6c4c2a7b8969c2b172847b3ef474e0d3bd8bdce", + "rev": "a229311fcb45b88a95fdfa5cecd8349c809a272a", "type": "github" }, "original": { @@ -890,11 +891,11 @@ "tinted-tmux": "tinted-tmux" }, "locked": { - "lastModified": 1731657386, - "narHash": "sha256-Mm/JL8tFUS1SOmmZDPcswExUxzw0VpHcEyZI1h58CGA=", + "lastModified": 1732261424, + "narHash": "sha256-8uTKUHkaU980J5kRnLYrdwmjZYB88eBGUk1oVgIUHFE=", "owner": "danth", "repo": "stylix", - "rev": "5ab1207b2fdeb5a022f2dd7cccf6be760f1b150f", + "rev": "b667a340730dd3d0596083aa7c949eef01367c62", "type": "github" }, "original": { diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 7305ee4..fbb3879 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -38,7 +38,7 @@ # Office nextcloud-client - libreoffice-fresh + (pkgs-stable.libreoffice-fresh) mate.atril openboard xournalpp diff --git a/user/shell/cli-collection.nix b/user/shell/cli-collection.nix index f753928..1934fd5 100644 --- a/user/shell/cli-collection.nix +++ b/user/shell/cli-collection.nix @@ -5,7 +5,6 @@ # Command Line disfetch lolcat cowsay starfetch - cava killall libnotify timer From 966f9587d7728c4841730d01de54f8a4912ebcbd Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 27 Nov 2024 18:03:38 -0600 Subject: [PATCH 013/317] Some touch navigation for qutebrowser --- user/app/browser/qutebrowser.nix | 45 +++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/user/app/browser/qutebrowser.nix b/user/app/browser/qutebrowser.nix index 7e79a8e..d42cfcb 100644 --- a/user/app/browser/qutebrowser.nix +++ b/user/app/browser/qutebrowser.nix @@ -13,7 +13,7 @@ let generateHomepage = name: font: config: } /*paragraphs*/ - p { + a, p { font-family:''+font+''; font-size:24px; @@ -23,27 +23,47 @@ let generateHomepage = name: font: config: line-height: 1.35; margin-top: 0; margin-bottom: 0; + + text-decoration: none; + } + a:hover { + color: #''+config.lib.stylix.colors.base07+''; } .open { color: #''+config.lib.stylix.colors.base09+''; font-weight: bold; } + .open:hover { + background-color: #''+config.lib.stylix.colors.base09+''; + } .quickmarks { color: #''+config.lib.stylix.colors.base0A+''; font-weight: bold; } + .quickmarks:hover { + background-color: #''+config.lib.stylix.colors.base0A+''; + } .history { color: #''+config.lib.stylix.colors.base0B+''; font-weight: bold; } + .history:hover { + background-color: #''+config.lib.stylix.colors.base0B+''; + } .newtab { color: #''+config.lib.stylix.colors.base0C+''; font-weight: bold; } + .newtab:hover { + background-color: #''+config.lib.stylix.colors.base0C+''; + } .close { color: #''+config.lib.stylix.colors.base0D+''; font-weight: bold; } + .close:hover { + background-color: #''+config.lib.stylix.colors.base0D+''; + } /*div*/ div { @@ -76,11 +96,10 @@ let generateHomepage = name: font: config:

@@ -115,8 +134,20 @@ if (os.path.isfile(secretFile)): import qutesecrets secretsExists = True +quickmarksFile = os.path.join(os.path.dirname(__file__),'quickmarks') +quickmarksHtmlFilePath = os.path.join(os.path.dirname(__file__),'quickmarks.html') +quickmarksHtmlFile = open(quickmarksHtmlFilePath,"w") +quickmarksHtmlFileText = 'My Local Dashboard Awesome Homepage



Quickmarks


' +quickmarksHtmlFile.write(quickmarksHtmlFileText) +quickmarksHtmlFile.close() + config.set('scrolling.smooth',True) -config.set('qt.args',['ignore-gpu-blacklist','enable-gpu-rasterization','enable-accelerated-video-decode','enable-quic','enable-zero-copy','enable-native-gpu-memory-buffers','num-raster-threads=4']) +config.set('qt.args',['ignore-gpu-blacklist','enable-gpu-rasterization','enable-accelerated-video-decode','enable-quic','enable-zero-copy','enable-native-gpu-memory-buffers','num-raster-threads=4','allow-file-access-from-files']) config.set('qt.workarounds.disable_accelerated_2d_canvas','never') config.load_autoconfig(True) From 6f534227171b2a7bc5bf24aa7a33c7eb3077b1b5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 27 Nov 2024 18:04:03 -0600 Subject: [PATCH 014/317] Trying to fix some wine apps :| --- profiles/work/home.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiles/work/home.nix b/profiles/work/home.nix index fbb3879..644477c 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -59,7 +59,7 @@ openai-whisper-cpp - wine + wine64 bottles # The following requires 64-bit FL Studio (FL64) to be installed to a bottle # With a bottle name of "FL Studio" From de490f478dc4004c951aba73308167ffc7f3d3a8 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 28 Nov 2024 19:09:05 -0600 Subject: [PATCH 015/317] Fixed some popup windows on hyprland --- user/wm/hyprland/hyprland.nix | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index b4b05b3..34aeb85 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -278,15 +278,22 @@ in windowrulev2 = float,class:^(pokefinder)$ windowrulev2 = float,class:^(Waydroid)$ - windowrulev2 = float,title:^(Blender Render)$ - windowrulev2 = size 86% 85%,title:^(Blender Render)$ - windowrulev2 = center,title:^(Blender Render)$ + windowrulev2 = float,title:(Blender Render) + windowrulev2 = size 86% 85%,title:(Blender Render) + windowrulev2 = center,title:(Blender Render) windowrulev2 = float,class:^(org.inkscape.Inkscape)$ windowrulev2 = float,class:^(pinta)$ windowrulev2 = float,class:^(krita)$ windowrulev2 = float,class:^(Gimp) windowrulev2 = float,class:^(Gimp) windowrulev2 = float,class:^(libresprite)$ + windowrulev2 = float,title:(Open Images) + windowrulev2 = size 86% 85%,title:(Open Images) + windowrulev2 = center,title:(Open Images) + windowrulev2 = float,title:(Create new document) + windowrulev2 = size 86% 85%,title:(Create new document) + windowrulev2 = center,title:(Create new document) + windowrulev2 = tile,title:(Godot) windowrulev2 = opacity 0.80,title:ORUI From 9637ddbb8c77713c846c18180a883334a8bd23a2 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 28 Nov 2024 19:16:18 -0600 Subject: [PATCH 016/317] Fix nix cache permission errors? --- sync-user.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/sync-user.sh b/sync-user.sh index 803e8c5..83c71d3 100755 --- a/sync-user.sh +++ b/sync-user.sh @@ -6,9 +6,6 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -# Fix root-owned sqlite errors -sudo chown -R 1000:users ~/.cache/nix; - # Install and build home-manager configuration home-manager switch --flake $SCRIPT_DIR#user; From 0dbe54612263a896318fee1a7c6bfe81cc65c85d Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 28 Nov 2024 20:11:59 -0600 Subject: [PATCH 017/317] Starting a vanilla emacs config --- flake.lock | 44 ++++++++++++++-- flake.nix | 9 +++- profiles/work/home.nix | 1 + user/app/emacs/default.nix | 26 ++++++++++ user/app/emacs/init.el | 100 +++++++++++++++++++++++++++++++++++++ 5 files changed, 176 insertions(+), 4 deletions(-) create mode 100644 user/app/emacs/default.nix create mode 100644 user/app/emacs/init.el diff --git a/flake.lock b/flake.lock index f28c382..20ef6ee 100644 --- a/flake.lock +++ b/flake.lock @@ -115,6 +115,27 @@ "type": "github" } }, + "emacs-overlay": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1732759838, + "narHash": "sha256-bBghlNpHztnrUb1o7BAinp+rrWZMpaVNPrxnefhk1LY=", + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "f704f6f113bef121c7e38f807e3397f7dbe1aee0", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "emacs-overlay", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -683,6 +704,22 @@ } }, "nixpkgs-stable": { + "locked": { + "lastModified": 1732632634, + "narHash": "sha256-+G7n/ZD635aN0sEXQLynU7pWMd3PKDM7yBIXvYmjABQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6f6076c37180ea3a916f84928cf3a714c5207a30", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { "locked": { "lastModified": 1730741070, "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", @@ -698,7 +735,7 @@ "type": "github" } }, - "nixpkgs-stable_2": { + "nixpkgs-stable_3": { "locked": { "lastModified": 1731797254, "narHash": "sha256-df3dJApLPhd11AlueuoN0Q4fHo/hagP75LlM5K1sz9g=", @@ -807,7 +844,7 @@ "hyprland", "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable" + "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { "lastModified": 1731363552, @@ -826,6 +863,7 @@ "root": { "inputs": { "blocklist-hosts": "blocklist-hosts", + "emacs-overlay": "emacs-overlay", "home-manager-stable": "home-manager-stable", "home-manager-unstable": "home-manager-unstable", "hyprgrass": "hyprgrass", @@ -834,7 +872,7 @@ "hyprlock": "hyprlock", "nix-on-droid": "nix-on-droid", "nixpkgs": "nixpkgs", - "nixpkgs-stable": "nixpkgs-stable_2", + "nixpkgs-stable": "nixpkgs-stable_3", "nvchad": "nvchad", "rust-overlay": "rust-overlay", "stylix": "stylix" diff --git a/flake.nix b/flake.nix index f69a80f..041911c 100644 --- a/flake.nix +++ b/flake.nix @@ -72,7 +72,9 @@ allowUnfree = true; allowUnfreePredicate = (_: true); }; - overlays = [ inputs.rust-overlay.overlays.default ]; + overlays = [ inputs.rust-overlay.overlays.default + inputs.emacs-overlay.overlays.default + ]; })); pkgs-stable = import inputs.nixpkgs-stable { @@ -232,6 +234,11 @@ stylix.url = "github:danth/stylix"; + emacs-overlay = { + url = "github:nix-community/emacs-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + rust-overlay.url = "github:oxalica/rust-overlay"; blocklist-hosts = { diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 644477c..e36af41 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -13,6 +13,7 @@ ../../user/shell/sh.nix # My zsh and bash config ../../user/shell/cli-collection.nix # Useful CLI apps ../../user/app/nvim/nvim.nix # My doom emacs config + ../../user/app/emacs # Emacs config that I'm currently rebuilding ../../user/app/ranger/ranger.nix # My ranger file manager config ../../user/app/git/git.nix # My git config ../../user/app/keepass/keepass.nix # My password manager diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix new file mode 100644 index 0000000..c510c01 --- /dev/null +++ b/user/app/emacs/default.nix @@ -0,0 +1,26 @@ +{ config, pkgs, ... }: +{ + home.packages = [ + (pkgs.emacsWithPackagesFromUsePackage { + config = ./init.el; + package = pkgs.emacs-pgtk; + alwaysEnsure = true; + extraEmacsPackages = epkgs: with epkgs; [ + command-log-mode + vertico hotfuzz + evil evil-collection evil-snipe evil-owl evil-vimish-fold + doom-modeline + nerd-icons nerd-icons-dired nerd-icons-corfu + nerd-icons-ibuffer nerd-icons-completion + yasnippet + projectile treemacs + magit magit-file-icons + vterm + gdscript-mode + nix-mode + python python-mode + ]; + }) + ]; + home.file.".config/emacs/init.el".source = ./init.el; +} diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el new file mode 100644 index 0000000..29143f2 --- /dev/null +++ b/user/app/emacs/init.el @@ -0,0 +1,100 @@ +(set-face-attribute 'default nil :height 150) ; Bigger text +(set-face-attribute 'default nil :family "Intel One Mono") ; Font +(setq inhibit-startup-message t) + +(scroll-bar-mode -1) ; Disable visible scrollbar +(tool-bar-mode -1) ; Disable the toolbar +(tooltip-mode -1) ; Disable tooltips +(set-fringe-mode 10) ; Give some breathing room + +(menu-bar-mode -1) ; Disable the menu bar + +(load-theme 'wombat) + +(set-frame-parameter nil 'alpha-background 85) +(add-to-list 'default-frame-alist '(alpha-background . 85)) + +;; Make ESC quit prompts +(global-set-key (kbd "") 'keyboard-escape-quit) + +(setq scroll-preserve-screen-position t) +(setq scroll-conservatively 101) + +(require 'use-package) +(setq use-package-always-ensure t) + +(use-package command-log-mode) + +;; Enable vertico +(use-package vertico + :custom + (vertico-scroll-margin 0) ;; Different scroll margin + (vertico-count 20) ;; Show more candidates + (vertico-resize nil) ;; Grow and shrink the Vertico minibuffer + (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' + :init + (vertico-mode)) + +(use-package hotfuzz + :config + (setq completion-styles '(flex hotfuzz))) + +;; Enable vim +(use-package evil + :config + (evil-set-leader nil (kbd "C-SPC")) + (evil-set-leader 'normal (kbd "SPC")) + (evil-set-leader 'motion (kbd "SPC")) + (evil-mode 1)) + +(use-package evil-collection + :init + (setq evil-want-keybinding nil) + (evil-collection-init)) + +(evil-define-key 'normal 'global (kbd ".") 'find-file) +(evil-define-key 'normal 'global (kbd "bi") 'ibuffer) +(evil-define-key 'normal 'global (kbd "bn") 'next-buffer) +(evil-define-key 'normal 'global (kbd "bp") 'previous-buffer) +(evil-define-key 'normal 'global (kbd "pp") 'projectile-switch-project) +(evil-define-key 'normal 'global (kbd "pf") 'projectile-find-file) +(evil-define-key 'normal 'global (kbd "pa") 'projectile-add-known-project) +(evil-define-key 'normal 'global (kbd "gg") 'magit-status) +(evil-define-key 'normal 'global (kbd "hv") 'describe-variable) +(evil-define-key 'normal 'global (kbd "hf") 'describe-function) +(evil-define-key 'normal 'global (kbd "hk") 'describe-key) +(evil-define-key 'normal 'global (kbd "hF") 'describe-face) +(evil-define-key 'normal 'global (kbd "ws") 'evil-window-split) +(evil-define-key 'normal 'global (kbd "wv") 'evil-window-vsplit) +(evil-define-key 'normal 'global (kbd "wd") 'evil-window-delete) +(evil-define-key 'normal 'global (kbd "wj") 'evil-window-down) +(evil-define-key 'normal 'global (kbd "wk") 'evil-window-up) +(evil-define-key 'normal 'global (kbd "wh") 'evil-window-left) +(evil-define-key 'normal 'global (kbd "wl") 'evil-window-right) + +(global-set-key (kbd "C-j") 'evil-window-down) +(global-set-key (kbd "C-k") 'evil-window-up) +(global-set-key (kbd "C-h") 'evil-window-left) +(global-set-key (kbd "C-l") 'evil-window-right) + +(setq magit-bury-buffer-function 'magit-restore-window-configuration) +(setq magit-display-buffer-function + (lambda (buffer) + (display-buffer + buffer (if (and (derived-mode-p 'magit-mode) + (memq (with-current-buffer buffer major-mode) + '(magit-process-mode + magit-revision-mode + magit-diff-mode + magit-stash-mode + magit-status-mode))) + nil + '(display-buffer-same-window))))) + +(use-package nerd-icons + :ensure t) + +(use-package doom-modeline + :ensure t + :init (doom-modeline-mode 1) + :custom ((doom-modeline-height 15))) From 874386138d05041c6456484e4f62f5ad6b3693b3 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 30 Nov 2024 19:07:28 -0600 Subject: [PATCH 018/317] Some more emacs config --- flake.nix | 2 +- user/app/emacs/default.nix | 4 ++-- user/app/emacs/init.el | 20 +++++++++++++++++--- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/flake.nix b/flake.nix index 041911c..bdb0816 100644 --- a/flake.nix +++ b/flake.nix @@ -32,7 +32,7 @@ term = "alacritty"; # Default terminal command; font = "Intel One Mono"; # Selected font fontPkg = pkgs.intel-one-mono; # Font package - editor = "neovide"; # Default editor; + editor = "emacsclient"; # Default editor; # editor spawning translator # generates a command that can be used to spawn editor inside a gui # EDITOR and TERM session variables must be set in home.nix or other module diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index c510c01..6c4b832 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -7,9 +7,9 @@ alwaysEnsure = true; extraEmacsPackages = epkgs: with epkgs; [ command-log-mode - vertico hotfuzz + vertico corfu hotfuzz orderless evil evil-collection evil-snipe evil-owl evil-vimish-fold - doom-modeline + dashboard doom-modeline nerd-icons nerd-icons-dired nerd-icons-corfu nerd-icons-ibuffer nerd-icons-completion yasnippet diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 29143f2..04ffb91 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -35,12 +35,25 @@ :init (vertico-mode)) -(use-package hotfuzz - :config - (setq completion-styles '(flex hotfuzz))) +;; Completion +(use-package hotfuzz) +(use-package orderless) +(setq completion-styles '(orderless flex hotfuzz)) + +;; Magit +(use-package magit) + +;; Projectile +(use-package projectile + :init + (projectile-mode +1)) ;; Enable vim +(setq evil-want-keybinding nil) + (use-package evil + :init + (setq evil-want-keybinding nil) :config (evil-set-leader nil (kbd "C-SPC")) (evil-set-leader 'normal (kbd "SPC")) @@ -50,6 +63,7 @@ (use-package evil-collection :init (setq evil-want-keybinding nil) + :config (evil-collection-init)) (evil-define-key 'normal 'global (kbd ".") 'find-file) From dad9e68dad62bb0c228b41218d226be76407f08c Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 30 Nov 2024 23:34:36 -0600 Subject: [PATCH 019/317] Updated system --- flake.lock | 92 +++++++++++++++++------------------ flake.nix | 2 +- profiles/work/home.nix | 12 ++--- user/app/games/games.nix | 4 +- user/wm/hyprland/hyprland.nix | 22 +-------- 5 files changed, 56 insertions(+), 76 deletions(-) diff --git a/flake.lock b/flake.lock index 20ef6ee..a098e12 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1731959031, - "narHash": "sha256-TGcvIjftziC1CjuiHCzrYDwmOoSFYIhdiKmLetzB5L0=", + "lastModified": 1731496216, + "narHash": "sha256-nlQrNN+tmJ+iP6Ck/czwZI0Hxz3oNvUyGkVruxJwgwA=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "4468981c1c50999f315baa1508f0e53c4ee70c52", + "rev": "3b00e96f90cb0040de6d88ad99bf5f4d443f0c59", "type": "github" }, "original": { @@ -86,11 +86,11 @@ "base16-vim": { "flake": false, "locked": { - "lastModified": 1716150083, - "narHash": "sha256-ZMhnNmw34ogE5rJZrjRv5MtG3WaqKd60ds2VXvT6hEc=", + "lastModified": 1731949548, + "narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=", "owner": "tinted-theming", "repo": "base16-vim", - "rev": "6e955d704d046b0dc3e5c2d68a2a6eeffd2b5d3d", + "rev": "61165b1632409bd55e530f3dbdd4477f011cadc6", "type": "github" }, "original": { @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1732052407, - "narHash": "sha256-DFT9j7SZeqUC3p4VfixcBJngXTXO9xkgweS2ICL+uKA=", + "lastModified": 1732830716, + "narHash": "sha256-m0OjiN6c6zHg4bqoQIhS4tFAeT8dhrVHBd4NB9sE21o=", "owner": "StevenBlack", "repo": "hosts", - "rev": "eb2d3ba350c6712771615ad498be21c5ee2854cf", + "rev": "287c6ea90faf977dd3fded2cf1042542f1d5238c", "type": "github" }, "original": { @@ -123,11 +123,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1732759838, - "narHash": "sha256-bBghlNpHztnrUb1o7BAinp+rrWZMpaVNPrxnefhk1LY=", + "lastModified": 1732986626, + "narHash": "sha256-mm0VxNLhlcfX4to/Lv2tDPYWnQ+Py13Hq3cHc+RT9YI=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "f704f6f113bef121c7e38f807e3397f7dbe1aee0", + "rev": "d902534f27fea8439422e55c435d4b4bbf8a2472", "type": "github" }, "original": { @@ -155,11 +155,11 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "owner": "edolstra", "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "type": "github" }, "original": { @@ -176,11 +176,11 @@ ] }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -252,11 +252,11 @@ ] }, "locked": { - "lastModified": 1730837930, - "narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=", + "lastModified": 1732482255, + "narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f607e07f3ac7e53541120536708e824acccfaa8", + "rev": "a9953635d7f34e7358d5189751110f87e3ac17da", "type": "github" }, "original": { @@ -293,11 +293,11 @@ ] }, "locked": { - "lastModified": 1732303962, - "narHash": "sha256-5Umjb5AdtxV5jSJd5jxoCckh5mlg+FBQDsyAilu637g=", + "lastModified": 1732884235, + "narHash": "sha256-r8j6R3nrvwbT1aUp4EPQ1KC7gm0pu9VcV1aNaB+XG6Q=", "owner": "nix-community", "repo": "home-manager", - "rev": "8cf9cb2ee78aa129e5b8220135a511a2be254c0c", + "rev": "819f682269f4e002884702b87e445c82840c68f2", "type": "github" }, "original": { @@ -658,11 +658,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732014248, - "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", + "lastModified": 1732837521, + "narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", + "rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370", "type": "github" }, "original": { @@ -705,11 +705,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1732632634, - "narHash": "sha256-+G7n/ZD635aN0sEXQLynU7pWMd3PKDM7yBIXvYmjABQ=", + "lastModified": 1732749044, + "narHash": "sha256-T38FQOg0BV5M8FN1712fovzNakSOENEYs+CSkg31C9Y=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6f6076c37180ea3a916f84928cf3a714c5207a30", + "rev": "0c5b4ecbed5b155b705336aa96d878e55acd8685", "type": "github" }, "original": { @@ -737,16 +737,16 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1731797254, - "narHash": "sha256-df3dJApLPhd11AlueuoN0Q4fHo/hagP75LlM5K1sz9g=", + "lastModified": 1732824227, + "narHash": "sha256-fYNXgpu1AEeLyd3fQt4Ym0tcVP7cdJ8wRoqJ+CtTRyY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e8c38b73aeb218e27163376a2d617e61a2ad9b59", + "rev": "c71ad5c34d51dcbda4c15f44ea4e4aa6bb6ac1e9", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-24.05", + "ref": "nixos-24.11", "type": "indirect" } }, @@ -768,11 +768,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1731531548, - "narHash": "sha256-sz8/v17enkYmfpgeeuyzniGJU0QQBfmAjlemAUYhfy8=", + "lastModified": 1732238832, + "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "24f0d4acd634792badd6470134c387a3b039dace", + "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d", "type": "github" }, "original": { @@ -883,11 +883,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1732242723, - "narHash": "sha256-NWI8csIK0ujFlFuEXKnoc+7hWoCiEtINK9r48LUUMeU=", + "lastModified": 1732933841, + "narHash": "sha256-dge02pUSe2QeC/B3PriA0R8eAX+EU3aDoXj9FcS3XDw=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "a229311fcb45b88a95fdfa5cecd8349c809a272a", + "rev": "c65e91d4a33abc3bc4a892d3c5b5b378bad64ea1", "type": "github" }, "original": { @@ -929,11 +929,11 @@ "tinted-tmux": "tinted-tmux" }, "locked": { - "lastModified": 1732261424, - "narHash": "sha256-8uTKUHkaU980J5kRnLYrdwmjZYB88eBGUk1oVgIUHFE=", + "lastModified": 1732993760, + "narHash": "sha256-t1J6wgzGjvvGNfdd0ei8HnZf9sTw+SpvCNAX0i6Qgwc=", "owner": "danth", "repo": "stylix", - "rev": "b667a340730dd3d0596083aa7c949eef01367c62", + "rev": "d13ffb381c83b6139b9d67feff7addf18f8408fe", "type": "github" }, "original": { @@ -1024,11 +1024,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1696725902, - "narHash": "sha256-wDPg5elZPcQpu7Df0lI5O8Jv4A3T6jUQIVg63KDU+3Q=", + "lastModified": 1729501581, + "narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "c02050bebb60dbb20cb433cd4d8ce668ecc11ba7", + "rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index bdb0816..d7e8036 100644 --- a/flake.nix +++ b/flake.nix @@ -191,7 +191,7 @@ inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; - nixpkgs-stable.url = "nixpkgs/nixos-24.05"; + nixpkgs-stable.url = "nixpkgs/nixos-24.11"; home-manager-unstable.url = "github:nix-community/home-manager/master"; home-manager-unstable.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/profiles/work/home.nix b/profiles/work/home.nix index e36af41..cad4b4b 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -43,15 +43,15 @@ mate.atril openboard xournalpp - gnome.adwaita-icon-theme + adwaita-icon-theme shared-mime-info glib newsflash foliate - gnome.nautilus - gnome.gnome-calendar - gnome.seahorse - gnome.gnome-maps + nautilus + gnome-calendar + seahorse + gnome-maps openvpn protonmail-bridge texliveSmall @@ -167,7 +167,7 @@ mediainfo libmediainfo audio-recorder - gnome.cheese + cheese ardour rosegarden tenacity diff --git a/user/app/games/games.nix b/user/app/games/games.nix index e512bd0..e37d004 100644 --- a/user/app/games/games.nix +++ b/user/app/games/games.nix @@ -1,8 +1,8 @@ { pkgs, pkgs-stable, ... }: let myRetroarch = - (pkgs.retroarch.override { - cores = with pkgs.libretro; [ + (pkgs-stable.retroarch.override { + cores = with pkgs-stable.libretro; [ vba-m (desmume.overrideAttrs (oldAttrs: { preConfigure = '' diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 34aeb85..8f64488 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -422,27 +422,7 @@ in noDisplay = true; icon = "/home/"+userSettings.username+"/.local/share/pixmaps/hyprland-logo-stylix.svg"; }) - (hyprnome.override (oldAttrs: { - rustPlatform = oldAttrs.rustPlatform // { - buildRustPackage = args: oldAttrs.rustPlatform.buildRustPackage (args // { - pname = "hyprnome"; - version = "0.3.1"; - src = fetchFromGitHub { - owner = "donovanglover"; - repo = "hyprnome"; - rev = "a4597387e777fde8f8a79090cce418843e5b85d1"; - hash = "sha256-GZn7qS1J6QSanWdy17sMBbwJ77iMij2jKRgPdrjt6tM="; - }; - cargoDeps = oldAttrs.cargoDeps.overrideAttrs (oldAttrs: rec { - name = "${pname}-vendor.tar.gz"; - inherit src; - outputHash = "sha256-oxIZTp5ZJRUjXLpMw2nOnPHYHhHN03HWFRhBZ82Ac10="; - }); - cargoHash = "sha256-oxIZTp5ZJRUjXLpMw2nOnPHYHhHN03HWFRhBZ82Ac10="; - }); - }; - }) - ) + hyprnome wlr-randr wtype ydotool From 47ca13829b7a68ca574ff505a9a28f81f18211ae Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 30 Nov 2024 23:38:59 -0600 Subject: [PATCH 020/317] Magit fixes + some style changes --- user/app/emacs/init.el | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 04ffb91..cda734c 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -1,3 +1,4 @@ +; Text (set-face-attribute 'default nil :height 150) ; Bigger text (set-face-attribute 'default nil :family "Intel One Mono") ; Font (setq inhibit-startup-message t) @@ -6,6 +7,8 @@ (tool-bar-mode -1) ; Disable the toolbar (tooltip-mode -1) ; Disable tooltips (set-fringe-mode 10) ; Give some breathing room +(blink-cursor-mode 0) ; No blinking +(global-hl-line-mode) ; Where am I? (menu-bar-mode -1) ; Disable the menu bar @@ -91,19 +94,9 @@ (global-set-key (kbd "C-h") 'evil-window-left) (global-set-key (kbd "C-l") 'evil-window-right) +(setq magit-display-buffer-function 'magit-display-buffer-fullframe-status-v1) (setq magit-bury-buffer-function 'magit-restore-window-configuration) -(setq magit-display-buffer-function - (lambda (buffer) - (display-buffer - buffer (if (and (derived-mode-p 'magit-mode) - (memq (with-current-buffer buffer major-mode) - '(magit-process-mode - magit-revision-mode - magit-diff-mode - magit-stash-mode - magit-status-mode))) - nil - '(display-buffer-same-window))))) +(add-hook 'git-commit-mode-hook 'evil-insert-state) (use-package nerd-icons :ensure t) From a5d7529c2f312ca68d849541db2234c3aa488796 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 30 Nov 2024 23:46:04 -0600 Subject: [PATCH 021/317] Should hopefully improve build times --- profiles/work/configuration.nix | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/profiles/work/configuration.nix b/profiles/work/configuration.nix index f075b88..8182c02 100644 --- a/profiles/work/configuration.nix +++ b/profiles/work/configuration.nix @@ -37,6 +37,23 @@ nix.extraOptions = '' experimental-features = nix-command flakes ''; + + # Substituters + nix.settings = { + substituters = [ + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; + trusted-substituters = [ + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; + trusted-public-keys = [ + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + }; + nixpkgs.overlays = [ ( final: prev: { From 22590257d1c5548d44f5ce508b89f088a16cf395 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 1 Dec 2024 07:15:13 -0600 Subject: [PATCH 022/317] Added sudo-edit --- user/app/emacs/default.nix | 2 +- user/app/emacs/init.el | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 6c4b832..440f4e3 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -15,7 +15,7 @@ yasnippet projectile treemacs magit magit-file-icons - vterm + vterm sudo-edit gdscript-mode nix-mode python python-mode diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index cda734c..71e4eef 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -1,3 +1,6 @@ +; I want declarative config +(setq custom-file "/dev/null") + ; Text (set-face-attribute 'default nil :height 150) ; Bigger text (set-face-attribute 'default nil :family "Intel One Mono") ; Font @@ -71,6 +74,7 @@ (evil-define-key 'normal 'global (kbd ".") 'find-file) (evil-define-key 'normal 'global (kbd "bi") 'ibuffer) +(evil-define-key 'normal 'global (kbd "bd") 'delete-buffer) (evil-define-key 'normal 'global (kbd "bn") 'next-buffer) (evil-define-key 'normal 'global (kbd "bp") 'previous-buffer) (evil-define-key 'normal 'global (kbd "pp") 'projectile-switch-project) @@ -105,3 +109,14 @@ :ensure t :init (doom-modeline-mode 1) :custom ((doom-modeline-height 15))) + +; Fix stupid backup confirmations +(setq backup-directory-alist '("." "~/.emacs.d/cache/backups")) +(setq tramp-auto-save-directory "/dev/null") + +(require 'sudo-edit) +(setq sudo-edit-local-method "doas") +(setq auth-source-save-behavior nil) + +(evil-define-key 'normal 'global (kbd "fU") 'sudo-edit) +(evil-define-key 'normal 'global (kbd "fu") 'sudo-edit-find-file) From df1f12a8963534fc759b27f8a0620481dcac5fa1 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 1 Dec 2024 18:06:02 -0600 Subject: [PATCH 023/317] Ricing emacs a bit --- user/app/emacs/default.nix | 6 +- user/app/emacs/doom-stylix-theme.el.mustache | 177 +++++++++++++++++++ user/app/emacs/init.el | 71 +++++++- 3 files changed, 245 insertions(+), 9 deletions(-) create mode 100644 user/app/emacs/doom-stylix-theme.el.mustache diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 440f4e3..f02563b 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -9,7 +9,7 @@ command-log-mode vertico corfu hotfuzz orderless evil evil-collection evil-snipe evil-owl evil-vimish-fold - dashboard doom-modeline + dashboard doom-themes doom-modeline nerd-icons nerd-icons-dired nerd-icons-corfu nerd-icons-ibuffer nerd-icons-completion yasnippet @@ -23,4 +23,8 @@ }) ]; home.file.".config/emacs/init.el".source = ./init.el; + home.file.".config/emacs/themes/doom-stylix-theme.el".source = config.lib.stylix.colors { + template = builtins.readFile ./doom-stylix-theme.el.mustache; + extension = ".el"; + }; } diff --git a/user/app/emacs/doom-stylix-theme.el.mustache b/user/app/emacs/doom-stylix-theme.el.mustache new file mode 100644 index 0000000..4ab05ca --- /dev/null +++ b/user/app/emacs/doom-stylix-theme.el.mustache @@ -0,0 +1,177 @@ +;;; doom-stylix-theme.el --- stylix template created from doom-one -*- lexical-binding: t; no-byte-compile: t; -*- +;; +;; Author: Emmet K +;; Maintainer: Emmet K +;; Source: https://github.com/doomemacs/themes +;; +;;; Commentary: +;; +;; Stylix template for Doom Emacs. +;; +;;; Code: + +(require 'doom-themes) + +;; +;;; Variables + +(defgroup doom-stylix-theme nil + "Options for the `doom-one' theme." + :group 'doom-themes) + +(defcustom doom-stylix-brighter-modeline nil + "If non-nil, more vivid colors will be used to style the mode-line." + :group 'doom-stylix-theme + :type 'boolean) + +(defcustom doom-stylix-brighter-comments nil + "If non-nil, comments will be highlighted in more vivid colors." + :group 'doom-stylix-theme + :type 'boolean) + +(defcustom doom-stylix-padded-modeline doom-themes-padded-modeline + "If non-nil, adds a 4px padding to the mode-line. +Can be an integer to determine the exact padding." + :group 'doom-stylix-theme + :type '(choice integer boolean)) + + +;; +;;; Theme definition + +(def-doom-theme doom-stylix + "A theme generated from current stylix theme." + + ;; name default 256 16 + ((bg '("#{{base00-hex}}" "black" "black" )) + (fg '("#{{base05-hex}}" "#bfbfbf" "brightwhite" )) + + ;; These are off-color variants of bg/fg, used primarily for `solaire-mode', + ;; but can also be useful as a basis for subtle highlights (e.g. for hl-line + ;; or region), especially when paired with the `doom-darken', `doom-lighten', + ;; and `doom-blend' helper functions. + (bg-alt '("#{{base01-hex}}" "black" "black" )) + (fg-alt '("#{{base07-hex}}" "#2d2d2d" "white" )) + + ;; These should represent a spectrum from bg to fg, where base0 is a starker + ;; bg and base8 is a starker fg. For example, if bg is light grey and fg is + ;; dark grey, base0 should be white and base8 should be black. + (base0 '("#{{base00-hex}}" "black" "black" )) + (base1 '("#{{base01-hex}}" "#1e1e1e" "brightblack" )) + (base2 '("#{{base01-hex}}" "#2e2e2e" "brightblack" )) + (base3 '("#{{base02-hex}}" "#262626" "brightblack" )) + (base4 '("#{{base03-hex}}" "#3f3f3f" "brightblack" )) + (base5 '("#{{base04-hex}}" "#525252" "brightblack" )) + (base6 '("#{{base05-hex}}" "#6b6b6b" "brightblack" )) + (base7 '("#{{base06-hex}}" "#979797" "brightblack" )) + (base8 '("#{{base07-hex}}" "#dfdfdf" "white" )) + + (grey base4) + (red '("#{{base08-hex}}" "#ff6655" "red" )) + (orange '("#{{base09-hex}}" "#dd8844" "brightred" )) + (green '("#{{base0B-hex}}" "#99bb66" "green" )) + (teal '("#{{base0C-hex}}" "#44b9b1" "brightgreen" )) + (yellow '("#{{base0A-hex}}" "#ECBE7B" "yellow" )) + (blue '("#{{base0E-hex}}" "#51afef" "brightblue" )) + (dark-blue '("#{{base0E-hex}}" "#2257A0" "blue" )) + (magenta '("#{{base0F-hex}}" "#c678dd" "brightmagenta")) + (violet '("#{{base0F-hex}}" "#a9a1e1" "magenta" )) + (cyan '("#{{base0D-hex}}" "#46D9FF" "brightcyan" )) + (dark-cyan '("#{{base0C-hex}}" "#5699AF" "cyan" )) + + ;; These are the "universal syntax classes" that doom-themes establishes. + ;; These *must* be included in every doom themes, or your theme will throw an + ;; error, as they are used in the base theme defined in doom-themes-base. + (highlight blue) + (vertical-bar (doom-darken base1 0.1)) + (selection dark-blue) + (builtin magenta) + (comments (if doom-stylix-brighter-comments dark-cyan base5)) + (doc-comments (doom-lighten (if doom-stylix-brighter-comments dark-cyan base5) 0.25)) + (constants violet) + (functions magenta) + (keywords blue) + (methods cyan) + (operators blue) + (type yellow) + (strings green) + (variables (doom-lighten magenta 0.4)) + (numbers orange) + (region `(,(doom-lighten (car bg-alt) 0.15) ,@(doom-lighten (cdr base1) 0.35))) + (error red) + (warning yellow) + (success green) + (vc-modified orange) + (vc-added green) + (vc-deleted red) + + ;; These are extra color variables used only in this theme; i.e. they aren't + ;; mandatory for derived themes. + (modeline-fg fg) + (modeline-fg-alt base5) + (modeline-bg (if doom-stylix-brighter-modeline + (doom-darken blue 0.45) + (doom-darken bg-alt 0.1))) + (modeline-bg-alt (if doom-stylix-brighter-modeline + (doom-darken blue 0.475) + `(,(doom-darken (car bg-alt) 0.15) ,@(cdr bg)))) + (modeline-bg-inactive `(,(car bg-alt) ,@(cdr base1))) + (modeline-bg-inactive-alt `(,(doom-darken (car bg-alt) 0.1) ,@(cdr bg))) + + (-modeline-pad + (when doom-stylix-padded-modeline + (if (integerp doom-stylix-padded-modeline) doom-stylix-padded-modeline 4)))) + + + ;;;; Base theme face overrides + (((line-number &override) :foreground base4) + ((line-number-current-line &override) :foreground fg) + ((font-lock-comment-face &override) + :background (if doom-stylix-brighter-comments (doom-lighten bg 0.05))) + (mode-line + :background modeline-bg :foreground modeline-fg + :box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg))) + (mode-line-inactive + :background modeline-bg-inactive :foreground modeline-fg-alt + :box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-inactive))) + (mode-line-emphasis :foreground (if doom-stylix-brighter-modeline base8 highlight)) + + ;;;; css-mode / scss-mode + (css-proprietary-property :foreground orange) + (css-property :foreground green) + (css-selector :foreground blue) + ;;;; doom-modeline + (doom-modeline-bar :background (if doom-stylix-brighter-modeline modeline-bg highlight)) + (doom-modeline-buffer-file :inherit 'mode-line-buffer-id :weight 'bold) + (doom-modeline-buffer-path :inherit 'mode-line-emphasis :weight 'bold) + (doom-modeline-buffer-project-root :foreground green :weight 'bold) + ;;;; elscreen + (elscreen-tab-other-screen-face :background "#{{base01-hex}}" :foreground "#{{base06-hex}}") + ;;;; ivy + (ivy-current-match :background dark-blue :distant-foreground base0 :weight 'normal) + ;;;; LaTeX-mode + (font-latex-math-face :foreground green) + ;;;; markdown-mode + (markdown-markup-face :foreground base5) + (markdown-header-face :inherit 'bold :foreground red) + ((markdown-code-face &override) :background (doom-lighten base3 0.05)) + ;;;; org-mode + (org-block :background (doom-darken bg 0.05 ) :extend t) + (org-code :background (doom-darken bg 0.05 ) :extend t) + ;;;; rjsx-mode + (rjsx-tag :foreground red) + (rjsx-attr :foreground orange) + ;;;; solaire-mode + (solaire-mode-line-face + :inherit 'mode-line + :background modeline-bg-alt + :box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-alt))) + (solaire-mode-line-inactive-face + :inherit 'mode-line-inactive + :background modeline-bg-inactive-alt + :box (if -modeline-pad `(:line-width ,-modeline-pad :color ,modeline-bg-inactive-alt)))) + + ;;;; Base theme variable overrides- + ()) + +;;; doom-stylix-theme.el ends here \ No newline at end of file diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 71e4eef..5e28555 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -1,4 +1,16 @@ -; I want declarative config +;;; init.el --- librephoenix's emacs config -*- lexical-binding: t; no-byte-compile: t; -*- +;; +;; Author: Emmet K +;; Maintainer: Emmet K +;; Source: https://github.com/doomemacs/themes +;; +;;; Commentary: +;; +;; LibrePhoenix's Emacs config. +;; +;;; Code: + +;I want declarative config (setq custom-file "/dev/null") ; Text @@ -12,11 +24,15 @@ (set-fringe-mode 10) ; Give some breathing room (blink-cursor-mode 0) ; No blinking (global-hl-line-mode) ; Where am I? +(pixel-scroll-precision-mode 1) ; This is kinda epic + +;; I prefer visual lines +(setq display-line-numbers-type 'visual + line-move-visual t) +(add-hook 'prog-mode-hook 'display-line-numbers-mode) (menu-bar-mode -1) ; Disable the menu bar -(load-theme 'wombat) - (set-frame-parameter nil 'alpha-background 85) (add-to-list 'default-frame-alist '(alpha-background . 85)) @@ -64,6 +80,7 @@ (evil-set-leader nil (kbd "C-SPC")) (evil-set-leader 'normal (kbd "SPC")) (evil-set-leader 'motion (kbd "SPC")) + (setq evil-respect-visual-line-mode t) (evil-mode 1)) (use-package evil-collection @@ -103,12 +120,41 @@ (add-hook 'git-commit-mode-hook 'evil-insert-state) (use-package nerd-icons - :ensure t) - -(use-package doom-modeline :ensure t - :init (doom-modeline-mode 1) - :custom ((doom-modeline-height 15))) + :config + (setq doom-themes-enable-bold t + doom-themes-enable-italic t) + (setq custom-theme-directory "~/.config/emacs/themes") + (load-theme 'doom-stylix t) + ) + +(use-package dashboard + :ensure t + :config + (setq dashboard-banner-logo-title "Welcome to Nix Emacs") + (setq dashboard-startup-banner 2) + (setq dashboard-set-heading-icons t) + (setq dashboard-set-file-icons t) + (setq dashboard-set-navigator t) + (setq dashboard-items '()) + (setq dashboard-center-content t) + (setq dashboard-icon-type 'nerd-icons) ;; use `nerd-icons' package + (setq dashboard-footer-messages '("Here to do customizing, or actual work?" + "M-x insert-inspiring-message" + "My software never has bugs. It just develops random features." + "Dad, what are clouds made of? Linux servers, mostly." + "There is no place like ~" + "~ sweet ~" + "sudo chown -R us ./allyourbase" + "I’ll tell you a DNS joke but it could take 24 hours for everyone to get it." + "I'd tell you a UDP joke, but you might not get it." + "I'll tell you a TCP joke. Do you want to hear it?")) + (setq dashboard-footer-icon + (nerd-icons-codicon "nf-cod-vm" + :height 1.0 + :v-adjust 0 + :face 'font-lock-keyword-face)) + (dashboard-setup-startup-hook)) ; Fix stupid backup confirmations (setq backup-directory-alist '("." "~/.emacs.d/cache/backups")) @@ -120,3 +166,12 @@ (evil-define-key 'normal 'global (kbd "fU") 'sudo-edit) (evil-define-key 'normal 'global (kbd "fu") 'sudo-edit-find-file) + +(use-package doom-themes + :ensure t + :init ) + +(use-package doom-modeline + :ensure t + :init (doom-modeline-mode 1) + :custom ((doom-modeline-height 15))) From bcec98812551d0d741d83a92d7611e194a72e42c Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 3 Dec 2024 14:53:35 -0600 Subject: [PATCH 024/317] Start scratchpads automatically --- user/wm/hyprland/hyprland.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 8f64488..8474937 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -202,6 +202,14 @@ in bind=SUPERSHIFT,8,movetoworkspace,8 bind=SUPERSHIFT,9,movetoworkspace,9 + exec-once = alacritty --class scratch_term + exec-once = kitty --class scratch_ranger -e ranger + exec-once = alacritty --class scratch_numbat -e numbat + exec-once = lollypop + exec-once = alacritty --class scratch_btm -e btm + exec-once = element-desktop + exec-once = pavucontrol + bind=SUPER,Z,exec,if hyprctl clients | grep scratch_term; then echo "scratch_term respawn not needed"; else alacritty --class scratch_term; fi bind=SUPER,Z,togglespecialworkspace,scratch_term bind=SUPER,F,exec,if hyprctl clients | grep scratch_ranger; then echo "scratch_ranger respawn not needed"; else kitty --class scratch_ranger -e ranger; fi From e1ec4d8c993bbfdeebf8b6183f16c2c08ed9e78b Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 3 Dec 2024 14:57:28 -0600 Subject: [PATCH 025/317] Some emacs fixes --- user/app/emacs/init.el | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 5e28555..bc99ead 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -10,14 +10,13 @@ ;; ;;; Code: -;I want declarative config -(setq custom-file "/dev/null") - ; Text -(set-face-attribute 'default nil :height 150) ; Bigger text -(set-face-attribute 'default nil :family "Intel One Mono") ; Font (setq inhibit-startup-message t) +; I want declarative config, no custom +(setq custom-file "/dev/null") + +; Some sane settings (scroll-bar-mode -1) ; Disable visible scrollbar (tool-bar-mode -1) ; Disable the toolbar (tooltip-mode -1) ; Disable tooltips @@ -154,7 +153,10 @@ :height 1.0 :v-adjust 0 :face 'font-lock-keyword-face)) - (dashboard-setup-startup-hook)) + (setq initial-buffer-choice (lambda () (get-buffer-create dashboard-buffer-name))) + (dashboard-setup-startup-hook) + (set-face-attribute 'default nil :height 150) ; Bigger text + (set-face-attribute 'default nil :family "Intel One Mono")) ; Fix stupid backup confirmations (setq backup-directory-alist '("." "~/.emacs.d/cache/backups")) From 5ba4deb614f18ce2dff1a902657514fa9a289e33 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 3 Dec 2024 22:09:58 -0600 Subject: [PATCH 026/317] Some more emacs config fixes and keybinds --- user/app/emacs/init.el | 81 ++++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 26 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index bc99ead..11de8c0 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -17,13 +17,14 @@ (setq custom-file "/dev/null") ; Some sane settings -(scroll-bar-mode -1) ; Disable visible scrollbar -(tool-bar-mode -1) ; Disable the toolbar -(tooltip-mode -1) ; Disable tooltips -(set-fringe-mode 10) ; Give some breathing room -(blink-cursor-mode 0) ; No blinking -(global-hl-line-mode) ; Where am I? +(scroll-bar-mode -1) ; Disable visible scrollbar +(tool-bar-mode -1) ; Disable the toolbar +(tooltip-mode -1) ; Disable tooltips +(set-fringe-mode 10) ; Give some breathing room +(blink-cursor-mode 0) ; No blinking +(global-hl-line-mode) ; Where am I? (pixel-scroll-precision-mode 1) ; This is kinda epic +(global-visual-line-mode 1) ; Visual lines make more sense ;; I prefer visual lines (setq display-line-numbers-type 'visual @@ -88,26 +89,54 @@ :config (evil-collection-init)) -(evil-define-key 'normal 'global (kbd ".") 'find-file) -(evil-define-key 'normal 'global (kbd "bi") 'ibuffer) -(evil-define-key 'normal 'global (kbd "bd") 'delete-buffer) -(evil-define-key 'normal 'global (kbd "bn") 'next-buffer) -(evil-define-key 'normal 'global (kbd "bp") 'previous-buffer) -(evil-define-key 'normal 'global (kbd "pp") 'projectile-switch-project) -(evil-define-key 'normal 'global (kbd "pf") 'projectile-find-file) -(evil-define-key 'normal 'global (kbd "pa") 'projectile-add-known-project) -(evil-define-key 'normal 'global (kbd "gg") 'magit-status) -(evil-define-key 'normal 'global (kbd "hv") 'describe-variable) -(evil-define-key 'normal 'global (kbd "hf") 'describe-function) -(evil-define-key 'normal 'global (kbd "hk") 'describe-key) -(evil-define-key 'normal 'global (kbd "hF") 'describe-face) -(evil-define-key 'normal 'global (kbd "ws") 'evil-window-split) -(evil-define-key 'normal 'global (kbd "wv") 'evil-window-vsplit) -(evil-define-key 'normal 'global (kbd "wd") 'evil-window-delete) -(evil-define-key 'normal 'global (kbd "wj") 'evil-window-down) -(evil-define-key 'normal 'global (kbd "wk") 'evil-window-up) -(evil-define-key 'normal 'global (kbd "wh") 'evil-window-left) -(evil-define-key 'normal 'global (kbd "wl") 'evil-window-right) +;; based on http://emacsredux.com/blog/2013/04/03/delete-file-and-buffer/ +(defun delete-file-and-buffer () + "Kill the current buffer and deletes the file it is visiting." + (interactive) + (let ((filename (buffer-file-name))) + (if filename + (if (y-or-n-p (concat "Do you really want to delete file " filename " ?")) + (progn + (delete-file filename) + (message "Deleted file %s." filename) + (kill-buffer))) + (message "Not a file visiting buffer!")))) + +(evil-define-key 'motion 'global (kbd "j") 'evil-next-visual-line) +(evil-define-key 'motion 'global (kbd "k") 'evil-previous-visual-line) +(evil-define-key 'motion 'global (kbd ".") 'find-file) +(evil-define-key 'motion 'global (kbd "bi") 'ibuffer) +(evil-define-key 'motion 'global (kbd "bd") 'delete-buffer) +(evil-define-key 'motion 'global (kbd "bn") 'next-buffer) +(evil-define-key 'motion 'global (kbd "bp") 'previous-buffer) +(evil-define-key 'motion 'global (kbd "pp") 'projectile-switch-project) +(evil-define-key 'motion 'global (kbd "pf") 'projectile-find-file) +(evil-define-key 'motion 'global (kbd "pa") 'projectile-add-known-project) +(evil-define-key 'motion 'global (kbd "gg") 'magit-status) +(evil-define-key 'motion 'global (kbd "hv") 'describe-variable) +(evil-define-key 'motion 'global (kbd "hf") 'describe-function) +(evil-define-key 'motion 'global (kbd "hk") 'describe-key) +(evil-define-key 'motion 'global (kbd "hF") 'describe-face) +(evil-define-key 'motion 'global (kbd "ws") 'evil-window-split) +(evil-define-key 'motion 'global (kbd "wv") 'evil-window-vsplit) +(defun evil-window-split-follow () + (interactive) + (let ((evil-split-window-below t)) + (evil-window-split))) +(defun evil-window-vsplit-follow () + (interactive) + (let ((evil-vsplit-window-right t)) + (evil-window-vsplit))) +(evil-define-key 'motion 'global (kbd "wS") 'evil-window-split-follow) +(evil-define-key 'motion 'global (kbd "wV") 'evil-window-vsplit-follow) +(evil-define-key 'motion 'global (kbd "wd") 'evil-window-delete) +(evil-define-key 'motion 'global (kbd "wj") 'evil-window-down) +(evil-define-key 'motion 'global (kbd "wk") 'evil-window-up) +(evil-define-key 'motion 'global (kbd "wh") 'evil-window-left) +(evil-define-key 'motion 'global (kbd "wl") 'evil-window-right) +(evil-define-key 'motion 'global (kbd "fd") 'delete-file-and-buffer) +(evil-define-key 'motion 'org-mode-map (kbd "mll") 'org-insert-link) +(define-key magit-mode-map (kbd "SPC") nil) (global-set-key (kbd "C-j") 'evil-window-down) (global-set-key (kbd "C-k") 'evil-window-up) From 09708e1b37d415dcb52b1c4962d487f025f0e3bc Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 6 Dec 2024 10:31:50 -0600 Subject: [PATCH 027/317] Trying cachyos kernel --- flake.lock | 147 +++++++++++++++++++++++++++++++++---- system/hardware/kernel.nix | 2 +- 2 files changed, 134 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index a098e12..47c2826 100644 --- a/flake.lock +++ b/flake.lock @@ -115,6 +115,28 @@ "type": "github" } }, + "chaotic": { + "inputs": { + "flake-schemas": "flake-schemas", + "home-manager": "home-manager", + "jovian": "jovian", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1733319615, + "narHash": "sha256-QWQPdJiC6ab3J2rThuLoFJivkEOvMNkzOIn5qJLhIQg=", + "owner": "chaotic-cx", + "repo": "nyx", + "rev": "d6a32b476215dbe915ccfa123fcd16d59d21a2c6", + "type": "github" + }, + "original": { + "owner": "chaotic-cx", + "ref": "nyxpkgs-unstable", + "repo": "nyx", + "type": "github" + } + }, "emacs-overlay": { "inputs": { "nixpkgs": [ @@ -168,6 +190,20 @@ "type": "github" } }, + "flake-schemas": { + "locked": { + "lastModified": 1721999734, + "narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=", + "rev": "0a5c42297d870156d9c57d8f99e476b738dcd982", + "revCount": 75, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" + } + }, "flake-utils": { "inputs": { "systems": [ @@ -247,16 +283,16 @@ "home-manager": { "inputs": { "nixpkgs": [ - "stylix", + "chaotic", "nixpkgs" ] }, "locked": { - "lastModified": 1732482255, - "narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=", + "lastModified": 1733175814, + "narHash": "sha256-zFOtOaqjzZfPMsm1mwu98syv3y+jziAq5DfWygaMtLg=", "owner": "nix-community", "repo": "home-manager", - "rev": "a9953635d7f34e7358d5189751110f87e3ac17da", + "rev": "bf23fe41082aa0289c209169302afd3397092f22", "type": "github" }, "original": { @@ -307,6 +343,27 @@ "type": "github" } }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1732482255, + "narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "a9953635d7f34e7358d5189751110f87e3ac17da", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, "hyprcursor": { "inputs": { "hyprlang": [ @@ -602,6 +659,28 @@ "type": "github" } }, + "jovian": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1732739177, + "narHash": "sha256-iL32+TA/8geCzcL1r3uthrH/GPvbUak5QE++WJUkaiI=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "8d7b2149e618696d5100c2683af1ffa893f02a75", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, "nix-formatter-pack": { "inputs": { "nixpkgs": [ @@ -628,6 +707,29 @@ "type": "github" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "chaotic", + "jovian", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "type": "github" + } + }, "nix-on-droid": { "inputs": { "home-manager": [ @@ -658,17 +760,18 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732837521, - "narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=", + "lastModified": 1733212471, + "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370", + "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776", "type": "github" }, "original": { - "id": "nixpkgs", + "owner": "NixOS", "ref": "nixos-unstable", - "type": "indirect" + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs-docs": { @@ -751,6 +854,21 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1732837521, + "narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1728538411, "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", @@ -766,7 +884,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1732238832, "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=", @@ -863,6 +981,7 @@ "root": { "inputs": { "blocklist-hosts": "blocklist-hosts", + "chaotic": "chaotic", "emacs-overlay": "emacs-overlay", "home-manager-stable": "home-manager-stable", "home-manager-unstable": "home-manager-unstable", @@ -871,7 +990,7 @@ "hyprland-plugins": "hyprland-plugins", "hyprlock": "hyprlock", "nix-on-droid": "nix-on-droid", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_3", "nvchad": "nvchad", "rust-overlay": "rust-overlay", @@ -880,7 +999,7 @@ }, "rust-overlay": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1732933841, @@ -921,8 +1040,8 @@ "flake-compat": "flake-compat_2", "flake-utils": "flake-utils", "gnome-shell": "gnome-shell", - "home-manager": "home-manager", - "nixpkgs": "nixpkgs_3", + "home-manager": "home-manager_2", + "nixpkgs": "nixpkgs_4", "systems": "systems_3", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", diff --git a/system/hardware/kernel.nix b/system/hardware/kernel.nix index 3295c3a..cc6ff20 100644 --- a/system/hardware/kernel.nix +++ b/system/hardware/kernel.nix @@ -1,6 +1,6 @@ { config, pkgs, ... }: { - boot.kernelPackages = pkgs.linuxPackages_xanmod_latest; + boot.kernelPackages = pkgs.linuxPackages_cachyos; boot.consoleLogLevel = 0; } From ad598b4322acc2f0e4e65430859fff6880e00430 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 6 Dec 2024 10:32:01 -0600 Subject: [PATCH 028/317] Some emacs improvements --- user/app/emacs/default.nix | 2 ++ user/app/emacs/init.el | 69 +++++++++++++++++++++++++++++++++++--- 2 files changed, 67 insertions(+), 4 deletions(-) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index f02563b..35158a4 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -21,6 +21,8 @@ python python-mode ]; }) + fira-code + nerd-fonts.fira-code ]; home.file.".config/emacs/init.el".source = ./init.el; home.file.".config/emacs/themes/doom-stylix-theme.el".source = config.lib.stylix.colors { diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 11de8c0..0753945 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -23,9 +23,39 @@ (set-fringe-mode 10) ; Give some breathing room (blink-cursor-mode 0) ; No blinking (global-hl-line-mode) ; Where am I? -(pixel-scroll-precision-mode 1) ; This is kinda epic + +; (Somewhat) precision scrolling +(pixel-scroll-mode 1) +(pixel-scroll-precision-mode 1) +(setq touch-screen-precision-scroll t) + +;; Mouse & Smooth Scroll +;; Scroll one line at a time (less "jumpy" than defaults) +(when (display-graphic-p) + (setq mouse-wheel-scroll-amount '(1 ((shift) . 1)) + mouse-wheel-progressive-speed nil)) +(setq scroll-step 1 + scroll-margin 1 + scroll-conservatively 101) (global-visual-line-mode 1) ; Visual lines make more sense +;; Garbage collection to speed things up +(add-hook 'after-init-hook + #'(lambda () + (setq gc-cons-threshold 120000))) +(add-hook 'focus-out-hook 'garbage-collect) + +;; auto revert buffers +(setq global-auto-revert-mode t) +(setq auto-revert-use-notify t) + +;; For camelCase +(global-subword-mode 1) + +;; ripgrep as grep +(setq grep-command "rg -nS --no-heading " + grep-use-null-device nil) + ;; I prefer visual lines (setq display-line-numbers-type 'visual line-move-visual t) @@ -35,12 +65,13 @@ (set-frame-parameter nil 'alpha-background 85) (add-to-list 'default-frame-alist '(alpha-background . 85)) +(add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) ;; Make ESC quit prompts (global-set-key (kbd "") 'keyboard-escape-quit) -(setq scroll-preserve-screen-position t) -(setq scroll-conservatively 101) +(setq scroll-preserve-screen-position nil) +(setq redisplay-skip-fontification-on-input t) (require 'use-package) (setq use-package-always-ensure t) @@ -185,7 +216,37 @@ (setq initial-buffer-choice (lambda () (get-buffer-create dashboard-buffer-name))) (dashboard-setup-startup-hook) (set-face-attribute 'default nil :height 150) ; Bigger text - (set-face-attribute 'default nil :family "Intel One Mono")) + (when (window-system) + (set-frame-font "FiraCode Nerd Font")) + (let ((alist '((33 . ".\\(?:\\(?:==\\|!!\\)\\|[!=]\\)") + (35 . ".\\(?:###\\|##\\|_(\\|[#(?[_{]\\)") + (36 . ".\\(?:>\\)") + (37 . ".\\(?:\\(?:%%\\)\\|%\\)") + (38 . ".\\(?:\\(?:&&\\)\\|&\\)") + (42 . ".\\(?:\\(?:\\*\\*/\\)\\|\\(?:\\*[*/]\\)\\|[*/>]\\)") + (43 . ".\\(?:\\(?:\\+\\+\\)\\|[+>]\\)") + (45 . ".\\(?:\\(?:-[>-]\\|<<\\|>>\\)\\|[<>}~-]\\)") + (46 . ".\\(?:\\(?:\\.[.<]\\)\\|[.=-]\\)") + (47 . ".\\(?:\\(?:\\*\\*\\|//\\|==\\)\\|[*/=>]\\)") + (48 . ".\\(?:x[a-zA-Z]\\)") + (58 . ".\\(?:::\\|[:=]\\)") + (59 . ".\\(?:;;\\|;\\)") + (60 . ".\\(?:\\(?:!--\\)\\|\\(?:~~\\|->\\|\\$>\\|\\*>\\|\\+>\\|--\\|<[<=-]\\|=[<=>]\\||>\\)\\|[*$+~/<=>|-]\\)") + (61 . ".\\(?:\\(?:/=\\|:=\\|<<\\|=[=>]\\|>>\\)\\|[<=>~]\\)") + (62 . ".\\(?:\\(?:=>\\|>[=>-]\\)\\|[=>-]\\)") + (63 . ".\\(?:\\(\\?\\?\\)\\|[:=?]\\)") + (91 . ".\\(?:]\\)") + (92 . ".\\(?:\\(?:\\\\\\\\\\)\\|\\\\\\)") + (94 . ".\\(?:=\\)") + (119 . ".\\(?:ww\\)") + (123 . ".\\(?:-\\)") + (124 . ".\\(?:\\(?:|[=|]\\)\\|[=>|]\\)") + (126 . ".\\(?:~>\\|~~\\|[>=@~-]\\)") + ) + )) + (dolist (char-regexp alist) + (set-char-table-range composition-function-table (car char-regexp) + `([,(cdr char-regexp) 0 font-shape-gstring]))))) ; Fix stupid backup confirmations (setq backup-directory-alist '("." "~/.emacs.d/cache/backups")) From b751878241b9febbec39978aa723e50fb5416c1c Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 6 Dec 2024 10:32:11 -0600 Subject: [PATCH 029/317] Use hyprprofiles even on work system profile --- user/wm/hyprland/hyprland.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 8474937..ddbcffa 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -10,7 +10,7 @@ in }) ../input/nihongo.nix ] ++ - (if (systemSettings.profile == "personal") then + (if ((systemSettings.profile == "personal") || (systemSettings.profile == "work")) then [ (import ./hyprprofiles/hyprprofiles.nix { dmenuCmd = "fuzzel -d"; inherit config lib pkgs; })] else From 0645a253b397f66ad8395659eb2e2ae8b103ae36 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 6 Dec 2024 11:37:37 -0600 Subject: [PATCH 030/317] iio-hyprland is pretty epic :) --- user/wm/hyprland/hyprland.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index ddbcffa..be8351b 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -31,6 +31,7 @@ in exec-once = dbus-update-activation-environment --systemd DISPLAY XAUTHORITY WAYLAND_DISPLAY XDG_SESSION_DESKTOP=Hyprland XDG_CURRENT_DESKTOP=Hyprland XDG_SESSION_TYPE=wayland exec-once = hyprctl setcursor '' + config.gtk.cursorTheme.name + " " + builtins.toString config.gtk.cursorTheme.size + '' + exec-once = iio-hyprland env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland From 509f38a50b1f185f80fcfa02bcdcf63ecff2c8f3 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 6 Dec 2024 14:30:34 -0600 Subject: [PATCH 031/317] Fixes iio-hyprland wallpaper bug --- system/wm/hyprland.nix | 3 +++ system/wm/iio-hyprland-hyprpaper.patch | 12 ++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 system/wm/iio-hyprland-hyprpaper.patch diff --git a/system/wm/hyprland.nix b/system/wm/hyprland.nix index 7b7c008..b17a009 100644 --- a/system/wm/hyprland.nix +++ b/system/wm/hyprland.nix @@ -27,6 +27,9 @@ in }; programs.iio-hyprland.enable = true; + programs.iio-hyprland.package = pkgs.iio-hyprland.overrideAttrs { + patches = [ ./iio-hyprland-hyprpaper.patch ]; + }; environment.systemPackages = with pkgs; [ jq ]; diff --git a/system/wm/iio-hyprland-hyprpaper.patch b/system/wm/iio-hyprland-hyprpaper.patch new file mode 100644 index 0000000..31dc2d5 --- /dev/null +++ b/system/wm/iio-hyprland-hyprpaper.patch @@ -0,0 +1,12 @@ +diff --git a/main.c b/main.c +index 2e858dd..2cd43e8 100644 +--- a/main.c ++++ b/main.c +@@ -123,6 +123,7 @@ void handle_orientation(enum Orientation orientation, const char* monitor_id) { + system_fmt("hyprctl --batch \"keyword monitor %s,transform,%d ; keyword input:touchdevice:transform %d ; keyword input:tablet:transform %d\"", output, orientation, orientation, orientation); + + } ++ system_fmt("pkill hyprpaper; hyprpaper & disown;"); + } + + DBusMessage* request_orientation(DBusConnection* conn) { From 1aac49cf9b80ceeb7ff0d4cd5d0d823b4f370749 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 10:51:31 -0600 Subject: [PATCH 032/317] Reorganized emacs config --- user/app/emacs/init.el | 420 ++++++++++++++++++++++------------------- 1 file changed, 229 insertions(+), 191 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 0753945..954188d 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -10,183 +10,145 @@ ;; ;;; Code: -; Text -(setq inhibit-startup-message t) +;; Startup hook for mainly gui related things +(add-hook 'emacs-startup-hook #'(lambda () + ;; No startup screen + (setq inhibit-startup-message t) -; I want declarative config, no custom -(setq custom-file "/dev/null") + ;; Transparent background + (set-frame-parameter nil 'alpha-background 85) + (add-to-list 'default-frame-alist '(alpha-background . 85)) + (add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) -; Some sane settings -(scroll-bar-mode -1) ; Disable visible scrollbar -(tool-bar-mode -1) ; Disable the toolbar -(tooltip-mode -1) ; Disable tooltips -(set-fringe-mode 10) ; Give some breathing room -(blink-cursor-mode 0) ; No blinking -(global-hl-line-mode) ; Where am I? + ;; I want declarative config, no custom + (setq custom-file "/dev/null") -; (Somewhat) precision scrolling -(pixel-scroll-mode 1) -(pixel-scroll-precision-mode 1) -(setq touch-screen-precision-scroll t) + ;; Disable the menu bar + (menu-bar-mode -1) -;; Mouse & Smooth Scroll -;; Scroll one line at a time (less "jumpy" than defaults) -(when (display-graphic-p) - (setq mouse-wheel-scroll-amount '(1 ((shift) . 1)) - mouse-wheel-progressive-speed nil)) -(setq scroll-step 1 - scroll-margin 1 - scroll-conservatively 101) -(global-visual-line-mode 1) ; Visual lines make more sense + ;; Disable visible scrollbar + (scroll-bar-mode -1) -;; Garbage collection to speed things up -(add-hook 'after-init-hook - #'(lambda () - (setq gc-cons-threshold 120000))) -(add-hook 'focus-out-hook 'garbage-collect) + ;; Disable the toolbar + (tool-bar-mode -1) -;; auto revert buffers -(setq global-auto-revert-mode t) -(setq auto-revert-use-notify t) + ;; Disable tooltips + (tooltip-mode -1) -;; For camelCase -(global-subword-mode 1) + ;; Breathing room + (set-fringe-mode 10) -;; ripgrep as grep -(setq grep-command "rg -nS --no-heading " - grep-use-null-device nil) + ;; No blinking + (blink-cursor-mode 0) -;; I prefer visual lines -(setq display-line-numbers-type 'visual - line-move-visual t) -(add-hook 'prog-mode-hook 'display-line-numbers-mode) + ;; Highlight current line + (global-hl-line-mode) -(menu-bar-mode -1) ; Disable the menu bar + ;; Bigger text + (set-face-attribute 'default nil :height 150) -(set-frame-parameter nil 'alpha-background 85) -(add-to-list 'default-frame-alist '(alpha-background . 85)) -(add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) + ;; Fira and glyphs + (when (window-system) + (set-frame-font "FiraCode Nerd Font")) + (let ((alist '((33 . ".\\(?:\\(?:==\\|!!\\)\\|[!=]\\)") + (35 . ".\\(?:###\\|##\\|_(\\|[#(?[_{]\\)") + (36 . ".\\(?:>\\)") + (37 . ".\\(?:\\(?:%%\\)\\|%\\)") + (38 . ".\\(?:\\(?:&&\\)\\|&\\)") + (42 . ".\\(?:\\(?:\\*\\*/\\)\\|\\(?:\\*[*/]\\)\\|[*/>]\\)") + (43 . ".\\(?:\\(?:\\+\\+\\)\\|[+>]\\)") + (45 . ".\\(?:\\(?:-[>-]\\|<<\\|>>\\)\\|[<>}~-]\\)") + (46 . ".\\(?:\\(?:\\.[.<]\\)\\|[.=-]\\)") + (47 . ".\\(?:\\(?:\\*\\*\\|//\\|==\\)\\|[*/=>]\\)") + (48 . ".\\(?:x[a-zA-Z]\\)") + (58 . ".\\(?:::\\|[:=]\\)") + (59 . ".\\(?:;;\\|;\\)") + (60 . ".\\(?:\\(?:!--\\)\\|\\(?:~~\\|->\\|\\$>\\|\\*>\\|\\+>\\|--\\|<[<=-]\\|=[<=>]\\||>\\)\\|[*$+~/<=>|-]\\)") + (61 . ".\\(?:\\(?:/=\\|:=\\|<<\\|=[=>]\\|>>\\)\\|[<=>~]\\)") + (62 . ".\\(?:\\(?:=>\\|>[=>-]\\)\\|[=>-]\\)") + (63 . ".\\(?:\\(\\?\\?\\)\\|[:=?]\\)") + (91 . ".\\(?:]\\)") + (92 . ".\\(?:\\(?:\\\\\\\\\\)\\|\\\\\\)") + (94 . ".\\(?:=\\)") + (119 . ".\\(?:ww\\)") + (123 . ".\\(?:-\\)") + (124 . ".\\(?:\\(?:|[=|]\\)\\|[=>|]\\)") + (126 . ".\\(?:~>\\|~~\\|[>=@~-]\\)") + ))) + (dolist (char-regexp alist) + (set-char-table-range composition-function-table (car char-regexp) + `([,(cdr char-regexp) 0 font-shape-gstring]))) -;; Make ESC quit prompts -(global-set-key (kbd "") 'keyboard-escape-quit) + (dashboard-setup-startup-hook)) -(setq scroll-preserve-screen-position nil) -(setq redisplay-skip-fontification-on-input t) -(require 'use-package) -(setq use-package-always-ensure t) -(use-package command-log-mode) + )) -;; Enable vertico -(use-package vertico - :custom - (vertico-scroll-margin 0) ;; Different scroll margin - (vertico-count 20) ;; Show more candidates - (vertico-resize nil) ;; Grow and shrink the Vertico minibuffer - (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' - :init - (vertico-mode)) -;; Completion -(use-package hotfuzz) -(use-package orderless) -(setq completion-styles '(orderless flex hotfuzz)) +(add-hook 'after-init-hook #'(lambda () + ;; Garbage collection threshold + (setq gc-cons-threshold 120000) + (add-hook 'focus-out-hook 'garbage-collect) -;; Magit -(use-package magit) + ;; Auto revert + (global-auto-revert-mode 1) + (setq auto-revert-use-notify t + revert-without-query t) -;; Projectile -(use-package projectile - :init - (projectile-mode +1)) + ;; camelCase and PascalCase + (global-subword-mode 1) -;; Enable vim -(setq evil-want-keybinding nil) + ;; ripgrep as grep + (setq grep-command "rg -nS --no-heading " + grep-use-null-device nil) -(use-package evil - :init - (setq evil-want-keybinding nil) - :config - (evil-set-leader nil (kbd "C-SPC")) - (evil-set-leader 'normal (kbd "SPC")) - (evil-set-leader 'motion (kbd "SPC")) - (setq evil-respect-visual-line-mode t) - (evil-mode 1)) + ;; "y" or "n" instead of "yes" or "no" + (setq use-short-answers t) -(use-package evil-collection - :init - (setq evil-want-keybinding nil) - :config - (evil-collection-init)) + ;; Make ESC quit prompts + (global-set-key (kbd "") 'keyboard-escape-quit) -;; based on http://emacsredux.com/blog/2013/04/03/delete-file-and-buffer/ -(defun delete-file-and-buffer () - "Kill the current buffer and deletes the file it is visiting." - (interactive) - (let ((filename (buffer-file-name))) - (if filename - (if (y-or-n-p (concat "Do you really want to delete file " filename " ?")) - (progn - (delete-file filename) - (message "Deleted file %s." filename) - (kill-buffer))) - (message "Not a file visiting buffer!")))) + ;; Mouse & Smooth Scroll + (setq scroll-step 1 + scroll-margin 1 + scroll-conservatively 101 + scroll-preserve-screen-position nil + redisplay-skip-fontification-on-input t) -(evil-define-key 'motion 'global (kbd "j") 'evil-next-visual-line) -(evil-define-key 'motion 'global (kbd "k") 'evil-previous-visual-line) -(evil-define-key 'motion 'global (kbd ".") 'find-file) -(evil-define-key 'motion 'global (kbd "bi") 'ibuffer) -(evil-define-key 'motion 'global (kbd "bd") 'delete-buffer) -(evil-define-key 'motion 'global (kbd "bn") 'next-buffer) -(evil-define-key 'motion 'global (kbd "bp") 'previous-buffer) -(evil-define-key 'motion 'global (kbd "pp") 'projectile-switch-project) -(evil-define-key 'motion 'global (kbd "pf") 'projectile-find-file) -(evil-define-key 'motion 'global (kbd "pa") 'projectile-add-known-project) -(evil-define-key 'motion 'global (kbd "gg") 'magit-status) -(evil-define-key 'motion 'global (kbd "hv") 'describe-variable) -(evil-define-key 'motion 'global (kbd "hf") 'describe-function) -(evil-define-key 'motion 'global (kbd "hk") 'describe-key) -(evil-define-key 'motion 'global (kbd "hF") 'describe-face) -(evil-define-key 'motion 'global (kbd "ws") 'evil-window-split) -(evil-define-key 'motion 'global (kbd "wv") 'evil-window-vsplit) -(defun evil-window-split-follow () - (interactive) - (let ((evil-split-window-below t)) - (evil-window-split))) -(defun evil-window-vsplit-follow () - (interactive) - (let ((evil-vsplit-window-right t)) - (evil-window-vsplit))) -(evil-define-key 'motion 'global (kbd "wS") 'evil-window-split-follow) -(evil-define-key 'motion 'global (kbd "wV") 'evil-window-vsplit-follow) -(evil-define-key 'motion 'global (kbd "wd") 'evil-window-delete) -(evil-define-key 'motion 'global (kbd "wj") 'evil-window-down) -(evil-define-key 'motion 'global (kbd "wk") 'evil-window-up) -(evil-define-key 'motion 'global (kbd "wh") 'evil-window-left) -(evil-define-key 'motion 'global (kbd "wl") 'evil-window-right) -(evil-define-key 'motion 'global (kbd "fd") 'delete-file-and-buffer) -(evil-define-key 'motion 'org-mode-map (kbd "mll") 'org-insert-link) -(define-key magit-mode-map (kbd "SPC") nil) + ;; Visual lines make more sense + (global-visual-line-mode 1) -(global-set-key (kbd "C-j") 'evil-window-down) -(global-set-key (kbd "C-k") 'evil-window-up) -(global-set-key (kbd "C-h") 'evil-window-left) -(global-set-key (kbd "C-l") 'evil-window-right) + ;; Line numbers + (setq display-line-numbers-type 'visual + line-move-visual t) + (add-hook 'prog-mode-hook 'display-line-numbers-mode) -(setq magit-display-buffer-function 'magit-display-buffer-fullframe-status-v1) -(setq magit-bury-buffer-function 'magit-restore-window-configuration) -(add-hook 'git-commit-mode-hook 'evil-insert-state) + ;; Fix stupid backup confirmations + (setq backup-directory-alist '("." "~/.emacs.d/cache/backups")) + (setq tramp-auto-save-directory "/dev/null"))) +;; Packages + +;; I am a nerd (use-package nerd-icons + :ensure t) + +;; Theme and modeline +(use-package doom-themes :ensure t :config (setq doom-themes-enable-bold t - doom-themes-enable-italic t) - (setq custom-theme-directory "~/.config/emacs/themes") - (load-theme 'doom-stylix t) - ) + doom-themes-enable-italic t + custom-theme-directory "~/.config/emacs/themes") + (load-theme 'doom-stylix t)) +(use-package doom-modeline + :ensure t + :init (doom-modeline-mode 1) + :custom ((doom-modeline-height 15))) + +;; Dashboard (use-package dashboard :ensure t :config @@ -213,57 +175,133 @@ :height 1.0 :v-adjust 0 :face 'font-lock-keyword-face)) - (setq initial-buffer-choice (lambda () (get-buffer-create dashboard-buffer-name))) - (dashboard-setup-startup-hook) - (set-face-attribute 'default nil :height 150) ; Bigger text - (when (window-system) - (set-frame-font "FiraCode Nerd Font")) - (let ((alist '((33 . ".\\(?:\\(?:==\\|!!\\)\\|[!=]\\)") - (35 . ".\\(?:###\\|##\\|_(\\|[#(?[_{]\\)") - (36 . ".\\(?:>\\)") - (37 . ".\\(?:\\(?:%%\\)\\|%\\)") - (38 . ".\\(?:\\(?:&&\\)\\|&\\)") - (42 . ".\\(?:\\(?:\\*\\*/\\)\\|\\(?:\\*[*/]\\)\\|[*/>]\\)") - (43 . ".\\(?:\\(?:\\+\\+\\)\\|[+>]\\)") - (45 . ".\\(?:\\(?:-[>-]\\|<<\\|>>\\)\\|[<>}~-]\\)") - (46 . ".\\(?:\\(?:\\.[.<]\\)\\|[.=-]\\)") - (47 . ".\\(?:\\(?:\\*\\*\\|//\\|==\\)\\|[*/=>]\\)") - (48 . ".\\(?:x[a-zA-Z]\\)") - (58 . ".\\(?:::\\|[:=]\\)") - (59 . ".\\(?:;;\\|;\\)") - (60 . ".\\(?:\\(?:!--\\)\\|\\(?:~~\\|->\\|\\$>\\|\\*>\\|\\+>\\|--\\|<[<=-]\\|=[<=>]\\||>\\)\\|[*$+~/<=>|-]\\)") - (61 . ".\\(?:\\(?:/=\\|:=\\|<<\\|=[=>]\\|>>\\)\\|[<=>~]\\)") - (62 . ".\\(?:\\(?:=>\\|>[=>-]\\)\\|[=>-]\\)") - (63 . ".\\(?:\\(\\?\\?\\)\\|[:=?]\\)") - (91 . ".\\(?:]\\)") - (92 . ".\\(?:\\(?:\\\\\\\\\\)\\|\\\\\\)") - (94 . ".\\(?:=\\)") - (119 . ".\\(?:ww\\)") - (123 . ".\\(?:-\\)") - (124 . ".\\(?:\\(?:|[=|]\\)\\|[=>|]\\)") - (126 . ".\\(?:~>\\|~~\\|[>=@~-]\\)") - ) - )) - (dolist (char-regexp alist) - (set-char-table-range composition-function-table (car char-regexp) - `([,(cdr char-regexp) 0 font-shape-gstring]))))) + (setq initial-buffer-choice (lambda () (get-buffer-create dashboard-buffer-name)))) -; Fix stupid backup confirmations -(setq backup-directory-alist '("." "~/.emacs.d/cache/backups")) -(setq tramp-auto-save-directory "/dev/null") +;; Setup treesitter +(require 'treesit) +(treesit-major-mode-setup) + +;; use-package +(require 'use-package) +(setq use-package-always-ensure t) + +;; command-log-mode +(use-package command-log-mode) + +;; Enable vertico +(use-package vertico + :custom + (vertico-scroll-margin 0) ;; Different scroll margin + (vertico-count 20) ;; Show more candidates + (vertico-resize nil) ;; Grow and shrink the Vertico minibuffer + (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' + :init + (vertico-mode)) + +;; Completion +(use-package hotfuzz) +(use-package orderless) +(setq completion-styles '(orderless flex hotfuzz)) + +;; Magit +(use-package magit + :config + (setq magit-display-buffer-function 'magit-display-buffer-fullframe-status-v1) + (setq magit-bury-buffer-function 'magit-restore-window-configuration) + (add-hook 'git-commit-mode-hook 'evil-insert-state)) + +;; Projectile +(use-package projectile + :init + (projectile-mode +1)) + +;; Enable vim +(setq evil-want-keybinding nil) + +(use-package evil + :init + (setq evil-want-keybinding nil) + :config + (evil-set-leader nil (kbd "C-SPC")) + (evil-set-leader 'normal (kbd "SPC")) + (evil-set-leader 'motion (kbd "SPC")) + (setq evil-respect-visual-line-mode t) + (evil-mode 1)) + +(use-package evil-collection + :init + (setq evil-want-keybinding nil) + :config + (evil-collection-init) + + ;; Visual mode keybinds + (evil-define-key 'motion 'global (kbd "j") 'evil-next-visual-line) + (evil-define-key 'motion 'global (kbd "k") 'evil-previous-visual-line) + + ;; File and buffer keybinds + (evil-define-key 'motion 'global (kbd ".") 'find-file) + (evil-define-key 'motion 'global (kbd "bi") 'ibuffer) + (evil-define-key 'motion 'global (kbd "bd") 'delete-buffer) + (evil-define-key 'motion 'global (kbd "bn") 'next-buffer) + (evil-define-key 'motion 'global (kbd "bp") 'previous-buffer) + ;; based on http://emacsredux.com/blog/2013/04/03/delete-file-and-buffer/ + (defun delete-file-and-buffer () + "Kill the current buffer and deletes the file it is visiting." + (interactive) + (let ((filename (buffer-file-name))) + (if filename + (if (y-or-n-p (concat "Do you really want to delete file " filename " ?")) + (progn + (delete-file filename) + (message "Deleted file %s." filename) + (kill-buffer))) + (message "Not a file visiting buffer!")))) + (evil-define-key 'motion 'global (kbd "fd") 'delete-file-and-buffer) + + ;; Project keybinds + (evil-define-key 'motion 'global (kbd "pp") 'projectile-switch-project) + (evil-define-key 'motion 'global (kbd "pf") 'projectile-find-file) + (evil-define-key 'motion 'global (kbd "pa") 'projectile-add-known-project) + (evil-define-key 'motion 'global (kbd "gg") 'magit-status) + + ;; Describe keybinds + (evil-define-key 'motion 'global (kbd "hv") 'describe-variable) + (evil-define-key 'motion 'global (kbd "hf") 'describe-function) + (evil-define-key 'motion 'global (kbd "hk") 'describe-key) + (evil-define-key 'motion 'global (kbd "hF") 'describe-face) + + ;; Window keybinds + (evil-define-key 'motion 'global (kbd "ws") 'evil-window-split) + (evil-define-key 'motion 'global (kbd "wv") 'evil-window-vsplit) + (defun evil-window-split-follow () + (interactive) + (let ((evil-split-window-below t)) + (evil-window-split))) + (defun evil-window-vsplit-follow () + (interactive) + (let ((evil-vsplit-window-right t)) + (evil-window-vsplit))) + (evil-define-key 'motion 'global (kbd "wS") 'evil-window-split-follow) + (evil-define-key 'motion 'global (kbd "wV") 'evil-window-vsplit-follow) + + (evil-define-key 'motion 'global (kbd "wd") 'evil-window-delete) + (evil-define-key 'motion 'global (kbd "wj") 'evil-window-down) + (evil-define-key 'motion 'global (kbd "wk") 'evil-window-up) + (evil-define-key 'motion 'global (kbd "wh") 'evil-window-left) + (evil-define-key 'motion 'global (kbd "wl") 'evil-window-right) + + + (evil-define-key 'motion 'org-mode-map (kbd "mll") 'org-insert-link) + (define-key magit-mode-map (kbd "SPC") nil) + + (global-set-key (kbd "C-j") 'evil-window-down) + (global-set-key (kbd "C-k") 'evil-window-up) + (global-set-key (kbd "C-h") 'evil-window-left) + (global-set-key (kbd "C-l") 'evil-window-right)) (require 'sudo-edit) (setq sudo-edit-local-method "doas") (setq auth-source-save-behavior nil) - (evil-define-key 'normal 'global (kbd "fU") 'sudo-edit) (evil-define-key 'normal 'global (kbd "fu") 'sudo-edit-find-file) -(use-package doom-themes - :ensure t - :init ) - -(use-package doom-modeline - :ensure t - :init (doom-modeline-mode 1) - :custom ((doom-modeline-height 15))) From 35ea2d54b5abb9c47eaef37ebaaf4adbcdbbc676 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 11:49:08 -0600 Subject: [PATCH 033/317] Org mode styling --- user/app/emacs/default.nix | 3 ++- user/app/emacs/init.el | 55 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 35158a4..0d09c67 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -1,11 +1,12 @@ { config, pkgs, ... }: { - home.packages = [ + home.packages = with pkgs; [ (pkgs.emacsWithPackagesFromUsePackage { config = ./init.el; package = pkgs.emacs-pgtk; alwaysEnsure = true; extraEmacsPackages = epkgs: with epkgs; [ + org-modern olivetti command-log-mode vertico corfu hotfuzz orderless evil evil-collection evil-snipe evil-owl evil-vimish-fold diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 954188d..553dee6 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -203,6 +203,61 @@ (use-package orderless) (setq completion-styles '(orderless flex hotfuzz)) +;; Org styling +(with-eval-after-load 'org #'(lambda () + ;; Heading styles + (set-face-attribute 'outline-1 nil :height 195 :foreground (nth 1 (nth 14 doom-themes--colors))) + (set-face-attribute 'outline-2 nil :height 188 :foreground (nth 1 (nth 15 doom-themes--colors))) + (set-face-attribute 'outline-3 nil :height 180 :foreground (nth 1 (nth 19 doom-themes--colors))) + (set-face-attribute 'outline-4 nil :height 173 :foreground (nth 1 (nth 23 doom-themes--colors))) + (set-face-attribute 'outline-5 nil :height 173 :foreground (nth 1 (nth 24 doom-themes--colors))) + (set-face-attribute 'outline-6 nil :height 165 :foreground (nth 1 (nth 16 doom-themes--colors))) + (set-face-attribute 'outline-7 nil :height 160 :foreground (nth 1 (nth 18 doom-themes--colors))) + (set-face-attribute 'outline-8 nil :height 155 :foreground (nth 1 (nth 11 doom-themes--colors))) + + (require 'org-modern) + + ;; Add frame borders and window dividers + (modify-all-frames-parameters + '((right-divider-width . 20) + (left-divider-width . 20) + (internal-border-width . 20))) + (dolist (face '(window-divider + window-divider-first-pixel + window-divider-last-pixel)) + (face-spec-reset-face face) + (set-face-foreground face (face-attribute 'default :background))) + (set-face-background 'fringe (face-attribute 'default :background)) + + (setq + ;; Edit settings + org-auto-align-tags nil + org-tags-column 0 + org-catch-invisible-edits 'show-and-error + org-special-ctrl-a/e t + org-insert-heading-respect-content t + + ;; Org styling, hide markup etc. + org-hide-emphasis-markers t + org-pretty-entities t) + + ;; Ellipsis styling + (setq org-ellipsis "…") + (set-face-attribute 'org-ellipsis nil :inherit 'default :box nil) + + ;; Star styling + (setq org-modern-star 'replace) + + (global-org-modern-mode))) + +;; Olivetti +(use-package olivetti + :config + (setq olivetti-style 'fancy + olivetti-margin-width 100) + (setq-default olivetti-body-width 100) + (add-hook 'org-mode-hook 'olivetti-mode)) + ;; Magit (use-package magit :config From fdc301a09a673cfe4c639d3f1e7b80c7616dd7f0 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 12:17:52 -0600 Subject: [PATCH 034/317] Fix for chaotic --- profiles/work/home.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/profiles/work/home.nix b/profiles/work/home.nix index cad4b4b..737eff5 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -24,7 +24,9 @@ ../../user/lang/cc/cc.nix # C and C++ tools ../../user/lang/godot/godot.nix # Game development ../../user/hardware/bluetooth.nix # Bluetooth - ]; + ]; + + nix.package = pkgs.nix; home.stateVersion = "22.11"; # Please read the comment before changing. From e24e76cd3f438bb7373ff83b27c4795e5486bda8 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 13:02:13 -0600 Subject: [PATCH 035/317] Added some basic godot ide stuff to emacs --- user/app/emacs/default.nix | 4 +++- user/app/emacs/init.el | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 0d09c67..1c01037 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -14,12 +14,14 @@ nerd-icons nerd-icons-dired nerd-icons-corfu nerd-icons-ibuffer nerd-icons-completion yasnippet - projectile treemacs + projectile treemacs treemacs-projectile + treesit-grammars.with-all-grammars magit magit-file-icons vterm sudo-edit gdscript-mode nix-mode python python-mode + lsp-mode flycheck lsp-ui lsp-treemacs ]; }) fira-code diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 553dee6..b34cdcd 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -360,3 +360,25 @@ (evil-define-key 'normal 'global (kbd "fU") 'sudo-edit) (evil-define-key 'normal 'global (kbd "fu") 'sudo-edit-find-file) +(require 'lsp-mode) +(add-hook 'gdscript-ts-mode-hook #'lsp-deferred) + +(use-package flycheck + :init + (global-flycheck-mode)) + +(use-package treemacs + :config + (add-hook 'projectile-after-switch-project-hook 'treemacs-add-and-display-current-project-exclusively)) + +(use-package lsp-mode + :init + ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") + (setq lsp-keymap-prefix (kbd "SPC l")) + :hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode) + (gdscript-mode . lsp) + (gdscript-ts-mode . lsp)) + :commands lsp-deferred) + +(use-package lsp-ui :commands lsp-ui-mode) +(use-package lsp-treemacs :commands lsp-treemacs-errors-list) From acd020feb8bc4aa57f6b3826a5556b596966a9f1 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 13:04:56 -0600 Subject: [PATCH 036/317] Forgot to re-add chaotic to flake --- flake.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/flake.nix b/flake.nix index d7e8036..8b0e75e 100644 --- a/flake.nix +++ b/flake.nix @@ -127,6 +127,7 @@ inherit pkgs; modules = [ (./. + "/profiles" + ("/" + systemSettings.profile) + "/home.nix") # load home.nix from selected PROFILE + inputs.chaotic.homeManagerModules.default ]; extraSpecialArgs = { # pass config variables from above @@ -143,6 +144,7 @@ modules = [ (./. + "/profiles" + ("/" + systemSettings.profile) + "/configuration.nix") ./system/bin/phoenix.nix + inputs.chaotic.nixosModules.default ]; # load configuration.nix from selected PROFILE specialArgs = { # pass config variables from above @@ -192,6 +194,7 @@ inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs-stable.url = "nixpkgs/nixos-24.11"; + chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; home-manager-unstable.url = "github:nix-community/home-manager/master"; home-manager-unstable.inputs.nixpkgs.follows = "nixpkgs"; From b07d3bf2531ec5332d0737af4fa76827914a6f14 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 14:07:57 -0600 Subject: [PATCH 037/317] Updated hyprlock --- flake.lock | 52 +++++++++++++++++++++++++++++++++++++++++----------- flake.nix | 2 +- 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/flake.lock b/flake.lock index 47c2826..25cc561 100644 --- a/flake.lock +++ b/flake.lock @@ -393,6 +393,35 @@ "type": "github" } }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprlock", + "hyprutils" + ], + "nixpkgs": [ + "hyprlock", + "nixpkgs" + ], + "systems": [ + "hyprlock", + "systems" + ] + }, + "locked": { + "lastModified": 1732808127, + "narHash": "sha256-jwqYmLVfvoLPu8UScEzZgdbbiNU3ioYcrsthjEEnGqI=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "4d927a52be7e15e0846456f2aa1b0ad76b5bf059", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, "hyprgrass": { "inputs": { "hyprland": [ @@ -547,11 +576,11 @@ ] }, "locked": { - "lastModified": 1721324361, - "narHash": "sha256-BiJKO0IIdnSwHQBSrEJlKlFr753urkLE48wtt0UhNG4=", + "lastModified": 1728168612, + "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "adbefbf49664a6c2c8bf36b6487fd31e3eb68086", + "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", "type": "github" }, "original": { @@ -562,6 +591,7 @@ }, "hyprlock": { "inputs": { + "hyprgraphics": "hyprgraphics", "hyprlang": "hyprlang_2", "hyprutils": "hyprutils_2", "nixpkgs": [ @@ -570,16 +600,16 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1725203994, - "narHash": "sha256-N7Kfq8tpOWjtRKBnH5RqcDtQFGZPZ5vXgmxbnZVPCuU=", + "lastModified": 1732812191, + "narHash": "sha256-/gYMXqhjvOcjhaYjzb1iqjpoCDqO5lkkqjG93oMMo60=", "ref": "refs/heads/main", - "rev": "73b0fc26c0e2f6f82f9d9f5b02e660a958902763", - "revCount": 248, + "rev": "4667f721be47ff6f5cf2a7ee64513f818fb764a0", + "revCount": 277, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, "original": { - "rev": "73b0fc26c0e2f6f82f9d9f5b02e660a958902763", + "rev": "4667f721be47ff6f5cf2a7ee64513f818fb764a0", "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" } @@ -621,11 +651,11 @@ ] }, "locked": { - "lastModified": 1721324102, - "narHash": "sha256-WAZ0X6yJW1hFG6otkHBfyJDKRpNP5stsRqdEuHrFRpk=", + "lastModified": 1727300645, + "narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "962582a090bc233c4de9d9897f46794280288989", + "rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 8b0e75e..2f79251 100644 --- a/flake.nix +++ b/flake.nix @@ -224,7 +224,7 @@ hyprlock = { type = "git"; url = "https://code.hyprland.org/hyprwm/hyprlock.git"; - rev = "73b0fc26c0e2f6f82f9d9f5b02e660a958902763"; + rev = "4667f721be47ff6f5cf2a7ee64513f818fb764a0"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprgrass.url = "github:horriblename/hyprgrass/427690aec574fec75f5b7b800ac4a0b4c8e4b1d5"; From 28fd35073c064bf3646e27a77a4f33333cfa47c1 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 14:41:37 -0600 Subject: [PATCH 038/317] Nerd icons everywhere --- user/app/emacs/default.nix | 1 + user/app/emacs/init.el | 293 +++++++++++++++++++++---------------- 2 files changed, 166 insertions(+), 128 deletions(-) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 1c01037..2012d62 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -13,6 +13,7 @@ dashboard doom-themes doom-modeline nerd-icons nerd-icons-dired nerd-icons-corfu nerd-icons-ibuffer nerd-icons-completion + treemacs-nerd-icons yasnippet projectile treemacs treemacs-projectile treesit-grammars.with-all-grammars diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index b34cdcd..de5f9a8 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -106,6 +106,9 @@ ;; "y" or "n" instead of "yes" or "no" (setq use-short-answers t) + ;; Enable indentation+completion using TAB + (setq tab-always-indent 'complete) + ;; Make ESC quit prompts (global-set-key (kbd "") 'keyboard-escape-quit) @@ -130,134 +133,6 @@ ;; Packages -;; I am a nerd -(use-package nerd-icons - :ensure t) - -;; Theme and modeline -(use-package doom-themes - :ensure t - :config - (setq doom-themes-enable-bold t - doom-themes-enable-italic t - custom-theme-directory "~/.config/emacs/themes") - (load-theme 'doom-stylix t)) - -(use-package doom-modeline - :ensure t - :init (doom-modeline-mode 1) - :custom ((doom-modeline-height 15))) - -;; Dashboard -(use-package dashboard - :ensure t - :config - (setq dashboard-banner-logo-title "Welcome to Nix Emacs") - (setq dashboard-startup-banner 2) - (setq dashboard-set-heading-icons t) - (setq dashboard-set-file-icons t) - (setq dashboard-set-navigator t) - (setq dashboard-items '()) - (setq dashboard-center-content t) - (setq dashboard-icon-type 'nerd-icons) ;; use `nerd-icons' package - (setq dashboard-footer-messages '("Here to do customizing, or actual work?" - "M-x insert-inspiring-message" - "My software never has bugs. It just develops random features." - "Dad, what are clouds made of? Linux servers, mostly." - "There is no place like ~" - "~ sweet ~" - "sudo chown -R us ./allyourbase" - "I’ll tell you a DNS joke but it could take 24 hours for everyone to get it." - "I'd tell you a UDP joke, but you might not get it." - "I'll tell you a TCP joke. Do you want to hear it?")) - (setq dashboard-footer-icon - (nerd-icons-codicon "nf-cod-vm" - :height 1.0 - :v-adjust 0 - :face 'font-lock-keyword-face)) - (setq initial-buffer-choice (lambda () (get-buffer-create dashboard-buffer-name)))) - -;; Setup treesitter -(require 'treesit) -(treesit-major-mode-setup) - -;; use-package -(require 'use-package) -(setq use-package-always-ensure t) - -;; command-log-mode -(use-package command-log-mode) - -;; Enable vertico -(use-package vertico - :custom - (vertico-scroll-margin 0) ;; Different scroll margin - (vertico-count 20) ;; Show more candidates - (vertico-resize nil) ;; Grow and shrink the Vertico minibuffer - (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' - :init - (vertico-mode)) - -;; Completion -(use-package hotfuzz) -(use-package orderless) -(setq completion-styles '(orderless flex hotfuzz)) - -;; Org styling -(with-eval-after-load 'org #'(lambda () - ;; Heading styles - (set-face-attribute 'outline-1 nil :height 195 :foreground (nth 1 (nth 14 doom-themes--colors))) - (set-face-attribute 'outline-2 nil :height 188 :foreground (nth 1 (nth 15 doom-themes--colors))) - (set-face-attribute 'outline-3 nil :height 180 :foreground (nth 1 (nth 19 doom-themes--colors))) - (set-face-attribute 'outline-4 nil :height 173 :foreground (nth 1 (nth 23 doom-themes--colors))) - (set-face-attribute 'outline-5 nil :height 173 :foreground (nth 1 (nth 24 doom-themes--colors))) - (set-face-attribute 'outline-6 nil :height 165 :foreground (nth 1 (nth 16 doom-themes--colors))) - (set-face-attribute 'outline-7 nil :height 160 :foreground (nth 1 (nth 18 doom-themes--colors))) - (set-face-attribute 'outline-8 nil :height 155 :foreground (nth 1 (nth 11 doom-themes--colors))) - - (require 'org-modern) - - ;; Add frame borders and window dividers - (modify-all-frames-parameters - '((right-divider-width . 20) - (left-divider-width . 20) - (internal-border-width . 20))) - (dolist (face '(window-divider - window-divider-first-pixel - window-divider-last-pixel)) - (face-spec-reset-face face) - (set-face-foreground face (face-attribute 'default :background))) - (set-face-background 'fringe (face-attribute 'default :background)) - - (setq - ;; Edit settings - org-auto-align-tags nil - org-tags-column 0 - org-catch-invisible-edits 'show-and-error - org-special-ctrl-a/e t - org-insert-heading-respect-content t - - ;; Org styling, hide markup etc. - org-hide-emphasis-markers t - org-pretty-entities t) - - ;; Ellipsis styling - (setq org-ellipsis "…") - (set-face-attribute 'org-ellipsis nil :inherit 'default :box nil) - - ;; Star styling - (setq org-modern-star 'replace) - - (global-org-modern-mode))) - -;; Olivetti -(use-package olivetti - :config - (setq olivetti-style 'fancy - olivetti-margin-width 100) - (setq-default olivetti-body-width 100) - (add-hook 'org-mode-hook 'olivetti-mode)) - ;; Magit (use-package magit :config @@ -362,6 +237,7 @@ (require 'lsp-mode) (add-hook 'gdscript-ts-mode-hook #'lsp-deferred) +(setq lsp-completion-provider :none) (use-package flycheck :init @@ -382,3 +258,164 @@ (use-package lsp-ui :commands lsp-ui-mode) (use-package lsp-treemacs :commands lsp-treemacs-errors-list) + +(use-package corfu + :custom + (corfu-cycle t) ;; Enable cycling for `corfu-next/previous' + ;; (corfu-preview-current nil) ;; Disable current candidate preview + (corfu-preselect 'prompt) ;; Preselect the prompt + (corfu-on-exact-match 'insert) ;; Configure handling of exact matches + (corfu-auto t) ;; auto complete + (corfu-auto-delay 0.5) ;; wait half a second though + (corfu-auto-prefix 3) ;; also only for words 3 or more + (defun corfu-lsp-setup () + (setq-local completion-styles '(orderless flex hotfuzz) + completion-category-defaults nil)) + (add-hook 'lsp-mode-hook #'corfu-lsp-setup) + + :init + (global-corfu-mode 1)) + +;; I am a nerd +(use-package nerd-icons + :ensure t + :config + (require 'treemacs-nerd-icons) + (treemacs-load-theme "nerd-icons") + (require 'nerd-icons-dired) + (add-hook 'dired-mode-hook #'nerd-icons-dired-mode) + (require 'nerd-icons-completion) + (nerd-icons-completion-mode) + (require 'nerd-icons-corfu) + (add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter)) + +(use-package magit-file-icons + :ensure t + :after magit + :init + (magit-file-icons-mode 1) + :custom + ;; These are the default values: + (magit-file-icons-enable-diff-file-section-icons t) + (magit-file-icons-enable-untracked-icons t) + (magit-file-icons-enable-diffstat-icons t)) + +;; Theme and modeline +(use-package doom-themes + :ensure t + :config + (setq doom-themes-enable-bold t + doom-themes-enable-italic t + custom-theme-directory "~/.config/emacs/themes") + (load-theme 'doom-stylix t)) + +(use-package doom-modeline + :ensure t + :init (doom-modeline-mode 1) + :custom ((doom-modeline-height 15))) + +;; Dashboard +(use-package dashboard + :ensure t + :config + (setq dashboard-banner-logo-title "Welcome to Nix Emacs") + (setq dashboard-startup-banner 2) + (setq dashboard-set-heading-icons t) + (setq dashboard-set-file-icons t) + (setq dashboard-set-navigator t) + (setq dashboard-items '()) + (setq dashboard-center-content t) + (setq dashboard-icon-type 'nerd-icons) ;; use `nerd-icons' package + (setq dashboard-footer-messages '("Here to do customizing, or actual work?" + "M-x insert-inspiring-message" + "My software never has bugs. It just develops random features." + "Dad, what are clouds made of? Linux servers, mostly." + "There is no place like ~" + "~ sweet ~" + "sudo chown -R us ./allyourbase" + "I’ll tell you a DNS joke but it could take 24 hours for everyone to get it." + "I'd tell you a UDP joke, but you might not get it." + "I'll tell you a TCP joke. Do you want to hear it?")) + (setq dashboard-footer-icon + (nerd-icons-codicon "nf-cod-vm" + :height 1.0 + :v-adjust 0 + :face 'font-lock-keyword-face)) + (setq initial-buffer-choice (lambda () (get-buffer-create dashboard-buffer-name)))) + +;; Setup treesitter +(require 'treesit) +(treesit-major-mode-setup) + +;; use-package +(require 'use-package) +(setq use-package-always-ensure t) + +;; command-log-mode +(use-package command-log-mode) + +;; Enable vertico +(use-package vertico + :custom + (vertico-scroll-margin 0) ;; Different scroll margin + (vertico-count 20) ;; Show more candidates + (vertico-resize nil) ;; Grow and shrink the Vertico minibuffer + (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' + :init + (vertico-mode)) + +;; Completion +(use-package hotfuzz) +(use-package orderless) +(setq completion-styles '(orderless flex hotfuzz)) + +;; Org mode config +(require 'org) + +;; Heading styles +(set-face-attribute 'outline-1 nil :height 195 :foreground (nth 1 (nth 14 doom-themes--colors))) +(set-face-attribute 'outline-2 nil :height 188 :foreground (nth 1 (nth 15 doom-themes--colors))) +(set-face-attribute 'outline-3 nil :height 180 :foreground (nth 1 (nth 19 doom-themes--colors))) +(set-face-attribute 'outline-4 nil :height 173 :foreground (nth 1 (nth 23 doom-themes--colors))) +(set-face-attribute 'outline-5 nil :height 173 :foreground (nth 1 (nth 24 doom-themes--colors))) +(set-face-attribute 'outline-6 nil :height 165 :foreground (nth 1 (nth 16 doom-themes--colors))) +(set-face-attribute 'outline-7 nil :height 160 :foreground (nth 1 (nth 18 doom-themes--colors))) +(set-face-attribute 'outline-8 nil :height 155 :foreground (nth 1 (nth 11 doom-themes--colors))) + +(require 'org-modern) + +;; Add frame borders and window dividers +(modify-all-frames-parameters + '((right-divider-width . 20) + (left-divider-width . 20) + (internal-border-width . 20))) +(set-face-background 'fringe (face-attribute 'default :background)) + +(setq + ;; Edit settings + org-auto-align-tags nil + org-tags-column 0 + org-catch-invisible-edits 'show-and-error + org-special-ctrl-a/e t + org-insert-heading-respect-content t + + ;; Org styling, hide markup etc. + org-hide-emphasis-markers t + org-pretty-entities t) + +;; Ellipsis styling +(setq org-ellipsis "…") +(set-face-attribute 'org-ellipsis nil :inherit 'default :box nil) + +;; Star styling +(setq org-modern-star 'replace) + +(global-org-modern-mode) + +;; Olivetti +(use-package olivetti + :config + (setq olivetti-style 'fancy + olivetti-margin-width 100) + (setq-default olivetti-body-width 100) + (add-hook 'org-mode-hook 'olivetti-mode)) From b2b9941c1ad72dcd79e74ab449a03333cf69fdaf Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 17:10:08 -0600 Subject: [PATCH 039/317] bandaid for https://github.com/NixOS/nix/issues/10202 --- user/app/git/git.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/user/app/git/git.nix b/user/app/git/git.nix index 081db59..20600cd 100644 --- a/user/app/git/git.nix +++ b/user/app/git/git.nix @@ -8,6 +8,7 @@ programs.git.extraConfig = { init.defaultBranch = "main"; safe.directory = [ ("/home/" + userSettings.username + "/.dotfiles") - ("/home/" + userSettings.username + "/.dotfiles/.git") ]; + ("/home/" + userSettings.username + "/.dotfiles/.git") + ("/home/" + userSettings.username + "/.cache/nix/tarball-cache") ]; }; } From fdbc49fac87cab74af542e79b2b607de751e33e9 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 20:10:44 -0600 Subject: [PATCH 040/317] Updated system --- flake.lock | 88 +++++++++++++++++++++--------------------- profiles/work/home.nix | 6 ++- 2 files changed, 48 insertions(+), 46 deletions(-) diff --git a/flake.lock b/flake.lock index 25cc561..2e27d80 100644 --- a/flake.lock +++ b/flake.lock @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1732830716, - "narHash": "sha256-m0OjiN6c6zHg4bqoQIhS4tFAeT8dhrVHBd4NB9sE21o=", + "lastModified": 1733495843, + "narHash": "sha256-rPK7Y7Upwdus0fCK4OZLpgx9MwRt6mWP8YjNmHA9vJ8=", "owner": "StevenBlack", "repo": "hosts", - "rev": "287c6ea90faf977dd3fded2cf1042542f1d5238c", + "rev": "690c486fa42bc4db25150adb34ea913ce6a25548", "type": "github" }, "original": { @@ -123,11 +123,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1733319615, - "narHash": "sha256-QWQPdJiC6ab3J2rThuLoFJivkEOvMNkzOIn5qJLhIQg=", + "lastModified": 1733580619, + "narHash": "sha256-iNVR4d6J6srb4d8+Uf8I+xz1t4w/OJGbpP7XF3Up/xQ=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "d6a32b476215dbe915ccfa123fcd16d59d21a2c6", + "rev": "8b18bd2da34d17b13fc3e4345fbf554f888ef42f", "type": "github" }, "original": { @@ -145,11 +145,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1732986626, - "narHash": "sha256-mm0VxNLhlcfX4to/Lv2tDPYWnQ+Py13Hq3cHc+RT9YI=", + "lastModified": 1733591475, + "narHash": "sha256-xdGGGZ8ZsTr6XbPb1N8pnK73hugkdlPwM5Iz8umcXTY=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "d902534f27fea8439422e55c435d4b4bbf8a2472", + "rev": "f583e3691e30db811c8a5b9d45cdf433dba1bccd", "type": "github" }, "original": { @@ -266,16 +266,16 @@ "gnome-shell": { "flake": false, "locked": { - "lastModified": 1713702291, - "narHash": "sha256-zYP1ehjtcV8fo+c+JFfkAqktZ384Y+y779fzmR9lQAU=", + "lastModified": 1732369855, + "narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=", "owner": "GNOME", "repo": "gnome-shell", - "rev": "0d0aadf013f78a7f7f1dc984d0d812971864b934", + "rev": "dadd58f630eeea41d645ee225a63f719390829dc", "type": "github" }, "original": { "owner": "GNOME", - "ref": "46.1", + "ref": "47.2", "repo": "gnome-shell", "type": "github" } @@ -288,11 +288,11 @@ ] }, "locked": { - "lastModified": 1733175814, - "narHash": "sha256-zFOtOaqjzZfPMsm1mwu98syv3y+jziAq5DfWygaMtLg=", + "lastModified": 1733484277, + "narHash": "sha256-i5ay20XsvpW91N4URET/nOc0VQWOAd4c4vbqYtcH8Rc=", "owner": "nix-community", "repo": "home-manager", - "rev": "bf23fe41082aa0289c209169302afd3397092f22", + "rev": "d00c6f6d0ad16d598bf7e2956f52c1d9d5de3c3a", "type": "github" }, "original": { @@ -329,11 +329,11 @@ ] }, "locked": { - "lastModified": 1732884235, - "narHash": "sha256-r8j6R3nrvwbT1aUp4EPQ1KC7gm0pu9VcV1aNaB+XG6Q=", + "lastModified": 1733484277, + "narHash": "sha256-i5ay20XsvpW91N4URET/nOc0VQWOAd4c4vbqYtcH8Rc=", "owner": "nix-community", "repo": "home-manager", - "rev": "819f682269f4e002884702b87e445c82840c68f2", + "rev": "d00c6f6d0ad16d598bf7e2956f52c1d9d5de3c3a", "type": "github" }, "original": { @@ -351,11 +351,11 @@ ] }, "locked": { - "lastModified": 1732482255, - "narHash": "sha256-GUffLwzawz5WRVfWaWCg78n/HrBJrOG7QadFY6rtV8A=", + "lastModified": 1733085484, + "narHash": "sha256-dVmNuUajnU18oHzBQWZm1BQtANCHaqNuxTHZQ+GN0r8=", "owner": "nix-community", "repo": "home-manager", - "rev": "a9953635d7f34e7358d5189751110f87e3ac17da", + "rev": "c1fee8d4a60b89cae12b288ba9dbc608ff298163", "type": "github" }, "original": { @@ -698,11 +698,11 @@ ] }, "locked": { - "lastModified": 1732739177, - "narHash": "sha256-iL32+TA/8geCzcL1r3uthrH/GPvbUak5QE++WJUkaiI=", + "lastModified": 1733491721, + "narHash": "sha256-n4fTKTYXeGRngeanNDxSxbuWSRCQ6l74IwOBlqp8dcw=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "8d7b2149e618696d5100c2683af1ffa893f02a75", + "rev": "0f415721ee427270bc078ef3a5ba2a308d47461f", "type": "github" }, "original": { @@ -790,11 +790,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733212471, - "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=", + "lastModified": 1733392399, + "narHash": "sha256-kEsTJTUQfQFIJOcLYFt/RvNxIK653ZkTBIs4DG+cBns=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776", + "rev": "d0797a04b81caeae77bcff10a9dde78bc17f5661", "type": "github" }, "original": { @@ -838,16 +838,16 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1732749044, - "narHash": "sha256-T38FQOg0BV5M8FN1712fovzNakSOENEYs+CSkg31C9Y=", + "lastModified": 1733412085, + "narHash": "sha256-FillH0qdWDt/nlO6ED7h4cmN+G9uXwGjwmCnHs0QVYM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0c5b4ecbed5b155b705336aa96d878e55acd8685", + "rev": "4dc2fc4e62dbf62b84132fe526356fbac7b03541", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-24.05", + "ref": "nixos-24.11", "repo": "nixpkgs", "type": "github" } @@ -870,11 +870,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1732824227, - "narHash": "sha256-fYNXgpu1AEeLyd3fQt4Ym0tcVP7cdJ8wRoqJ+CtTRyY=", + "lastModified": 1733412085, + "narHash": "sha256-FillH0qdWDt/nlO6ED7h4cmN+G9uXwGjwmCnHs0QVYM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c71ad5c34d51dcbda4c15f44ea4e4aa6bb6ac1e9", + "rev": "4dc2fc4e62dbf62b84132fe526356fbac7b03541", "type": "github" }, "original": { @@ -885,11 +885,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1732837521, - "narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=", + "lastModified": 1733392399, + "narHash": "sha256-kEsTJTUQfQFIJOcLYFt/RvNxIK653ZkTBIs4DG+cBns=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370", + "rev": "d0797a04b81caeae77bcff10a9dde78bc17f5661", "type": "github" }, "original": { @@ -1032,11 +1032,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1732933841, - "narHash": "sha256-dge02pUSe2QeC/B3PriA0R8eAX+EU3aDoXj9FcS3XDw=", + "lastModified": 1733538766, + "narHash": "sha256-FEDfBpM82XGdHDbLDJC4lV+QXSVN1rERt1MqtBGJZds=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "c65e91d4a33abc3bc4a892d3c5b5b378bad64ea1", + "rev": "66526479b295ad238843a8a7367d2da7ec102757", "type": "github" }, "original": { @@ -1078,11 +1078,11 @@ "tinted-tmux": "tinted-tmux" }, "locked": { - "lastModified": 1732993760, - "narHash": "sha256-t1J6wgzGjvvGNfdd0ei8HnZf9sTw+SpvCNAX0i6Qgwc=", + "lastModified": 1733510476, + "narHash": "sha256-RH/8yIuo+fNLCjQ6e1mnXwmmxymjvfWC9JcbDuIA8TM=", "owner": "danth", "repo": "stylix", - "rev": "d13ffb381c83b6139b9d67feff7addf18f8408fe", + "rev": "e309d64fe7f203274a7913e1d2b74307d15ba122", "type": "github" }, "original": { diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 737eff5..00774db 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -122,9 +122,11 @@ libresprite (pkgs.appimageTools.wrapType2 { name = "Cura"; + pname = "Cura"; + version = "5.9.0"; src = fetchurl { - url = "https://github.com/Ultimaker/Cura/releases/download/5.8.1/UltiMaker-Cura-5.8.1-linux-X64.AppImage"; - hash = "sha256-VLd+V00LhRZYplZbKkEp4DXsqAhA9WLQhF933QAZRX0="; + url = "https://github.com/Ultimaker/Cura/releases/download/5.9.0/UltiMaker-Cura-5.9.0-linux-X64.AppImage"; + hash = "sha256-STtVeM4Zs+PVSRO3cI0LxnjRDhOxSlttZF+2RIXnAp4="; }; extraPkgs = pkgs: with pkgs; []; }) From 710df8920ff4d4cb4d74307f10fadad0c269b4fe Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 23:25:01 -0600 Subject: [PATCH 041/317] Need this to operate attic --- profiles/homelab/base.nix | 1 + profiles/work/configuration.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/profiles/homelab/base.nix b/profiles/homelab/base.nix index 277c359..4666e51 100644 --- a/profiles/homelab/base.nix +++ b/profiles/homelab/base.nix @@ -74,6 +74,7 @@ rsnapshot cryptsetup gocryptfs + attic-client ]; programs.fuse.userAllowOther = true; diff --git a/profiles/work/configuration.nix b/profiles/work/configuration.nix index 8182c02..da03717 100644 --- a/profiles/work/configuration.nix +++ b/profiles/work/configuration.nix @@ -131,6 +131,7 @@ cryptsetup home-manager wpa_supplicant + attic-client (pkgs.writeScriptBin "comma" '' if [ "$#" = 0 ]; then echo "usage: comma PKGNAME... [EXECUTABLE]"; From e4d03a83007440b1198115c478b6ba18a1fa3ac1 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 23:41:48 -0600 Subject: [PATCH 042/317] Need projectile grep :| --- user/app/emacs/init.el | 1 + 1 file changed, 1 insertion(+) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index de5f9a8..26c8707 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -192,6 +192,7 @@ (evil-define-key 'motion 'global (kbd "pp") 'projectile-switch-project) (evil-define-key 'motion 'global (kbd "pf") 'projectile-find-file) (evil-define-key 'motion 'global (kbd "pa") 'projectile-add-known-project) + (evil-define-key 'motion 'global (kbd "/") 'projectile-grep) (evil-define-key 'motion 'global (kbd "gg") 'magit-status) ;; Describe keybinds From 245c97ab1d6f0c887fd8e53d1adcba5b5e6b6dbc Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Dec 2024 23:42:53 -0600 Subject: [PATCH 043/317] Declarative substituter settings for user --- profiles/work/home.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 00774db..53f942b 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -27,6 +27,16 @@ ]; nix.package = pkgs.nix; + nix.settings = { + extra-substituters = [ + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; + trusted-public-keys = [ + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + }; home.stateVersion = "22.11"; # Please read the comment before changing. From 9557a25db1a66a52170644142b175588b4b360b4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 8 Dec 2024 10:06:16 -0600 Subject: [PATCH 044/317] Get rid of annoying pasystray notifications --- profiles/work/home.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 53f942b..d6222d0 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -251,5 +251,6 @@ }; services.pasystray.enable = true; + services.pasystray.extraOptions = [ "--no-notify" ]; } From c68f5cdc15abbcf53426f359647a475d83d59005 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 8 Dec 2024 10:09:22 -0600 Subject: [PATCH 045/317] Hopefully this fixes substituters? --- profiles/work/configuration.nix | 6 ++---- profiles/work/home.nix | 4 +++- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/profiles/work/configuration.nix b/profiles/work/configuration.nix index da03717..73e6aec 100644 --- a/profiles/work/configuration.nix +++ b/profiles/work/configuration.nix @@ -41,14 +41,12 @@ # Substituters nix.settings = { substituters = [ - "https://hyprland.cachix.org" - "https://nix-community.cachix.org" - ]; - trusted-substituters = [ + "https://cache.nixos.org" "https://hyprland.cachix.org" "https://nix-community.cachix.org" ]; trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; diff --git a/profiles/work/home.nix b/profiles/work/home.nix index d6222d0..320ac0a 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -28,11 +28,13 @@ nix.package = pkgs.nix; nix.settings = { - extra-substituters = [ + substituters = [ + "https://cache.nixos.org" "https://hyprland.cachix.org" "https://nix-community.cachix.org" ]; trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; From 58ba3f53c46f2cb21063ac6bc2df82cc5c7a60d4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 14 Dec 2024 10:54:55 -0600 Subject: [PATCH 046/317] Better and declarative godot config --- profiles/work/home.nix | 2 +- user/app/godot/default.nix | 181 ++++++++++++++++++++++++++++++++++ user/wm/hyprland/hyprland.nix | 7 ++ 3 files changed, 189 insertions(+), 1 deletion(-) create mode 100644 user/app/godot/default.nix diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 320ac0a..8337081 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -22,7 +22,7 @@ #../../user/app/flatpak/flatpak.nix # Flatpaks ../../user/style/stylix.nix # Styling and themes for my apps ../../user/lang/cc/cc.nix # C and C++ tools - ../../user/lang/godot/godot.nix # Game development + ../../user/app/godot # Game development ../../user/hardware/bluetooth.nix # Bluetooth ]; diff --git a/user/app/godot/default.nix b/user/app/godot/default.nix new file mode 100644 index 0000000..777ebac --- /dev/null +++ b/user/app/godot/default.nix @@ -0,0 +1,181 @@ +{ config, pkgs, userSettings, ... }: +{ + home.packages = with pkgs; [ + godot_4 + ]; + home.file.".config/godot/editor_settings-4.3.tres".text = '' + [gd_resource type="EditorSettings" format=3] + + [resource] + interface/editor/separate_distraction_mode = true + interface/theme/preset = "Custom" + interface/theme/spacing_preset = "Custom" + interface/theme/base_color = Color(''+config.lib.stylix.colors.base00-dec-r+'',''+config.lib.stylix.colors.base00-dec-g+'', ''+config.lib.stylix.colors.base00-dec-b+'', 0.8) + + interface/theme/accent_color = Color(''+config.lib.stylix.colors.base08-dec-r+'',''+config.lib.stylix.colors.base08-dec-g+'', ''+config.lib.stylix.colors.base08-dec-b+'', 1) + + interface/theme/contrast = 0.3 + interface/theme/icon_saturation = 1.55 + interface/theme/relationship_line_opacity = 0.35 + interface/theme/border_size = 1 + interface/theme/corner_radius = 6 + interface/theme/additional_spacing = 1 + interface/touchscreen/enable_pan_and_scale_gestures = true + interface/touchscreen/scale_gizmo_handles = 2.0 + interface/multi_window/enable = false + interface/multi_window/restore_windows_on_load = false + filesystem/external_programs/raster_image_editor = "krita" + filesystem/external_programs/vector_image_editor = "inkscape" + filesystem/external_programs/3d_model_editor = "blender" + filesystem/external_programs/terminal_emulator = "''+userSettings.term+''" + + filesystem/directories/default_project_path = "/home/''+userSettings.username+''/Projects" + + text_editor/theme/highlighting/symbol_color = Color(0.67, 0.79, 1, 1) + text_editor/theme/highlighting/keyword_color = Color(1, 0.44, 0.52, 1) + text_editor/theme/highlighting/control_flow_keyword_color = Color(1, 0.55, 0.8, 1) + text_editor/theme/highlighting/base_type_color = Color(0.26, 1, 0.76, 1) + text_editor/theme/highlighting/engine_type_color = Color(0.56, 1, 0.86, 1) + text_editor/theme/highlighting/user_type_color = Color(0.78, 1, 0.93, 1) + text_editor/theme/highlighting/comment_color = Color(0.764706, 0.769608, 0.77451, 0.5) + text_editor/theme/highlighting/doc_comment_color = Color(0.6, 0.7, 0.8, 0.8) + text_editor/theme/highlighting/string_color = Color(1, 0.93, 0.63, 1) + text_editor/theme/highlighting/background_color = Color(0.0323529, 0.0431373, 0.0539216, 1) + text_editor/theme/highlighting/completion_background_color = Color(0.0588235, 0.0784314, 0.0980392, 1) + text_editor/theme/highlighting/completion_selected_color = Color(1, 1, 1, 0.07) + text_editor/theme/highlighting/completion_existing_color = Color(1, 1, 1, 0.14) + text_editor/theme/highlighting/completion_font_color = Color(0.764706, 0.769608, 0.77451, 1) + text_editor/theme/highlighting/text_color = Color(0.764706, 0.769608, 0.77451, 1) + text_editor/theme/highlighting/line_number_color = Color(0.764706, 0.769608, 0.77451, 0.5) + text_editor/theme/highlighting/safe_line_number_color = Color(0.764706, 0.923529, 0.77451, 0.75) + text_editor/theme/highlighting/caret_color = Color(1, 1, 1, 1) + text_editor/theme/highlighting/selection_color = Color(0.941176, 0.443137, 0.470588, 0.4) + text_editor/theme/highlighting/brace_mismatch_color = Color(1, 0.47, 0.42, 1) + text_editor/theme/highlighting/current_line_color = Color(1, 1, 1, 0.07) + text_editor/theme/highlighting/line_length_guideline_color = Color(0.0588235, 0.0784314, 0.0980392, 1) + text_editor/theme/highlighting/word_highlighted_color = Color(1, 1, 1, 0.07) + text_editor/theme/highlighting/number_color = Color(0.63, 1, 0.88, 1) + text_editor/theme/highlighting/function_color = Color(0.34, 0.7, 1, 1) + text_editor/theme/highlighting/member_variable_color = Color(0.736, 0.88, 1, 1) + text_editor/theme/highlighting/mark_color = Color(1, 0.47, 0.42, 0.3) + text_editor/theme/highlighting/breakpoint_color = Color(1, 0.47, 0.42, 1) + text_editor/theme/highlighting/code_folding_color = Color(1, 1, 1, 0.27) + text_editor/theme/highlighting/search_result_color = Color(1, 1, 1, 0.07) + text_editor/appearance/whitespace/draw_tabs = false + text_editor/behavior/indent/type = 1 + text_editor/behavior/indent/size = 2 + text_editor/behavior/files/trim_trailing_whitespace_on_save = true + editors/panning/2d_editor_panning_scheme = 1 + editors/panning/sub_editors_panning_scheme = 1 + editors/panning/simple_panning = true + project_manager/directory_naming_convention = 3 + asset_library/available_urls = { + "godotengine.org (Official)": "https://godotengine.org/asset-library/api" + } + asset_library/use_threads = true + export/android/java_sdk_path = "" + export/android/android_sdk_path = "" + export/android/debug_keystore = "/home/emmet/.local/share/godot/keystores/debug.keystore" + export/android/debug_keystore_user = "androiddebugkey" + export/android/debug_keystore_pass = "android" + export/android/force_system_user = false + export/android/shutdown_adb_on_exit = true + export/android/one_click_deploy_clear_previous_install = false + export/android/use_wifi_for_remote_debug = false + export/android/wifi_remote_debug_host = "localhost" + export/macos/rcodesign = "" + export/web/http_host = "localhost" + export/web/http_port = 8060 + export/web/use_tls = false + export/web/tls_key = "" + export/web/tls_certificate = "" + export/windows/rcedit = "" + export/windows/osslsigncode = "" + export/windows/wine = "/home/emmet/.nix-profile/bin/wine64" + _default_feature_profile = "" + interface/editors/show_scene_tree_root_selection = true + interface/editors/derive_script_globals_by_name = true + docks/scene_tree/ask_before_deleting_related_animation_tracks = true + _use_favorites_root_selection = false + filesystem/file_server/port = 6010 + filesystem/file_server/password = "" + editors/3d/manipulator_gizmo_size = 80 + editors/3d/manipulator_gizmo_opacity = 0.9 + editors/3d/navigation/show_viewport_rotation_gizmo = true + editors/3d/navigation/show_viewport_navigation_gizmo = false + text_editor/behavior/files/auto_reload_and_parse_scripts_on_save = true + text_editor/behavior/files/open_dominant_script_on_scene_change = false + text_editor/external/use_external_editor = false + text_editor/external/exec_path = "" + text_editor/script_list/script_temperature_enabled = true + text_editor/script_list/script_temperature_history_size = 15 + text_editor/script_list/group_help_pages = true + text_editor/script_list/sort_scripts_by = 0 + text_editor/script_list/list_script_names_as = 0 + text_editor/external/exec_flags = "{file}" + version_control/username = "" + version_control/ssh_public_key_path = "" + version_control/ssh_private_key_path = "" + editors/bone_mapper/handle_colors/unset = Color(0.3, 0.3, 0.3, 1) + editors/bone_mapper/handle_colors/set = Color(0.1, 0.6, 0.25, 1) + editors/bone_mapper/handle_colors/missing = Color(0.8, 0.2, 0.8, 1) + editors/bone_mapper/handle_colors/error = Color(0.8, 0.2, 0.2, 1) + network/debug_adapter/remote_port = 6006 + network/debug_adapter/request_timeout = 1000 + network/debug_adapter/sync_breakpoints = false + editors/3d_gizmos/gizmo_settings/path3d_tilt_disk_size = 0.8 + editors/3d_gizmos/gizmo_colors/path_tilt = Color(1, 1, 0.4, 0.9) + editors/3d_gizmos/gizmo_colors/skeleton = Color(1, 0.8, 0.4, 1) + editors/3d_gizmos/gizmo_colors/selected_bone = Color(0.8, 0.3, 0, 1) + editors/3d_gizmos/gizmo_settings/bone_axis_length = 0.1 + editors/3d_gizmos/gizmo_settings/bone_shape = 1 + editors/3d_gizmos/gizmo_colors/csg = Color(0, 0.4, 1, 0.15) + editors/grid_map/editor_side = 1 + editors/grid_map/palette_min_width = 230 + editors/grid_map/preview_size = 64 + export/ssh/ssh = "" + export/ssh/scp = "" + network/language_server/remote_host = "127.0.0.1" + network/language_server/remote_port = 6005 + network/language_server/enable_smart_resolve = true + network/language_server/show_native_symbols_in_editor = false + network/language_server/use_thread = false + network/language_server/poll_limit_usec = 100000 + text_editor/theme/highlighting/gdscript/function_definition_color = Color(0.4, 0.9, 1, 1) + text_editor/theme/highlighting/gdscript/global_function_color = Color(0.64, 0.64, 0.96, 1) + text_editor/theme/highlighting/gdscript/node_path_color = Color(0.72, 0.77, 0.49, 1) + text_editor/theme/highlighting/gdscript/node_reference_color = Color(0.39, 0.76, 0.35, 1) + text_editor/theme/highlighting/gdscript/annotation_color = Color(1, 0.7, 0.45, 1) + text_editor/theme/highlighting/gdscript/string_name_color = Color(1, 0.76, 0.65, 1) + text_editor/theme/highlighting/comment_markers/critical_color = Color(0.77, 0.35, 0.35, 1) + text_editor/theme/highlighting/comment_markers/warning_color = Color(0.72, 0.61, 0.48, 1) + text_editor/theme/highlighting/comment_markers/notice_color = Color(0.56, 0.67, 0.51, 1) + text_editor/theme/highlighting/comment_markers/critical_list = "ALERT,ATTENTION,CAUTION,CRITICAL,DANGER,SECURITY" + text_editor/theme/highlighting/comment_markers/warning_list = "BUG,DEPRECATED,FIXME,HACK,TASK,TBD,TODO,WARNING" + text_editor/theme/highlighting/comment_markers/notice_list = "INFO,NOTE,NOTICE,TEST,TESTING" + editors/3d_gizmos/gizmo_colors/camera = Color(0.8, 0.4, 0.8, 1) + editors/3d_gizmos/gizmo_colors/stream_player_3d = Color(0.4, 0.8, 1, 1) + editors/3d_gizmos/gizmo_colors/occluder = Color(0.8, 0.5, 1, 1) + editors/3d_gizmos/gizmo_colors/visibility_notifier = Color(0.8, 0.5, 0.7, 1) + editors/3d_gizmos/gizmo_colors/particles = Color(0.8, 0.7, 0.4, 1) + editors/3d_gizmos/gizmo_colors/particle_attractor = Color(1, 0.7, 0.5, 1) + editors/3d_gizmos/gizmo_colors/particle_collision = Color(0.5, 0.7, 1, 1) + editors/3d_gizmos/gizmo_colors/reflection_probe = Color(0.6, 1, 0.5, 1) + editors/3d_gizmos/gizmo_colors/decal = Color(0.6, 0.5, 1, 1) + editors/3d_gizmos/gizmo_colors/voxel_gi = Color(0.5, 1, 0.6, 1) + editors/3d_gizmos/gizmo_colors/lightmap_lines = Color(0.5, 0.6, 1, 1) + editors/3d_gizmos/gizmo_colors/lightprobe_lines = Color(0.5, 0.6, 1, 1) + editors/3d_gizmos/gizmo_colors/joint_body_a = Color(0.6, 0.8, 1, 1) + editors/3d_gizmos/gizmo_colors/joint_body_b = Color(0.6, 0.9, 1, 1) + editors/3d_gizmos/gizmo_colors/fog_volume = Color(0.5, 0.7, 1, 1) + text_editor/help/sort_functions_alphabetically = true + metadata/script_setup_templates_dictionary = { + "AnimatedSprite2D": "0NodeDefault", + "Area2D": "0NodeDefault", + "CanvasLayer": "0NodeDefault", + "Node": "0NodeDefault", + "Node2D": "0NodeDefault" + } + metadata/export_template_download_directory = "/home/emmet/.cache/godot" + ''; +} diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index be8351b..cd66a78 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -302,6 +302,13 @@ in windowrulev2 = float,title:(Create new document) windowrulev2 = size 86% 85%,title:(Create new document) windowrulev2 = center,title:(Create new document) + windowrulev2 = size 86% 85%,title:(Create new document) + windowrulev2 = float,title:(Create New Node) + windowrulev2 = size 70% 70%,title:(Create New Node) + windowrulev2 = center,title:(Create New Node) + windowrulev2 = float,title:(Resource) + windowrulev2 = size 70% 70%,title:(Resource) + windowrulev2 = center,title:(Resource) windowrulev2 = tile,title:(Godot) windowrulev2 = opacity 0.80,title:ORUI From 43bfdff4c8839051b75a95b24ad6e9e275f30957 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 14 Dec 2024 17:29:25 -0600 Subject: [PATCH 047/317] Some more emacs config updates --- user/app/emacs/default.nix | 2 +- user/app/emacs/init.el | 87 ++++++++++++++++++++++++++++++++++++-- 2 files changed, 85 insertions(+), 4 deletions(-) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 2012d62..840b70c 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -14,7 +14,7 @@ nerd-icons nerd-icons-dired nerd-icons-corfu nerd-icons-ibuffer nerd-icons-completion treemacs-nerd-icons - yasnippet + yasnippet shackle projectile treemacs treemacs-projectile treesit-grammars.with-all-grammars magit magit-file-icons diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 26c8707..f394267 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -119,9 +119,6 @@ scroll-preserve-screen-position nil redisplay-skip-fontification-on-input t) - ;; Visual lines make more sense - (global-visual-line-mode 1) - ;; Line numbers (setq display-line-numbers-type 'visual line-move-visual t) @@ -365,6 +362,37 @@ :init (vertico-mode)) +;; Shackle +;; https://github.com/wasamasa/shackle +(use-package shackle + :config + (progn + (setq shackle-lighter "") + (setq shackle-select-reused-windows nil) ; default nil + (setq shackle-default-alignment 'below) ; default below + (setq shackle-default-size 0.4) ; default 0.5 + + (setq shackle-rules + ;; CONDITION(:regexp) :select :inhibit-window-quit :size+:align|:other :same|:popup + '((compilation-mode :select nil ) + ("*undo-tree*" :size 0.25 :align right) + ("*eshell*" :select t :other t ) + ("*Shell Command Output*" :select nil ) + ("\\*Async Shell.*\\*" :regexp t :ignore t ) + (occur-mode :select nil :align t ) + ("*Help*" :select t :inhibit-window-quit t :size 0.3 :align below ) + ("*Completions*" :size 0.3 :align t ) + ("*Messages*" :select nil :inhibit-window-quit t :other t ) + ("\\*[Wo]*Man.*\\*" :regexp t :select t :inhibit-window-quit t :other t ) + ("\\*poporg.*\\*" :regexp t :select t :other t ) + ("\\`\\*helm.*?\\*\\'" :regexp t :size 0.3 :align t ) + ("*Calendar*" :select t :size 0.3 :align below) + ("*info*" :select t :inhibit-window-quit t :same t) + (magit-status-mode :select t :inhibit-window-quit t :same t) + (magit-log-mode :select t :inhibit-window-quit t :same t) + )) + (shackle-mode 1))) + ;; Completion (use-package hotfuzz) (use-package orderless) @@ -373,6 +401,59 @@ ;; Org mode config (require 'org) +;; Better cycling +;; https://github.com/doomemacs/doomemacs/blob/master/modules/lang/org/autoload/org.el +(defun +org-cycle-only-current-subtree-h (&optional arg) + "Toggle the local fold at the point, and no deeper. +`org-cycle's standard behavior is to cycle between three levels: collapsed, +subtree and whole document. This is slow, especially in larger org buffer. Most +of the time I just want to peek into the current subtree -- at most, expand +*only* the current subtree. + +All my (performant) foldings needs are met between this and `org-show-subtree' +(on zO for evil users), and `org-cycle' on shift-TAB if I need it." + (interactive "P") + (unless (or (eq this-command 'org-shifttab) + (and (bound-and-true-p org-cdlatex-mode) + (or (org-inside-LaTeX-fragment-p) + (org-inside-latex-macro-p)))) + (save-excursion + (org-beginning-of-line) + (let (invisible-p) + (when (and (org-at-heading-p) + (or org-cycle-open-archived-trees + (not (member org-archive-tag (org-get-tags)))) + (or (not arg) + (setq invisible-p + (memq (get-char-property (line-end-position) + 'invisible) + '(outline org-fold-outline))))) + (unless invisible-p + (setq org-cycle-subtree-status 'subtree)) + (org-cycle-internal-local) + t))))) +(defalias #'+org/toggle-fold #'+org-cycle-only-current-subtree-h) +(add-hook 'org-tab-first-hook + ;; Only fold the current tree, rather than recursively + #'+org-cycle-only-current-subtree-h) + +;; Line wrapping management +(defun truncate-lines-off () + (interactive) + (toggle-truncate-lines 0)) +(defun truncate-lines-on () + (interactive) + (toggle-truncate-lines 1)) +(defun visual-line-mode-off () + (interactive) + (visual-line-mode 0)) +(add-hook 'org-mode-hook 'truncate-lines-off) +(add-hook 'markdown-mode-hook 'truncate-lines-off) +(add-hook 'org-mode-hook 'visual-line-mode) +(add-hook 'markdown-mode-hook 'visual-line-mode) +(add-hook 'prog-mode 'truncate-lines-on) +(add-hook 'prog-mode 'visual-line-mode-off) + ;; Heading styles (set-face-attribute 'outline-1 nil :height 195 :foreground (nth 1 (nth 14 doom-themes--colors))) (set-face-attribute 'outline-2 nil :height 188 :foreground (nth 1 (nth 15 doom-themes--colors))) From 84fd06bfb7f4b9658d46e7889b4ab2f4bfb5f80c Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 14 Dec 2024 17:37:58 -0600 Subject: [PATCH 048/317] Minor emacs config fixes --- user/app/emacs/init.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index f394267..083f685 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -118,6 +118,7 @@ scroll-conservatively 101 scroll-preserve-screen-position nil redisplay-skip-fontification-on-input t) + (pixel-scroll-precision-mode 1) ;; Line numbers (setq display-line-numbers-type 'visual @@ -501,3 +502,6 @@ All my (performant) foldings needs are met between this and `org-show-subtree' olivetti-margin-width 100) (setq-default olivetti-body-width 100) (add-hook 'org-mode-hook 'olivetti-mode)) + +(provide 'init) +;;; init.el ends here From 52d58fcd9008cc5a7fcb77e0acc96f3e3f8fd918 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 14 Dec 2024 20:06:40 -0600 Subject: [PATCH 049/317] Updated system --- flake.lock | 72 +++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/flake.lock b/flake.lock index 2e27d80..c478e28 100644 --- a/flake.lock +++ b/flake.lock @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1733495843, - "narHash": "sha256-rPK7Y7Upwdus0fCK4OZLpgx9MwRt6mWP8YjNmHA9vJ8=", + "lastModified": 1734034611, + "narHash": "sha256-kwutDyGtIzj8X/QMKaZNReSDCcD9ViUdYD2DhEnh8e4=", "owner": "StevenBlack", "repo": "hosts", - "rev": "690c486fa42bc4db25150adb34ea913ce6a25548", + "rev": "e9804b9cd0ccaec1677222c5a97f8ba2eac01118", "type": "github" }, "original": { @@ -123,11 +123,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1733580619, - "narHash": "sha256-iNVR4d6J6srb4d8+Uf8I+xz1t4w/OJGbpP7XF3Up/xQ=", + "lastModified": 1734087975, + "narHash": "sha256-dQYXdA5zGKZ1G5HfPj9Gjf0JRGwXexl/dC9oZW5xOec=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "8b18bd2da34d17b13fc3e4345fbf554f888ef42f", + "rev": "1174e016e517f60a8cfe00f0a5785e4c8bd17b53", "type": "github" }, "original": { @@ -145,11 +145,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1733591475, - "narHash": "sha256-xdGGGZ8ZsTr6XbPb1N8pnK73hugkdlPwM5Iz8umcXTY=", + "lastModified": 1734196468, + "narHash": "sha256-k7jjLR1yRIuWG3+FyETAyYGPea9S6uQUNLJF4clhTeM=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "f583e3691e30db811c8a5b9d45cdf433dba1bccd", + "rev": "e621b2624bed4ada7b997845de10537152ba522b", "type": "github" }, "original": { @@ -288,11 +288,11 @@ ] }, "locked": { - "lastModified": 1733484277, - "narHash": "sha256-i5ay20XsvpW91N4URET/nOc0VQWOAd4c4vbqYtcH8Rc=", + "lastModified": 1733873195, + "narHash": "sha256-dTosiZ3sZ/NKoLKQ++v8nZdEHya0eTNEsaizNp+MUPM=", "owner": "nix-community", "repo": "home-manager", - "rev": "d00c6f6d0ad16d598bf7e2956f52c1d9d5de3c3a", + "rev": "f26aa4b76fb7606127032d33ac73d7d507d82758", "type": "github" }, "original": { @@ -329,11 +329,11 @@ ] }, "locked": { - "lastModified": 1733484277, - "narHash": "sha256-i5ay20XsvpW91N4URET/nOc0VQWOAd4c4vbqYtcH8Rc=", + "lastModified": 1734093295, + "narHash": "sha256-hSwgGpcZtdDsk1dnzA0xj5cNaHgN9A99hRF/mxMtwS4=", "owner": "nix-community", "repo": "home-manager", - "rev": "d00c6f6d0ad16d598bf7e2956f52c1d9d5de3c3a", + "rev": "66c5d8b62818ec4c1edb3e941f55ef78df8141a8", "type": "github" }, "original": { @@ -698,11 +698,11 @@ ] }, "locked": { - "lastModified": 1733491721, - "narHash": "sha256-n4fTKTYXeGRngeanNDxSxbuWSRCQ6l74IwOBlqp8dcw=", + "lastModified": 1733859890, + "narHash": "sha256-HnA6z2l2W38TJBarvWCcxjTjcpz7JrDj2u2umjYFcEo=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "0f415721ee427270bc078ef3a5ba2a308d47461f", + "rev": "77ffd839fd9d60d139dc4a2ad6b6d526f4ad5a17", "type": "github" }, "original": { @@ -790,11 +790,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733392399, - "narHash": "sha256-kEsTJTUQfQFIJOcLYFt/RvNxIK653ZkTBIs4DG+cBns=", + "lastModified": 1733940404, + "narHash": "sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d0797a04b81caeae77bcff10a9dde78bc17f5661", + "rev": "5d67ea6b4b63378b9c13be21e2ec9d1afc921713", "type": "github" }, "original": { @@ -838,11 +838,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1733412085, - "narHash": "sha256-FillH0qdWDt/nlO6ED7h4cmN+G9uXwGjwmCnHs0QVYM=", + "lastModified": 1733808091, + "narHash": "sha256-KWwINTQelKOoQgrXftxoqxmKFZb9pLVfnRvK270nkVk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4dc2fc4e62dbf62b84132fe526356fbac7b03541", + "rev": "a0f3e10d94359665dba45b71b4227b0aeb851f8e", "type": "github" }, "original": { @@ -870,11 +870,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1733412085, - "narHash": "sha256-FillH0qdWDt/nlO6ED7h4cmN+G9uXwGjwmCnHs0QVYM=", + "lastModified": 1734083684, + "narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4dc2fc4e62dbf62b84132fe526356fbac7b03541", + "rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84", "type": "github" }, "original": { @@ -885,11 +885,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1733392399, - "narHash": "sha256-kEsTJTUQfQFIJOcLYFt/RvNxIK653ZkTBIs4DG+cBns=", + "lastModified": 1733940404, + "narHash": "sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d0797a04b81caeae77bcff10a9dde78bc17f5661", + "rev": "5d67ea6b4b63378b9c13be21e2ec9d1afc921713", "type": "github" }, "original": { @@ -1032,11 +1032,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1733538766, - "narHash": "sha256-FEDfBpM82XGdHDbLDJC4lV+QXSVN1rERt1MqtBGJZds=", + "lastModified": 1734143514, + "narHash": "sha256-1+r8wYucn8kp9d/IBW1uYGs31QQmSZURElsiOTx65xM=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "66526479b295ad238843a8a7367d2da7ec102757", + "rev": "81fe5c27cb281a9b796d7ad05ad9179e5bd0c78d", "type": "github" }, "original": { @@ -1078,11 +1078,11 @@ "tinted-tmux": "tinted-tmux" }, "locked": { - "lastModified": 1733510476, - "narHash": "sha256-RH/8yIuo+fNLCjQ6e1mnXwmmxymjvfWC9JcbDuIA8TM=", + "lastModified": 1734110168, + "narHash": "sha256-Q0eeLYn45ErXlqGQyXmLLHGe1mqnUiK0Y9wZRa1SNFI=", "owner": "danth", "repo": "stylix", - "rev": "e309d64fe7f203274a7913e1d2b74307d15ba122", + "rev": "a9e3779949925ef22f5a215c5f49cf520dea30b1", "type": "github" }, "original": { From ee73848f3c19f2ca3b2c8a79066d892c1fb8608c Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 14 Dec 2024 21:42:30 -0600 Subject: [PATCH 050/317] Automatically get non-hm config files out of the way --- sync-user.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sync-user.sh b/sync-user.sh index 83c71d3..7bcfde5 100755 --- a/sync-user.sh +++ b/sync-user.sh @@ -7,6 +7,6 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # Install and build home-manager configuration -home-manager switch --flake $SCRIPT_DIR#user; +home-manager switch --flake $SCRIPT_DIR#user -b bkp; $SCRIPT_DIR/sync-posthook.sh From 63f4f88e1f6686c1c3c55131bcad15cdfe985250 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 14 Dec 2024 21:43:00 -0600 Subject: [PATCH 051/317] Script security fix --- harden.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/harden.sh b/harden.sh index 05477d6..ef13c6d 100755 --- a/harden.sh +++ b/harden.sh @@ -28,9 +28,6 @@ sudo chown 0:0 flake.nix sudo chown 0:0 profiles sudo chown 0:0 profiles/*/configuration.nix; sudo chown 0:0 profiles/homelab/base.nix; -sudo chown 0:0 harden.sh; -sudo chown 0:0 soften.sh; -sudo chown 0:0 install.sh; -sudo chown 0:0 update.sh; +sudo chown 0:0 *.sh; sudo chown 1000:users **/README.org; popd &> /dev/null; From 2d490d087d48910bd9b8732e96e47ced9441cf93 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 14 Dec 2024 21:43:10 -0600 Subject: [PATCH 052/317] Comment about declarative godot config --- user/app/godot/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/user/app/godot/default.nix b/user/app/godot/default.nix index 777ebac..06cf97d 100644 --- a/user/app/godot/default.nix +++ b/user/app/godot/default.nix @@ -3,6 +3,11 @@ home.packages = with pkgs; [ godot_4 ]; + + # ~/.config/godot must be owned by another user in order for this to work + # does not need to be recursively owned, however + + # TODO fix other colors home.file.".config/godot/editor_settings-4.3.tres".text = '' [gd_resource type="EditorSettings" format=3] From 2764e2a86c295c86ee3ee4c353561259de3c5315 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 15 Dec 2024 07:07:21 -0600 Subject: [PATCH 053/317] Removing non-nix neovim config (will make nix neovim config later) --- flake.nix | 5 - profiles/work/home.nix | 1 - system/hardware-configuration.nix | 8 +- user/app/nvim/README.md | 9 -- user/app/nvim/init.lua | 98 -------------------- user/app/nvim/lua/chadrc.lua | 33 ------- user/app/nvim/lua/configs/conform.lua | 15 --- user/app/nvim/lua/configs/lazy.lua | 47 ---------- user/app/nvim/lua/configs/lspconfig.lua | 27 ------ user/app/nvim/lua/mappings.lua | 47 ---------- user/app/nvim/lua/options.lua | 6 -- user/app/nvim/lua/plugins/init.lua | 52 ----------- user/app/nvim/lua/themes/stylix.lua.mustache | 72 -------------- user/app/nvim/nvim.nix | 34 ------- 14 files changed, 4 insertions(+), 450 deletions(-) delete mode 100644 user/app/nvim/README.md delete mode 100644 user/app/nvim/init.lua delete mode 100644 user/app/nvim/lua/chadrc.lua delete mode 100644 user/app/nvim/lua/configs/conform.lua delete mode 100644 user/app/nvim/lua/configs/lazy.lua delete mode 100644 user/app/nvim/lua/configs/lspconfig.lua delete mode 100644 user/app/nvim/lua/mappings.lua delete mode 100644 user/app/nvim/lua/options.lua delete mode 100644 user/app/nvim/lua/plugins/init.lua delete mode 100644 user/app/nvim/lua/themes/stylix.lua.mustache delete mode 100644 user/app/nvim/nvim.nix diff --git a/flake.nix b/flake.nix index 2f79251..3cb3b4b 100644 --- a/flake.nix +++ b/flake.nix @@ -230,11 +230,6 @@ hyprgrass.url = "github:horriblename/hyprgrass/427690aec574fec75f5b7b800ac4a0b4c8e4b1d5"; hyprgrass.inputs.hyprland.follows = "hyprland"; - nvchad = { - url = "github:NvChad/starter"; - flake = false; - }; - stylix.url = "github:danth/stylix"; emacs-overlay = { diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 8337081..36f6e3b 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -12,7 +12,6 @@ (./. + "../../../user/wm"+("/"+userSettings.wm+"/"+userSettings.wm)+".nix") # My window manager selected from flake ../../user/shell/sh.nix # My zsh and bash config ../../user/shell/cli-collection.nix # Useful CLI apps - ../../user/app/nvim/nvim.nix # My doom emacs config ../../user/app/emacs # Emacs config that I'm currently rebuilding ../../user/app/ranger/ranger.nix # My ranger file manager config ../../user/app/git/git.nix # My git config diff --git a/system/hardware-configuration.nix b/system/hardware-configuration.nix index 0d19ab1..6232d37 100644 --- a/system/hardware-configuration.nix +++ b/system/hardware-configuration.nix @@ -82,10 +82,10 @@ }; boot.kernel.sysctl = { - "vm.swappiness" = 90; - "vm.vfs_cache_pressure" = 50; - "vm.dirty_background_ratio" = 2; - "vm.dirty_ratio" = 5; + "vm.swappiness" = 180; + "vm.vfs_cache_pressure" = 500; + "vm.dirty_background_ratio" = 4; + "vm.dirty_ratio" = 8; }; services.btrfs.autoScrub = { diff --git a/user/app/nvim/README.md b/user/app/nvim/README.md deleted file mode 100644 index dc0deaa..0000000 --- a/user/app/nvim/README.md +++ /dev/null @@ -1,9 +0,0 @@ -**This repo is supposed to used as config by NvChad users!** - -- The main nvchad repo (NvChad/NvChad) is used as a plugin by this repo. -- So you just import its modules , like `require "nvchad.options" , require "nvchad.mappings"` -- So you can delete the .git from this repo ( when you clone it locally ) or fork it :) - -# Credits - -1) Lazyvim starter https://github.com/LazyVim/starter as nvchad's starter was inspired by Lazyvim's . It made a lot of things easier! diff --git a/user/app/nvim/init.lua b/user/app/nvim/init.lua deleted file mode 100644 index 59737fc..0000000 --- a/user/app/nvim/init.lua +++ /dev/null @@ -1,98 +0,0 @@ -vim.g.base46_cache = vim.fn.stdpath "data" .. "/nvchad/base46/" -vim.g.mapleader = " " - -if vim.g.neovide then - -- Helper function for transparency formatting - local alpha = function() - return string.format("%x", math.floor(255 * vim.g.transparency or 0.8)) - end - vim.g.transparency = 0 - vim.g.neovide_background_color = vim.g.neovide_background_color .. alpha() - vim.g.neovide_transparency = 0.8 - vim.g.neovide_floating_blur_amount_x = 8.0 - vim.g.neovide_floating_blur_amount_y = 8.0 - vim.g.neovide_refresh_rate = 120 - vim.g.neovide_cursor_vfx_mode = "pixiedust" - vim.g.neovide_text_gamma = 0.8 - vim.g.neovide_text_contrast = 0.1 - vim.opt.termguicolors = true - vim.g.neovide_scale_factor = 1.0 -end - -vim.o.conceallevel = 2 - -vim.api.nvim_create_user_command('W', 'execute "silent! write !sudo tee % >/dev/null" edit', { nargs = 0}) - - --- bootstrap lazy and all plugins -local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim" - -if not vim.uv.fs_stat(lazypath) then - local repo = "https://github.com/folke/lazy.nvim.git" - vim.fn.system { "git", "clone", "--filter=blob:none", repo, "--branch=stable", lazypath } -end - -vim.opt.rtp:prepend(lazypath) - -local lazy_config = require "configs.lazy" - --- load plugins -require("lazy").setup({ - { - "NvChad/NvChad", - lazy = false, - branch = "v2.5", - import = "nvchad.plugins", - }, - - { import = "plugins" }, -}, lazy_config) - -require("workspaces").setup({ - hooks = { - open = { "Telescope find_files" }, - } -}) - --- You dont need to set any of these options. These are the default ones. Only --- the loading is important -require('telescope').setup { - defaults = { - winblend = 80, - }, - pickers = { - find_files = { - }, - }, - extensions = { - fzf = { - fuzzy = true, -- false will only do exact matching - override_generic_sorter = true, -- override the generic sorter - override_file_sorter = true, -- override the file sorter - case_mode = "smart_case", -- or "ignore_case" or "respect_case" - -- the default case_mode is "smart_case" - }, - workspaces = { - -- keep insert mode after selection in the picker, default is false - keep_insert = true, - -- Highlight group used for the path in the picker, default is "String" - path_hl = "String" - } - } -} --- To get fzf loaded and working with telescope, you need to call --- load_extension, somewhere after setup function: -require('telescope').load_extension('fzf') -require('telescope').load_extension('project') -require('telescope').load_extension('workspaces') - --- load theme -dofile(vim.g.base46_cache .. "defaults") -dofile(vim.g.base46_cache .. "statusline") - -require "options" -require "nvchad.autocmds" - -vim.schedule(function() - require "mappings" -end) diff --git a/user/app/nvim/lua/chadrc.lua b/user/app/nvim/lua/chadrc.lua deleted file mode 100644 index 2f5dec3..0000000 --- a/user/app/nvim/lua/chadrc.lua +++ /dev/null @@ -1,33 +0,0 @@ --- This file needs to have same structure as nvconfig.lua --- https://github.com/NvChad/ui/blob/v2.5/lua/nvconfig.lua --- Please read that file to know all available options :( - ----@type ChadrcConfig -local M = {} - -M.base46 = { - theme = "stylix", - - -- hl_override = { - -- Comment = { italic = true }, - -- ["@comment"] = { italic = true }, - -- }, -} - -M.ui = { - theme = "stylix", -} - -M.nvdash = { - load_on_startup = true, - buttons = { - { txt = " Find File", keys = "Spc .", cmd = "Telescope find_files" }, - { txt = "󰙅 Nvimtree", keys = "SPC e", cmd = "NvimTreeToggle" }, - { txt = " Projects ", keys = "Spc p p", cmd = "Telescope workspaces" }, - { txt = "󰯌 Vsplit ", keys = "Spc w v", cmd = "vsplit" }, - { txt = "󰯋 Split ", keys = "Spc w s", cmd = "split" }, - { txt = "󰋗 Help", keys = "Spc c h", cmd = "NvCheatsheet" }, - }, - } - -return M diff --git a/user/app/nvim/lua/configs/conform.lua b/user/app/nvim/lua/configs/conform.lua deleted file mode 100644 index 35ba6cf..0000000 --- a/user/app/nvim/lua/configs/conform.lua +++ /dev/null @@ -1,15 +0,0 @@ -local options = { - formatters_by_ft = { - lua = { "stylua" }, - -- css = { "prettier" }, - -- html = { "prettier" }, - }, - - -- format_on_save = { - -- -- These options will be passed to conform.format() - -- timeout_ms = 500, - -- lsp_fallback = true, - -- }, -} - -return options diff --git a/user/app/nvim/lua/configs/lazy.lua b/user/app/nvim/lua/configs/lazy.lua deleted file mode 100644 index cd170bd..0000000 --- a/user/app/nvim/lua/configs/lazy.lua +++ /dev/null @@ -1,47 +0,0 @@ -return { - defaults = { lazy = true }, - install = { colorscheme = { "nvchad" } }, - - ui = { - icons = { - ft = "", - lazy = "󰂠 ", - loaded = "", - not_loaded = "", - }, - }, - - performance = { - rtp = { - disabled_plugins = { - "2html_plugin", - "tohtml", - "getscript", - "getscriptPlugin", - "gzip", - "logipat", - "netrw", - "netrwPlugin", - "netrwSettings", - "netrwFileHandlers", - "matchit", - "tar", - "tarPlugin", - "rrhelper", - "spellfile_plugin", - "vimball", - "vimballPlugin", - "zip", - "zipPlugin", - "tutor", - "rplugin", - "syntax", - "synmenu", - "optwin", - "compiler", - "bugreport", - "ftplugin", - }, - }, - }, -} diff --git a/user/app/nvim/lua/configs/lspconfig.lua b/user/app/nvim/lua/configs/lspconfig.lua deleted file mode 100644 index ea9e812..0000000 --- a/user/app/nvim/lua/configs/lspconfig.lua +++ /dev/null @@ -1,27 +0,0 @@ --- load defaults i.e lua_lsp -require("nvchad.configs.lspconfig").defaults() - -local lspconfig = require "lspconfig" - --- EXAMPLE -local servers = { "html", "cssls", "nil_ls", "marksman", "clangd", "pylsp", "ts_ls", "java_language_server", "dockerls", "docker_compose_language_service", "jsonls", "kotlin_language_server", "bashls", "yamlls", "sqls" } -local nvlsp = require "nvchad.configs.lspconfig" - --- lsps with default config -for _, lsp in ipairs(servers) do - lspconfig[lsp].setup { - on_attach = nvlsp.on_attach, - on_init = nvlsp.on_init, - capabilities = nvlsp.capabilities, - } -end -lspconfig.gdscript.setup { - cmd = { "ncat", "localhost", "6005"} -} - --- configuring single server, example: typescript --- lspconfig.ts_ls.setup { --- on_attach = nvlsp.on_attach, --- on_init = nvlsp.on_init, --- capabilities = nvlsp.capabilities, --- } diff --git a/user/app/nvim/lua/mappings.lua b/user/app/nvim/lua/mappings.lua deleted file mode 100644 index c0f9656..0000000 --- a/user/app/nvim/lua/mappings.lua +++ /dev/null @@ -1,47 +0,0 @@ -require "nvchad.mappings" - --- add yours here - -local map = vim.keymap.set -local builtin = require("telescope.builtin") -local utils = require("telescope.utils") -local change_scale_factor = function(delta) - vim.g.neovide_scale_factor = vim.g.neovide_scale_factor * delta -end - -vim.keymap.set("n", "", function() - change_scale_factor(1.25) -end) -vim.keymap.set("n", "", function() - change_scale_factor(1/1.25) -end) - -map("n", ";", ":", { desc = "CMD enter command mode" }) -map({"n", "t", "v", "i"}, "", ":", { desc = "CMD enter command mode" }) -map({"n", "t", "v", "i"}, "", "", { desc = "up" }) -map({"n", "t", "v", "i"}, "", "", { desc = "down" }) -map({"n", "t", "v", "i"}, "", "h", { desc = "switch window left" }) -map({"n", "t", "v", "i"}, "", "l", { desc = "switch window right" }) -map({"n", "t", "v", "i"}, "", "j", { desc = "switch window down" }) -map({"n", "t", "v", "i"}, "", "k", { desc = "switch window up" }) -map("n", ".", "Telescope find_files", { desc = "telescope find files" }) -map("n", "/", "Telescope live_grep", { desc = "telescope live grep" }) -map("n", "gg", "Neogit", { desc = "Neogit status buffer" }) -map("n", "c", "gcc", { desc = "Toggle Comment", remap = true }) -map("v", "c", "gc", { desc = "Toggle comment", remap = true }) -map("n", "pp", "Telescope workspaces", { desc = "telescope workspaces" }) -map("n", "pf", "Telescope find_files", { desc = "telescope find files" }) -map("n", "", "q", { desc = "quit" }) -map("n", "wd>", "q", { desc = "quit" }) -map("n", "ws", "split", { desc = "horizontal split" }) -map("n", "wS", "split", { desc = "horizontal split" }) -map("n", "wv", "vsplit", { desc = "vertical split" }) -map("n", "wV", "vsplit", { desc = "vertical split" }) -map("n", "", "edit #", { desc = "edit previous" }) -map({ "n", "t", "i", "v" }, "", "NvimTreeToggle", { desc = "nvimtree toggle window" }) -map({ "n", "t", "i", "v" }, "", function() - require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm" } -end, { desc = "terminal toggleable horizontal term" }) -map("i", "jk", "") - --- map({ "n", "i", "v" }, "", " w ") diff --git a/user/app/nvim/lua/options.lua b/user/app/nvim/lua/options.lua deleted file mode 100644 index 738f20b..0000000 --- a/user/app/nvim/lua/options.lua +++ /dev/null @@ -1,6 +0,0 @@ -require "nvchad.options" - --- add yours here! - --- local o = vim.o --- o.cursorlineopt ='both' -- to enable cursorline! diff --git a/user/app/nvim/lua/plugins/init.lua b/user/app/nvim/lua/plugins/init.lua deleted file mode 100644 index 9af253e..0000000 --- a/user/app/nvim/lua/plugins/init.lua +++ /dev/null @@ -1,52 +0,0 @@ -return { - { - "stevearc/conform.nvim", - -- event = 'BufWritePre', -- uncomment for format on save - opts = require "configs.conform", - }, - - -- These are some examples, uncomment them if you want to see them work! - { - "neovim/nvim-lspconfig", - config = function() - require "configs.lspconfig" - end, - }, - - { - "nvim-treesitter/nvim-treesitter", - opts = { - ensure_installed = { - "vim", "lua", "vimdoc", - "html", "css", 'gdscript' - }, - }, - }, - - { 'nvim-telescope/telescope-fzf-native.nvim', build = 'make', lazy = false, }, - { 'nvim-telescope/telescope-project.nvim', lazy = false, }, - { 'natecraddock/workspaces.nvim', lazy = false, }, - { 'jghauser/follow-md-links.nvim', lazy = false, }, - - { - "NeogitOrg/neogit", - lazy = false, - dependencies = { - "nvim-lua/plenary.nvim", -- required - "sindrets/diffview.nvim", -- optional - Diff integration - - -- Only one of these is needed. - "nvim-telescope/telescope.nvim", -- optional - }, - config = true - }, - { - 'nvim-orgmode/orgmode', - event = 'VeryLazy', - ft = { 'org' }, - config = function() - -- Setup orgmode - require('orgmode').setup({}) - end, - }, -} diff --git a/user/app/nvim/lua/themes/stylix.lua.mustache b/user/app/nvim/lua/themes/stylix.lua.mustache deleted file mode 100644 index 585952d..0000000 --- a/user/app/nvim/lua/themes/stylix.lua.mustache +++ /dev/null @@ -1,72 +0,0 @@ -local M = {} - -M.base_30 = { - white = "#{{base07-hex}}", - darker_black = "#{{base00-hex}}", - black = "#{{base00-hex}}", -- nvim bg - black2 = "#{{base01-hex}}", - one_bg = "#{{base01-hex}}", - one_bg2 = "#{{base02-hex}}", - one_bg3 = "#{{base03-hex}}", - grey = "#{{base04-hex}}", - grey_fg = "#{{base04-hex}}", - grey_fg2 = "#{{base05-hex}}", - light_grey = "#{{base06-hex}}", - red = "#{{base08-hex}}", - baby_pink = "#{{base08-hex}}", - pink = "#{{base08-hex}}", - line = "#{{base02-hex}}", -- for lines like vertsplit - green = "#{{base0B-hex}}", - vibrant_green = "#{{base0B-hex}}", - blue = "#{{base0D-hex}}", - nord_blue = "#{{base0D-hex}}", - yellow = "#{{base0A-hex}}", - sun = "#{{base0A-hex}}", - purple = "#{{base0E-hex}}", - dark_purple = "#{{base0E-hex}}", - teal = "#{{base0C-hex}}", - orange = "#{{base09-hex}}", - cyan = "#{{base0C-hex}}", - statusline_bg = "#{{base02-hex}}", - lightbg = "#{{base03-hex}}", - pmenu_bg = "#{{base0D-hex}}", - folder_bg = "#{{base05-hex}}", -} - -M.base_16 = { - base00 = "#{{base00-hex}}", - base01 = "#{{base01-hex}}", - base02 = "#{{base02-hex}}", - base03 = "#{{base03-hex}}", - base04 = "#{{base04-hex}}", - base05 = "#{{base05-hex}}", - base06 = "#{{base06-hex}}", - base07 = "#{{base07-hex}}", - base08 = "#{{base08-hex}}", - base09 = "#{{base09-hex}}", - base0A = "#{{base0A-hex}}", - base0B = "#{{base0B-hex}}", - base0C = "#{{base0C-hex}}", - base0D = "#{{base0D-hex}}", - base0E = "#{{base0E-hex}}", - base0F = "#{{base0F-hex}}", -} - -M.polish_hl = { - treesitter = { - luaTSField = { fg = M.base_16.base0D }, - ["@tag.delimiter"] = { fg = M.base_30.cyan }, - ["@function"] = { fg = M.base_30.orange }, - ["@string"] = { fg = M.base_16.base0F }, - ["@identifier"] = { fg = M.base_16.base0E }, - ["@variable.parameter"] = { fg = M.base_16.base0F }, - ["@constructor"] = { fg = M.base_16.base0A }, - ["@tag.attribute"] = { fg = M.base_30.orange }, - }, -} - -M = require("base46").override_theme(M, "stylix") - -M.type = "dark" - -return M diff --git a/user/app/nvim/nvim.nix b/user/app/nvim/nvim.nix deleted file mode 100644 index 6944c74..0000000 --- a/user/app/nvim/nvim.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ config, pkgs, inputs, ... }: - -{ - home.packages = with pkgs; [ - neovim - neovim-remote - neovide - lua-language-server - vscode-langservers-extracted - nil - clang-tools - marksman - python311Packages.python-lsp-server - typescript-language-server - java-language-server - dockerfile-language-server-nodejs - docker-compose-language-service - kotlin-language-server - bash-language-server - yaml-language-server - sqls - nmap - ]; - programs.neovim = { - viAlias = true; - vimAlias = true; - }; - home.file.".config/nvim".source = ./.; - home.file.".config/nvim".recursive = true; - home.file.".config/nvim/lua/themes/stylix.lua".source = config.lib.stylix.colors { - template = builtins.readFile ./lua/themes/stylix.lua.mustache; - extension = ".lua"; - }; -} From 1358906a30730000a23917b60e949b37a33e9670 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 15 Dec 2024 07:07:58 -0600 Subject: [PATCH 054/317] Updated hyprland and rm some hyprland extras --- flake.lock | 81 ++++-------------------------------------------------- flake.nix | 10 +------ 2 files changed, 6 insertions(+), 85 deletions(-) diff --git a/flake.lock b/flake.lock index c478e28..cb9114d 100644 --- a/flake.lock +++ b/flake.lock @@ -422,27 +422,6 @@ "type": "github" } }, - "hyprgrass": { - "inputs": { - "hyprland": [ - "hyprland" - ] - }, - "locked": { - "lastModified": 1724620988, - "narHash": "sha256-3CN9ZioI5XBtp6WF61hH2EyASHUIPJQCTXiW1rt9n5w=", - "owner": "horriblename", - "repo": "hyprgrass", - "rev": "427690aec574fec75f5b7b800ac4a0b4c8e4b1d5", - "type": "github" - }, - "original": { - "owner": "horriblename", - "repo": "hyprgrass", - "rev": "427690aec574fec75f5b7b800ac4a0b4c8e4b1d5", - "type": "github" - } - }, "hyprland": { "inputs": { "aquamarine": "aquamarine", @@ -459,53 +438,22 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1731526492, - "narHash": "sha256-2Gob+eZEPpF225QrRLXyfeQ9L63YHFa/tNh15FW/Rzo=", - "ref": "refs/heads/main", - "rev": "3fb47372b79265ebdabeeefdad10359d5b18377a", + "lastModified": 1732052838, + "narHash": "sha256-1pNsLGNStCFjXiBc2zMUxKzKk45CePTf+GwKlzTmrCY=", + "ref": "12f9a0d0b93f691d4d9923716557154d74777b0a", + "rev": "12f9a0d0b93f691d4d9923716557154d74777b0a", "revCount": 5451, "submodules": true, "type": "git", "url": "https://code.hyprland.org/hyprwm/Hyprland.git" }, "original": { - "rev": "3fb47372b79265ebdabeeefdad10359d5b18377a", + "rev": "12f9a0d0b93f691d4d9923716557154d74777b0a", "submodules": true, "type": "git", "url": "https://code.hyprland.org/hyprwm/Hyprland.git" } }, - "hyprland-plugins": { - "inputs": { - "hyprland": [ - "hyprland" - ], - "nixpkgs": [ - "hyprland-plugins", - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland-plugins", - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1731619734, - "narHash": "sha256-ZroMITOTQ3eu6z+3m7DJtaKePJWDTPuElkgmKl3rl9g=", - "ref": "refs/heads/main", - "rev": "344a69db96fa8c6dc3b8f1f8f5a75f6eb441cbf2", - "revCount": 204, - "type": "git", - "url": "https://code.hyprland.org/hyprwm/hyprland-plugins.git" - }, - "original": { - "rev": "344a69db96fa8c6dc3b8f1f8f5a75f6eb441cbf2", - "type": "git", - "url": "https://code.hyprland.org/hyprwm/hyprland-plugins.git" - } - }, "hyprland-protocols": { "inputs": { "nixpkgs": [ @@ -968,22 +916,6 @@ "type": "gitlab" } }, - "nvchad": { - "flake": false, - "locked": { - "lastModified": 1728129783, - "narHash": "sha256-SVpep7lVX0isYsUtscvgA7Ga3YXt/2jwQQCYkYadjiM=", - "owner": "NvChad", - "repo": "starter", - "rev": "d0c602f5f155d4d1261609219e9b8a61e936d681", - "type": "github" - }, - "original": { - "owner": "NvChad", - "repo": "starter", - "type": "github" - } - }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -1015,14 +947,11 @@ "emacs-overlay": "emacs-overlay", "home-manager-stable": "home-manager-stable", "home-manager-unstable": "home-manager-unstable", - "hyprgrass": "hyprgrass", "hyprland": "hyprland", - "hyprland-plugins": "hyprland-plugins", "hyprlock": "hyprlock", "nix-on-droid": "nix-on-droid", "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_3", - "nvchad": "nvchad", "rust-overlay": "rust-overlay", "stylix": "stylix" } diff --git a/flake.nix b/flake.nix index 3cb3b4b..6d54966 100644 --- a/flake.nix +++ b/flake.nix @@ -212,23 +212,15 @@ type = "git"; url = "https://code.hyprland.org/hyprwm/Hyprland.git"; submodules = true; - rev = "3fb47372b79265ebdabeeefdad10359d5b18377a"; #v0.45.0 + rev = "12f9a0d0b93f691d4d9923716557154d74777b0a"; #v0.45.2 inputs.nixpkgs.follows = "nixpkgs"; }; - hyprland-plugins = { - type = "git"; - url = "https://code.hyprland.org/hyprwm/hyprland-plugins.git"; - rev = "344a69db96fa8c6dc3b8f1f8f5a75f6eb441cbf2"; #v0.45.0 - inputs.hyprland.follows = "hyprland"; - }; hyprlock = { type = "git"; url = "https://code.hyprland.org/hyprwm/hyprlock.git"; rev = "4667f721be47ff6f5cf2a7ee64513f818fb764a0"; inputs.nixpkgs.follows = "nixpkgs"; }; - hyprgrass.url = "github:horriblename/hyprgrass/427690aec574fec75f5b7b800ac4a0b4c8e4b1d5"; - hyprgrass.inputs.hyprland.follows = "hyprland"; stylix.url = "github:danth/stylix"; From 99ecf7925fa4336aa3b1991fdca203776de44ffd Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 15 Dec 2024 07:08:16 -0600 Subject: [PATCH 055/317] I think this should fix stupid cache permission errors --- system/security/doas.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/security/doas.nix b/system/security/doas.nix index f3ab361..ade34e3 100644 --- a/system/security/doas.nix +++ b/system/security/doas.nix @@ -18,6 +18,6 @@ ]; environment.systemPackages = [ - (pkgs.writeScriptBin "sudo" ''exec doas "$@"'') + pkgs.doas-sudo-shim ]; } From 8634babe28a50d80428a21a8e96d65b9173371cd Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 15 Dec 2024 10:08:54 -0600 Subject: [PATCH 056/317] Reverted hyprland ver --- flake.lock | 10 +++++----- flake.nix | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index cb9114d..ab731bd 100644 --- a/flake.lock +++ b/flake.lock @@ -438,17 +438,17 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1732052838, - "narHash": "sha256-1pNsLGNStCFjXiBc2zMUxKzKk45CePTf+GwKlzTmrCY=", - "ref": "12f9a0d0b93f691d4d9923716557154d74777b0a", - "rev": "12f9a0d0b93f691d4d9923716557154d74777b0a", + "lastModified": 1731526492, + "narHash": "sha256-2Gob+eZEPpF225QrRLXyfeQ9L63YHFa/tNh15FW/Rzo=", + "ref": "refs/heads/main", + "rev": "3fb47372b79265ebdabeeefdad10359d5b18377a", "revCount": 5451, "submodules": true, "type": "git", "url": "https://code.hyprland.org/hyprwm/Hyprland.git" }, "original": { - "rev": "12f9a0d0b93f691d4d9923716557154d74777b0a", + "rev": "3fb47372b79265ebdabeeefdad10359d5b18377a", "submodules": true, "type": "git", "url": "https://code.hyprland.org/hyprwm/Hyprland.git" diff --git a/flake.nix b/flake.nix index 6d54966..f7fb3f9 100644 --- a/flake.nix +++ b/flake.nix @@ -212,7 +212,7 @@ type = "git"; url = "https://code.hyprland.org/hyprwm/Hyprland.git"; submodules = true; - rev = "12f9a0d0b93f691d4d9923716557154d74777b0a"; #v0.45.2 + rev = "3fb47372b79265ebdabeeefdad10359d5b18377a"; #v0.45.0 inputs.nixpkgs.follows = "nixpkgs"; }; hyprlock = { From a46254ff00795aaaa85d4401570f78a00fc59f02 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 15 Dec 2024 16:59:27 -0600 Subject: [PATCH 057/317] Plymouth is kinda cool --- profiles/work/configuration.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/profiles/work/configuration.nix b/profiles/work/configuration.nix index 73e6aec..8215742 100644 --- a/profiles/work/configuration.nix +++ b/profiles/work/configuration.nix @@ -86,11 +86,31 @@ # Bootloader # Use systemd-boot if uefi, default to grub otherwise boot.loader.systemd-boot.enable = if (systemSettings.bootMode == "uefi") then true else false; + boot.loader.systemd-boot.editor = false; boot.loader.efi.canTouchEfiVariables = if (systemSettings.bootMode == "uefi") then true else false; boot.loader.efi.efiSysMountPoint = systemSettings.bootMountPath; # does nothing if running bios rather than uefi boot.loader.grub.enable = if (systemSettings.bootMode == "uefi") then false else true; boot.loader.grub.device = systemSettings.grubDevice; # does nothing if running uefi rather than bios + # Silent Boot + # https://wiki.archlinux.org/title/Silent_boot + boot.kernelParams = [ + "quiet" + "splash" + "vga=current" + "rd.systemd.show_status=false" + "rd.udev.log_level=3" + "udev.log_priority=3" + ]; + boot.consoleLogLevel = 0; + boot.initrd.systemd.enable = true; + # https://github.com/NixOS/nixpkgs/pull/108294 + boot.initrd.verbose = false; + + boot.plymouth.enable = true; + #boot.plymouth.themePackages = with pkgs; [ nixos-bgrt-plymouth ]; + #boot.plymouth.theme = "NixOS BGRT"; + # Networking networking.hostName = systemSettings.hostname; # Define your hostname. networking.networkmanager.enable = true; # Use networkmanager From 58eff218ce6ea7a2f79b699580a9db03fcd54658 Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 16 Dec 2024 14:56:20 -0600 Subject: [PATCH 058/317] Added magit-todos --- user/app/emacs/default.nix | 2 +- user/app/emacs/init.el | 8 ++++++++ user/wm/hyprland/hyprland.nix | 1 - 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 840b70c..18a356c 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -17,7 +17,7 @@ yasnippet shackle projectile treemacs treemacs-projectile treesit-grammars.with-all-grammars - magit magit-file-icons + magit magit-file-icons magit-todos vterm sudo-edit gdscript-mode nix-mode diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 083f685..63ab3bb 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -299,6 +299,14 @@ (magit-file-icons-enable-untracked-icons t) (magit-file-icons-enable-diffstat-icons t)) +(use-package magit-todos + :ensure t + :custom + :config + (setq magit-todos-keywords-list '("TODO" "FIXME" "HACK" "REVIEW" "DEPRECATED" "BUG")) + (setq magit-todos-keyword-suffix "\\(?:[([][^])]+[])]\\)?.") + (magit-todos-mode 1)) + ;; Theme and modeline (use-package doom-themes :ensure t diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index cd66a78..786650c 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -514,7 +514,6 @@ in ignore_dbus_inhibit = false } - # FIXME memory leak fries computer inbetween dpms off and suspend #listener { # timeout = 150 # in seconds # on-timeout = hyprctl dispatch dpms off From c159757e33fa066bda4e667e6f716f3c76aa19ec Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 17 Dec 2024 09:38:36 -0600 Subject: [PATCH 059/317] Hoping this helps performance --- user/app/emacs/init.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 63ab3bb..7ed2e1d 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -121,7 +121,7 @@ (pixel-scroll-precision-mode 1) ;; Line numbers - (setq display-line-numbers-type 'visual + (setq display-line-numbers-type t line-move-visual t) (add-hook 'prog-mode-hook 'display-line-numbers-mode) @@ -301,7 +301,6 @@ (use-package magit-todos :ensure t - :custom :config (setq magit-todos-keywords-list '("TODO" "FIXME" "HACK" "REVIEW" "DEPRECATED" "BUG")) (setq magit-todos-keyword-suffix "\\(?:[([][^])]+[])]\\)?.") From 7a75115885512636a3cfc659248d1a5991c2ab31 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 17 Dec 2024 14:20:58 -0600 Subject: [PATCH 060/317] direnv --- user/app/emacs/default.nix | 1 + user/app/emacs/init.el | 5 +++++ user/shell/sh.nix | 1 + 3 files changed, 7 insertions(+) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 18a356c..70aa820 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -19,6 +19,7 @@ treesit-grammars.with-all-grammars magit magit-file-icons magit-todos vterm sudo-edit + direnv gdscript-mode nix-mode python python-mode diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 7ed2e1d..4ed06ec 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -357,6 +357,11 @@ (require 'use-package) (setq use-package-always-ensure t) +;; direnv +(use-package direnv + :config + (direnv-mode)) + ;; command-log-mode (use-package command-log-mode) diff --git a/user/shell/sh.nix b/user/shell/sh.nix index b612bab..588a2ca 100644 --- a/user/shell/sh.nix +++ b/user/shell/sh.nix @@ -47,4 +47,5 @@ in programs.direnv.enable = true; programs.direnv.enableZshIntegration = true; programs.direnv.nix-direnv.enable = true; + programs.direnv.nix-direnv.package = pkgs.nix-direnv-flakes; } From 058320aea9912d0d5155d420152a2f602075f35f Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 18 Dec 2024 22:33:45 -0600 Subject: [PATCH 061/317] undo-fu and org-roam --- user/app/emacs/default.nix | 2 ++ user/app/emacs/init.el | 51 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 70aa820..71db507 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -18,6 +18,8 @@ projectile treemacs treemacs-projectile treesit-grammars.with-all-grammars magit magit-file-icons magit-todos + undo-fu undo-fu-session + org-roam org-node org-node-fakeroam vterm sudo-edit direnv gdscript-mode diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 4ed06ec..9569895 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -146,6 +146,14 @@ ;; Enable vim (setq evil-want-keybinding nil) +(use-package undo-fu + :ensure t) + +(use-package undo-fu-session + :ensure t + :config + (global-undo-fu-session-mode)) + (use-package evil :init (setq evil-want-keybinding nil) @@ -154,6 +162,7 @@ (evil-set-leader 'normal (kbd "SPC")) (evil-set-leader 'motion (kbd "SPC")) (setq evil-respect-visual-line-mode t) + (setq evil-undo-system 'undo-fu) (evil-mode 1)) (use-package evil-collection @@ -450,6 +459,48 @@ All my (performant) foldings needs are met between this and `org-show-subtree' ;; Only fold the current tree, rather than recursively #'+org-cycle-only-current-subtree-h) +(use-package org-roam + :ensure t + :custom + (org-roam-directory (file-truename "~/Notes")) + (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag))) + (org-roam-db-autosync-mode -1) + (setq org-roam-capture-templates '(("d" "default" plain "%?" :unnarrowed t :target (file+head + "${slug}-%<%Y%m%d%H%M%S>.org" "#+title: ${title}")))) + (evil-define-key 'motion 'global (kbd "n.") 'org-roam-node-find) + (evil-define-key 'motion 'global (kbd "nb") 'org-roam-buffer-toggle)) + +(use-package org-node + :ensure t + :after org + :config (org-node-cache-mode) + (setq org-node-extra-id-dirs '("~/Notes/")) + (org-node-complete-at-point-mode) + (setq org-roam-completion-everywhere nil) + (evil-define-key 'motion 'global (kbd "ni") 'org-node-insert-link) + (evil-define-key 'motion 'global (kbd "nr") 'org-node-rewrite-links-ask) + ) + +(use-package org-node-fakeroam + :ensure t + :defer + :config + (setq org-node-creation-fn #'org-node-fakeroam-new-via-roam-capture) + (setq org-node-slug-fn #'org-node-fakeroam-slugify-via-roam) + (setq org-node-datestamp-format "%Y%m%d%H%M%S-") + (setq org-roam-db-update-on-save nil) ;; don't update DB on save, not needed + (setq org-roam-link-auto-replace nil) ;; don't look for "roam:" links on save + (org-node-fakeroam-fast-render-mode) ;; build the Roam buffer faster + (setq org-node-fakeroam-fast-render-persist t) + (org-node-fakeroam-redisplay-mode) ;; autorefresh the Roam buffer + (org-node-fakeroam-jit-backlinks-mode) ;; skip DB for Roam buffer + (org-node-fakeroam-db-feed-mode) ;; keep Roam DB up to date + ) + +(use-package wgrep + :ensure t + :after org-node) + ;; Line wrapping management (defun truncate-lines-off () (interactive) From 2c042240ea12b6b9ec2793d3082d67227070d028 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 18 Dec 2024 22:34:01 -0600 Subject: [PATCH 062/317] Better double keypress rejection maybe? --- user/wm/hyprland/hyprland.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 786650c..110f820 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -372,7 +372,7 @@ in input { kb_layout = us kb_options = caps:escape - repeat_delay = 350 + repeat_delay = 450 repeat_rate = 50 accel_profile = adaptive follow_mouse = 2 From 710fd0f169ff9200e6524e39ac6cc2047f45c9d4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 19 Dec 2024 13:55:42 -0600 Subject: [PATCH 063/317] some org-mode fixes --- user/app/emacs/init.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 9569895..a7ce03c 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -165,6 +165,12 @@ (setq evil-undo-system 'undo-fu) (evil-mode 1)) +(with-eval-after-load 'evil-maps + (define-key evil-motion-state-map (kbd "RET") nil)) + +(setq org-return-follows-link t) +(setf (cdr (assoc 'file org-link-frame-setup)) 'find-file) + (use-package evil-collection :init (setq evil-want-keybinding nil) From 5f60682fd1d12bd80b5b92845e5bb6f5c8439ffb Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 21 Dec 2024 11:47:33 -0600 Subject: [PATCH 064/317] Updated system --- flake.lock | 72 +++++++++++++++++++++++++++--------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/flake.lock b/flake.lock index ab731bd..e304de2 100644 --- a/flake.lock +++ b/flake.lock @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1734034611, - "narHash": "sha256-kwutDyGtIzj8X/QMKaZNReSDCcD9ViUdYD2DhEnh8e4=", + "lastModified": 1734719418, + "narHash": "sha256-POs74yWI2f7F5XQmqM8FSbR20f+Nr6pJDLhSAIzYUAE=", "owner": "StevenBlack", "repo": "hosts", - "rev": "e9804b9cd0ccaec1677222c5a97f8ba2eac01118", + "rev": "aec12830201056810883861de874e66060a911b1", "type": "github" }, "original": { @@ -123,11 +123,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1734087975, - "narHash": "sha256-dQYXdA5zGKZ1G5HfPj9Gjf0JRGwXexl/dC9oZW5xOec=", + "lastModified": 1734631939, + "narHash": "sha256-ZrvI+3uXL6Y9v1+xyNVPpMav0SYPi2ZwcmkaTyarN0E=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "1174e016e517f60a8cfe00f0a5785e4c8bd17b53", + "rev": "5694778dcfd69cc5dab9bd83c9eeb147ed3537e4", "type": "github" }, "original": { @@ -145,11 +145,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1734196468, - "narHash": "sha256-k7jjLR1yRIuWG3+FyETAyYGPea9S6uQUNLJF4clhTeM=", + "lastModified": 1734772216, + "narHash": "sha256-9Hp6GMsXe46MA7zvZM9McO1TMjTzb1AdBNVsC+pkOs8=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "e621b2624bed4ada7b997845de10537152ba522b", + "rev": "8521536b77195b89b7c6ed51fc8643ae65fff26f", "type": "github" }, "original": { @@ -288,11 +288,11 @@ ] }, "locked": { - "lastModified": 1733873195, - "narHash": "sha256-dTosiZ3sZ/NKoLKQ++v8nZdEHya0eTNEsaizNp+MUPM=", + "lastModified": 1734622158, + "narHash": "sha256-h/fdzqlCqSa2ZCIqtDc9kshCJm6kQIoKuO0MSSmAX4A=", "owner": "nix-community", "repo": "home-manager", - "rev": "f26aa4b76fb7606127032d33ac73d7d507d82758", + "rev": "832920a60833533eaabcc93ab729801bf586fa0c", "type": "github" }, "original": { @@ -329,11 +329,11 @@ ] }, "locked": { - "lastModified": 1734093295, - "narHash": "sha256-hSwgGpcZtdDsk1dnzA0xj5cNaHgN9A99hRF/mxMtwS4=", + "lastModified": 1734622215, + "narHash": "sha256-OOfI0XhSJGHblfdNDhfnn8QnZxng63rWk9eeJ2tCbiI=", "owner": "nix-community", "repo": "home-manager", - "rev": "66c5d8b62818ec4c1edb3e941f55ef78df8141a8", + "rev": "1395379a7a36e40f2a76e7b9936cc52950baa1be", "type": "github" }, "original": { @@ -646,11 +646,11 @@ ] }, "locked": { - "lastModified": 1733859890, - "narHash": "sha256-HnA6z2l2W38TJBarvWCcxjTjcpz7JrDj2u2umjYFcEo=", + "lastModified": 1734591594, + "narHash": "sha256-7Q4hXE+b9A4DebZ5Q+q3WStuMiWR5bMW0ltpzbY/zMQ=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "77ffd839fd9d60d139dc4a2ad6b6d526f4ad5a17", + "rev": "ce2abe494524cdb389a5d31c11c41834d4362ac5", "type": "github" }, "original": { @@ -738,11 +738,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733940404, - "narHash": "sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g=", + "lastModified": 1734424634, + "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5d67ea6b4b63378b9c13be21e2ec9d1afc921713", + "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33", "type": "github" }, "original": { @@ -786,11 +786,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1733808091, - "narHash": "sha256-KWwINTQelKOoQgrXftxoqxmKFZb9pLVfnRvK270nkVk=", + "lastModified": 1734600368, + "narHash": "sha256-nbG9TijTMcfr+au7ZVbKpAhMJzzE2nQBYmRvSdXUD8g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a0f3e10d94359665dba45b71b4227b0aeb851f8e", + "rev": "b47fd6fa00c6afca88b8ee46cfdb00e104f50bca", "type": "github" }, "original": { @@ -818,11 +818,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1734083684, - "narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=", + "lastModified": 1734737257, + "narHash": "sha256-GIMyMt1pkkoXdCq9un859bX6YQZ/iYtukb9R5luazLM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84", + "rev": "1c6e20d41d6a9c1d737945962160e8571df55daa", "type": "github" }, "original": { @@ -833,11 +833,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1733940404, - "narHash": "sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g=", + "lastModified": 1734424634, + "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5d67ea6b4b63378b9c13be21e2ec9d1afc921713", + "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33", "type": "github" }, "original": { @@ -961,11 +961,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1734143514, - "narHash": "sha256-1+r8wYucn8kp9d/IBW1uYGs31QQmSZURElsiOTx65xM=", + "lastModified": 1734747996, + "narHash": "sha256-0DUuObdcPITVOMMymq2y6YlM++QEWXZO3cTm6RGYgL8=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "81fe5c27cb281a9b796d7ad05ad9179e5bd0c78d", + "rev": "f9086701f5f3d36b8e5f4a3b9c93579ebc2581e6", "type": "github" }, "original": { @@ -1007,11 +1007,11 @@ "tinted-tmux": "tinted-tmux" }, "locked": { - "lastModified": 1734110168, - "narHash": "sha256-Q0eeLYn45ErXlqGQyXmLLHGe1mqnUiK0Y9wZRa1SNFI=", + "lastModified": 1734531336, + "narHash": "sha256-BWwJTAiWmZudUdUbyets7e3zQfjvZYtkU51blBnUBjw=", "owner": "danth", "repo": "stylix", - "rev": "a9e3779949925ef22f5a215c5f49cf520dea30b1", + "rev": "a2d66f25478103ac9b4adc6d6713794f7005221e", "type": "github" }, "original": { From a7a32dba09f7a3576b69f34363f711ced93eacda Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 23 Dec 2024 08:36:09 -0600 Subject: [PATCH 065/317] Fix emacs startup --- user/app/emacs/init.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index a7ce03c..47014f1 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -168,8 +168,9 @@ (with-eval-after-load 'evil-maps (define-key evil-motion-state-map (kbd "RET") nil)) -(setq org-return-follows-link t) -(setf (cdr (assoc 'file org-link-frame-setup)) 'find-file) +(with-eval-after-load 'org + (setq org-return-follows-link t) + (setf (cdr (assoc 'file org-link-frame-setup)) 'find-file)) (use-package evil-collection :init From 23ece1cc429d5920a70c7359621f058744aa9d48 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 24 Dec 2024 07:21:13 -0600 Subject: [PATCH 066/317] Various emacs fixes --- user/app/emacs/init.el | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 47014f1..3c2169f 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -185,7 +185,7 @@ ;; File and buffer keybinds (evil-define-key 'motion 'global (kbd ".") 'find-file) (evil-define-key 'motion 'global (kbd "bi") 'ibuffer) - (evil-define-key 'motion 'global (kbd "bd") 'delete-buffer) + (evil-define-key 'motion 'global (kbd "bd") 'evil-delete-buffer) (evil-define-key 'motion 'global (kbd "bn") 'next-buffer) (evil-define-key 'motion 'global (kbd "bp") 'previous-buffer) ;; based on http://emacsredux.com/blog/2013/04/03/delete-file-and-buffer/ @@ -466,15 +466,19 @@ All my (performant) foldings needs are met between this and `org-show-subtree' ;; Only fold the current tree, rather than recursively #'+org-cycle-only-current-subtree-h) +(evil-define-key 'insert 'org-mode-map (kbd "") 'org-demote-subtree) +(evil-define-key 'insert 'org-mode-map (kbd "") 'org-promote-subtree) + (use-package org-roam :ensure t - :custom - (org-roam-directory (file-truename "~/Notes")) + :config + (setq org-roam-directory (file-truename "~/Notes")) (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag))) (org-roam-db-autosync-mode -1) (setq org-roam-capture-templates '(("d" "default" plain "%?" :unnarrowed t :target (file+head "${slug}-%<%Y%m%d%H%M%S>.org" "#+title: ${title}")))) (evil-define-key 'motion 'global (kbd "n.") 'org-roam-node-find) + (evil-define-key 'motion 'global (kbd "nr") 'org-roam-refile) (evil-define-key 'motion 'global (kbd "nb") 'org-roam-buffer-toggle)) (use-package org-node @@ -485,7 +489,7 @@ All my (performant) foldings needs are met between this and `org-show-subtree' (org-node-complete-at-point-mode) (setq org-roam-completion-everywhere nil) (evil-define-key 'motion 'global (kbd "ni") 'org-node-insert-link) - (evil-define-key 'motion 'global (kbd "nr") 'org-node-rewrite-links-ask) + (evil-define-key 'motion 'global (kbd "nR") 'org-node-rewrite-links-ask) ) (use-package org-node-fakeroam @@ -518,6 +522,7 @@ All my (performant) foldings needs are met between this and `org-show-subtree' (defun visual-line-mode-off () (interactive) (visual-line-mode 0)) +(add-hook 'org-mode-hook 'org-indent-mode) (add-hook 'org-mode-hook 'truncate-lines-off) (add-hook 'markdown-mode-hook 'truncate-lines-off) (add-hook 'org-mode-hook 'visual-line-mode) From fe6340553dfdf62225d2011e5970b834683f64a4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 26 Dec 2024 08:02:36 -0600 Subject: [PATCH 067/317] Fixes line truncating in prog mode --- user/app/emacs/init.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 3c2169f..e8a6897 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -527,8 +527,8 @@ All my (performant) foldings needs are met between this and `org-show-subtree' (add-hook 'markdown-mode-hook 'truncate-lines-off) (add-hook 'org-mode-hook 'visual-line-mode) (add-hook 'markdown-mode-hook 'visual-line-mode) -(add-hook 'prog-mode 'truncate-lines-on) -(add-hook 'prog-mode 'visual-line-mode-off) +(add-hook 'prog-mode-hook 'truncate-lines-on) +(add-hook 'prog-mode-hook 'visual-line-mode-off) ;; Heading styles (set-face-attribute 'outline-1 nil :height 195 :foreground (nth 1 (nth 14 doom-themes--colors))) From cedb24e74dd1b4f2bed5d1a3fa76e76f4570bb56 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 28 Dec 2024 10:47:54 -0600 Subject: [PATCH 068/317] Removed some bloat --- patches/nixpkgs-354095.patch | 87 -------- profiles/personal/home.nix | 1 - profiles/work/home.nix | 11 +- system/hardware-configuration.nix | 1 - system/hardware/opengl.nix | 3 - user/app/browser/floorp.nix | 19 -- user/app/games/games.nix | 54 ----- user/lang/android/android.nix | 9 - user/lang/cc/cc.nix | 13 -- user/lang/godot/godot.nix | 8 - user/lang/haskell/haskell.nix | 9 - user/lang/python/python-packages.nix | 80 -------- user/lang/python/python.nix | 10 - user/lang/rust/rust.nix | 8 - user/pkgs/hyprland-logo-stylix.svg.mustache | 93 --------- user/pkgs/nixos-snowflake-stylix.svg.mustache | 187 ------------------ user/wm/hyprland/hyprland.nix | 11 +- 17 files changed, 7 insertions(+), 597 deletions(-) delete mode 100644 patches/nixpkgs-354095.patch delete mode 100644 user/app/browser/floorp.nix delete mode 100644 user/app/games/games.nix delete mode 100644 user/lang/android/android.nix delete mode 100644 user/lang/cc/cc.nix delete mode 100644 user/lang/godot/godot.nix delete mode 100644 user/lang/haskell/haskell.nix delete mode 100644 user/lang/python/python-packages.nix delete mode 100644 user/lang/python/python.nix delete mode 100644 user/lang/rust/rust.nix delete mode 100644 user/pkgs/hyprland-logo-stylix.svg.mustache delete mode 100644 user/pkgs/nixos-snowflake-stylix.svg.mustache diff --git a/patches/nixpkgs-354095.patch b/patches/nixpkgs-354095.patch deleted file mode 100644 index 3d01906..0000000 --- a/patches/nixpkgs-354095.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 13af81da96c4b706e3262f1424d1d26b3db315d1 Mon Sep 17 00:00:00 2001 -From: Andrew Marshall -Date: Wed, 6 Nov 2024 17:24:11 -0500 -Subject: [PATCH 1/2] openvdb_11: init at 11.0.0 - -There are many breaking changes in v12, which some consumers are not -ready for and would require complex changes. This is expected to go away -once it becomes unused in nixpkgs. ---- - pkgs/development/libraries/openvdb/11.nix | 19 +++++++++++++++++++ - pkgs/top-level/all-packages.nix | 1 + - 2 files changed, 20 insertions(+) - create mode 100644 pkgs/development/libraries/openvdb/11.nix - -diff --git a/pkgs/development/libraries/openvdb/11.nix b/pkgs/development/libraries/openvdb/11.nix -new file mode 100644 -index 0000000000000..a65bb286ae2e2 ---- /dev/null -+++ b/pkgs/development/libraries/openvdb/11.nix -@@ -0,0 +1,19 @@ -+{ -+ lib, -+ fetchFromGitHub, -+ openvdb, -+}: -+ -+openvdb.overrideAttrs (old: rec { -+ name = "${old.pname}-${version}"; -+ version = "11.0.0"; -+ src = fetchFromGitHub { -+ owner = "AcademySoftwareFoundation"; -+ repo = "openvdb"; -+ rev = "v${version}"; -+ sha256 = "sha256-wDDjX0nKZ4/DIbEX33PoxR43dJDj2NF3fm+Egug62GQ="; -+ }; -+ meta = old.meta // { -+ license = lib.licenses.mpl20; -+ }; -+}) -diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix -index 55968eed13554..428a42210da40 100644 ---- a/pkgs/top-level/all-packages.nix -+++ b/pkgs/top-level/all-packages.nix -@@ -22214,6 +22214,7 @@ with pkgs; - zunclient = with python311Packages; toPythonApplication python-zunclient; - - openvdb = callPackage ../development/libraries/openvdb { }; -+ openvdb_11 = callPackage ../development/libraries/openvdb/11.nix { }; - - openvr = callPackage ../by-name/op/openvr/package.nix { - inherit (darwin.apple_sdk.frameworks) Foundation AppKit; - -From 33e09c6eea89ae1d1145f2f4527f98fd7b87865b Mon Sep 17 00:00:00 2001 -From: Andrew Marshall -Date: Wed, 6 Nov 2024 17:25:29 -0500 -Subject: [PATCH 2/2] blender: fix build by using openvdb_11 - -openvdb is now v12, and has many breaking API changes. Upstream has not -yet adapted to them yet, so there is no patch to backport. Further, -OpenVDB 12 is not currently part of the anticipated upstream library -updates for Blender 4.3 or 4.4. ---- - pkgs/applications/misc/blender/default.nix | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/pkgs/applications/misc/blender/default.nix b/pkgs/applications/misc/blender/default.nix -index 7d89339da1026..e2af0b3f93384 100644 ---- a/pkgs/applications/misc/blender/default.nix -+++ b/pkgs/applications/misc/blender/default.nix -@@ -64,7 +64,7 @@ - openjpeg, - openpgl, - opensubdiv, -- openvdb, -+ openvdb_11, - openxr-loader, - pkg-config, - potrace, -@@ -276,7 +276,7 @@ stdenv.mkDerivation (finalAttrs: { - openjpeg - openpgl - (opensubdiv.override { inherit cudaSupport; }) -- openvdb -+ openvdb_11 - potrace - pugixml - python3 diff --git a/profiles/personal/home.nix b/profiles/personal/home.nix index b0f93ea..5319d5b 100644 --- a/profiles/personal/home.nix +++ b/profiles/personal/home.nix @@ -9,7 +9,6 @@ programs.home-manager.enable = true; imports = [ ../work/home.nix # Personal is essentially work system + games - ../../user/app/games/games.nix # Various videogame apps ]; home.stateVersion = "22.11"; # Please read the comment before changing. diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 36f6e3b..7435d20 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -20,8 +20,6 @@ ../../user/app/virtualization/virtualization.nix # Virtual machines #../../user/app/flatpak/flatpak.nix # Flatpaks ../../user/style/stylix.nix # Styling and themes for my apps - ../../user/lang/cc/cc.nix # C and C++ tools - ../../user/app/godot # Game development ../../user/hardware/bluetooth.nix # Bluetooth ]; @@ -69,7 +67,7 @@ protonmail-bridge texliveSmall numbat - element-desktop-wayland + element-desktop openai-whisper-cpp @@ -124,6 +122,7 @@ krita pinta inkscape + godot_4 (pkgs-stable.lollypop.override { youtubeSupport = false; }) vlc mpv @@ -197,12 +196,6 @@ kdenlive ]); - home.file.".local/share/pixmaps/nixos-snowflake-stylix.svg".source = - config.lib.stylix.colors { - template = builtins.readFile ../../user/pkgs/nixos-snowflake-stylix.svg.mustache; - extension = "svg"; - }; - services.syncthing.enable = true; services.nextcloud-client = { enable = true; diff --git a/system/hardware-configuration.nix b/system/hardware-configuration.nix index 6232d37..276cd24 100644 --- a/system/hardware-configuration.nix +++ b/system/hardware-configuration.nix @@ -21,7 +21,6 @@ environment.systemPackages = with pkgs.rocmPackages; [ hipcc hip-common hiprand hipblas hipfft hipcub hipify ]; - services.xserver.videoDrivers = lib.mkDefault [ "modesetting" ]; hardware.graphics = { diff --git a/system/hardware/opengl.nix b/system/hardware/opengl.nix index 7e49f80..58dd13a 100644 --- a/system/hardware/opengl.nix +++ b/system/hardware/opengl.nix @@ -3,7 +3,4 @@ { # OpenGL hardware.opengl.enable = true; - hardware.opengl.extraPackages = with pkgs; [ - rocmPackages.clr.icd - ]; } diff --git a/user/app/browser/floorp.nix b/user/app/browser/floorp.nix deleted file mode 100644 index c7fe445..0000000 --- a/user/app/browser/floorp.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs, ... }: - -{ - # Module installing as default browser - home.packages = [ pkgs.floorp ]; - - home.sessionVariables = { - DEFAULT_BROWSER = "${pkgs.floorp}/bin/floorp"; - }; - - xdg.mimeApps.defaultApplications = { - "text/html" = "floorp.desktop"; - "x-scheme-handler/http" = "floorp.desktop"; - "x-scheme-handler/https" = "floorp.desktop"; - "x-scheme-handler/about" = "floorp.desktop"; - "x-scheme-handler/unknown" = "floorp.desktop"; - }; - -} diff --git a/user/app/games/games.nix b/user/app/games/games.nix deleted file mode 100644 index e37d004..0000000 --- a/user/app/games/games.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ pkgs, pkgs-stable, ... }: -let - myRetroarch = - (pkgs-stable.retroarch.override { - cores = with pkgs-stable.libretro; [ - vba-m - (desmume.overrideAttrs (oldAttrs: { - preConfigure = '' - sed -i 's/0009BF123456/0022AA067857/g' desmume/src/firmware.cpp; - sed -i 's/outConfig.MACAddress\[0\] = 0x00/outConfig.MACAddress[0] = 0x00/g' desmume/src/firmware.cpp; - sed -i 's/outConfig.MACAddress\[1\] = 0x09/outConfig.MACAddress[1] = 0x22/g' desmume/src/firmware.cpp; - sed -i 's/outConfig.MACAddress\[2\] = 0xBF/outConfig.MACAddress[2] = 0xAA/g' desmume/src/firmware.cpp; - sed -i 's/outConfig.MACAddress\[3\] = 0x12/outConfig.MACAddress[3] = 0x06/g' desmume/src/firmware.cpp; - sed -i 's/outConfig.MACAddress\[4\] = 0x34/outConfig.MACAddress[4] = 0x78/g' desmume/src/firmware.cpp; - sed -i 's/outConfig.MACAddress\[5\] = 0x56/outConfig.MACAddress[5] = 0x57/g' desmume/src/firmware.cpp; - sed -i 's/0x00, 0x09, 0xBF, 0x12, 0x34, 0x56/0x00, 0x22, 0xAA, 0x06, 0x78, 0x57/g' desmume/src/wifi.cpp; - ''; - })) - dolphin - genesis-plus-gx - ]; - }); -in -{ - home.packages = (with pkgs; [ - # Games - pegasus-frontend - myRetroarch - libfaketime - airshipper - qjoypad - superTux - superTuxKart - gamepad-tool - ]) ++ (with pkgs-stable; [ - pokefinder - ]); - - nixpkgs.config = { - allowUnfree = true; - allowUnfreePredicate = (_: true); - }; - - # The following 2 declarations allow retroarch to be imported into gamehub - # Set retroarch core directory to ~/.local/bin/libretro - # and retroarch core info directory to ~/.local/share/libretro/info - home.file.".local/bin/libretro".source = "${myRetroarch}/lib/retroarch/cores"; - home.file.".local/bin/libretro-shaders".source = "${myRetroarch}/lib/retroarch/cores"; - home.file.".local/share/libretro/info".source = fetchTarball { - url = "https://github.com/libretro/libretro-core-info/archive/refs/tags/v1.15.0.tar.gz"; - sha256 = "004kgbsgbk7hn1v01jg3vj4b6dfb2cp3kcp5hgjyl030wqg1r22q"; - }; - -} diff --git a/user/lang/android/android.nix b/user/lang/android/android.nix deleted file mode 100644 index 9158b97..0000000 --- a/user/lang/android/android.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - # Android - android-tools - android-udev-rules - ]; -} diff --git a/user/lang/cc/cc.nix b/user/lang/cc/cc.nix deleted file mode 100644 index 12733fa..0000000 --- a/user/lang/cc/cc.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - # CC - gcc - gnumake - cmake - autoconf - automake - libtool - ]; -} diff --git a/user/lang/godot/godot.nix b/user/lang/godot/godot.nix deleted file mode 100644 index 6cf5426..0000000 --- a/user/lang/godot/godot.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - # Gamedev - godot_4 - ]; -} diff --git a/user/lang/haskell/haskell.nix b/user/lang/haskell/haskell.nix deleted file mode 100644 index b903e8c..0000000 --- a/user/lang/haskell/haskell.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - # Haskell - haskellPackages.haskell-language-server - haskellPackages.stack - ]; -} diff --git a/user/lang/python/python-packages.nix b/user/lang/python/python-packages.nix deleted file mode 100644 index 10af8e8..0000000 --- a/user/lang/python/python-packages.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ pkgs, ... }: - -{ - # Python packages - home.packages = with pkgs.python3Packages; [ - cffi - dbus-python - wheel - pyyaml - zipp - xlib - libvirt - pybind11 - pyatspi - attrs - autocommand - bcrypt - pycairo - certifi - chardet - click - cryptography - cssselect - python-dateutil - distro - dnspython - evdev - ewmh - fastjsonschema - fido2 - python-gnupg - pygobject3 - idna - importlib-metadata - inflect - isodate - jeepney - keyring - lxml - markdown - markupsafe - more-itertools - numpy - ordered-set - packaging - pillow - pip - platformdirs - ply - prettytable - proton-client - protonvpn-nm-lib - psutil - pulsectl - pycparser - pycups - pycurl - pydantic - pyinotify - pyopenssl - pyparsing - pyqt5 - pyqt5_sip - pyscard - pythondialog - pyxdg - rdflib - requests - secretstorage - setproctitle - setuptools - six - systemd - tomli - urllib3 - wcwidth - websockets - python-zbar - ]; -} diff --git a/user/lang/python/python.nix b/user/lang/python/python.nix deleted file mode 100644 index 681c776..0000000 --- a/user/lang/python/python.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - # Python setup - python3Full - imath - pystring - ]; -} diff --git a/user/lang/rust/rust.nix b/user/lang/rust/rust.nix deleted file mode 100644 index 23bccb1..0000000 --- a/user/lang/rust/rust.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - # Rust setup - rustup - ]; -} diff --git a/user/pkgs/hyprland-logo-stylix.svg.mustache b/user/pkgs/hyprland-logo-stylix.svg.mustache deleted file mode 100644 index 93ada5a..0000000 --- a/user/pkgs/hyprland-logo-stylix.svg.mustache +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/user/pkgs/nixos-snowflake-stylix.svg.mustache b/user/pkgs/nixos-snowflake-stylix.svg.mustache deleted file mode 100644 index d014f6e..0000000 --- a/user/pkgs/nixos-snowflake-stylix.svg.mustache +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 110f820..da2f399 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -16,6 +16,10 @@ in else []); + home.sessionVariables = { + + }; + gtk.cursorTheme = { package = pkgs.quintom-cursor-theme; name = if (config.stylix.polarity == "light") then "Quintom_Ink" else "Quintom_Snow"; @@ -32,6 +36,7 @@ in exec-once = hyprctl setcursor '' + config.gtk.cursorTheme.name + " " + builtins.toString config.gtk.cursorTheme.size + '' exec-once = iio-hyprland + env = NIXOS_OZONE_WL,1 env = XDG_CURRENT_DESKTOP,Hyprland env = XDG_SESSION_DESKTOP,Hyprland env = XDG_SESSION_TYPE,wayland @@ -141,7 +146,6 @@ in bindm=SUPER,mouse:272,movewindow bindm=SUPER,mouse:273,resizewindow bind=SUPER,T,togglefloating - bind=SUPER,G,exec,hyprctl dispatch focusworkspaceoncurrentmonitor 9 && pegasus-fe; bind=,code:148,exec,''+ userSettings.term + " "+''-e numbat bind=,code:107,exec,grim -g "$(slurp)" @@ -502,11 +506,6 @@ in then echo "Shouldn't suspend"; sleep 10; else echo "Should suspend"; systemctl suspend; fi '') ]); - home.file.".local/share/pixmaps/hyprland-logo-stylix.svg".source = - config.lib.stylix.colors { - template = builtins.readFile ../../pkgs/hyprland-logo-stylix.svg.mustache; - extension = "svg"; - }; home.file.".config/hypr/hypridle.conf".text = '' general { lock_cmd = pgrep hyprlock || hyprlock From a8f84076e19e5ec06e251d7131ad6e3ce584028e Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 28 Dec 2024 11:03:24 -0600 Subject: [PATCH 069/317] Moved scripts into scripts/ --- harden.sh => scripts/harden.sh | 4 ++-- install.sh => scripts/install.sh | 2 +- pull.sh => scripts/pull.sh | 4 ++-- soften.sh => scripts/soften.sh | 2 +- sync-posthook.sh => scripts/sync-posthook.sh | 0 sync-system.sh => scripts/sync-system.sh | 2 +- sync-user.sh => scripts/sync-user.sh | 2 +- sync.sh => scripts/sync.sh | 0 update.sh => scripts/update.sh | 2 +- upgrade.sh => scripts/upgrade.sh | 0 system/bin/phoenix.nix | 18 +++++++++--------- 11 files changed, 18 insertions(+), 18 deletions(-) rename harden.sh => scripts/harden.sh (93%) rename install.sh => scripts/install.sh (97%) rename pull.sh => scripts/pull.sh (85%) rename soften.sh => scripts/soften.sh (94%) rename sync-posthook.sh => scripts/sync-posthook.sh (100%) rename sync-system.sh => scripts/sync-system.sh (78%) rename sync-user.sh => scripts/sync-user.sh (82%) rename sync.sh => scripts/sync.sh (100%) rename update.sh => scripts/update.sh (88%) rename upgrade.sh => scripts/upgrade.sh (100%) diff --git a/harden.sh b/scripts/harden.sh similarity index 93% rename from harden.sh rename to scripts/harden.sh index ef13c6d..02416d2 100755 --- a/harden.sh +++ b/scripts/harden.sh @@ -18,16 +18,16 @@ if [ "$#" = 1 ]; then else SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) fi -pushd $SCRIPT_DIR &> /dev/null; +pushd $SCRIPT_DIR/.. &> /dev/null; sudo chown 0:0 .; sudo chown 0:0 profiles/*; sudo chown -R 0:0 system; +sudo chown 0:0 -R scripts; sudo chown -R 0:0 patches; sudo chown 0:0 flake.lock; sudo chown 0:0 flake.nix sudo chown 0:0 profiles sudo chown 0:0 profiles/*/configuration.nix; sudo chown 0:0 profiles/homelab/base.nix; -sudo chown 0:0 *.sh; sudo chown 1000:users **/README.org; popd &> /dev/null; diff --git a/install.sh b/scripts/install.sh similarity index 97% rename from install.sh rename to scripts/install.sh index c167cf4..16f0afd 100755 --- a/install.sh +++ b/scripts/install.sh @@ -36,7 +36,7 @@ fi $EDITOR $SCRIPT_DIR/flake.nix; # Permissions for files that should be owned by root -sudo $SCRIPT_DIR/harden.sh $SCRIPT_DIR; +sudo $SCRIPT_DIR/scripts/harden.sh $SCRIPT_DIR; # Rebuild system sudo nixos-rebuild switch --flake $SCRIPT_DIR#system; diff --git a/pull.sh b/scripts/pull.sh similarity index 85% rename from pull.sh rename to scripts/pull.sh index 951733a..5c27c5c 100755 --- a/pull.sh +++ b/scripts/pull.sh @@ -7,10 +7,10 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # Relax permissions temporarily so git can work -sudo $SCRIPT_DIR/soften.sh $SCRIPT_DIR; +sudo $SCRIPT_DIR/scripts/soften.sh $SCRIPT_DIR; # Stash local edits, pull changes, and re-apply local edits -pushd $SCRIPT_DIR &> /dev/null; +pushd $SCRIPT_DIR/.. &> /dev/null; git stash; git pull; git stash apply; diff --git a/soften.sh b/scripts/soften.sh similarity index 94% rename from soften.sh rename to scripts/soften.sh index 84dde5f..ba3196d 100755 --- a/soften.sh +++ b/scripts/soften.sh @@ -22,6 +22,6 @@ if [ "$#" = 1 ]; then else SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) fi -pushd $SCRIPT_DIR &> /dev/null; +pushd $SCRIPT_DIR/scripts &> /dev/null; sudo chown -R 1000:users .; popd &> /dev/null; diff --git a/sync-posthook.sh b/scripts/sync-posthook.sh similarity index 100% rename from sync-posthook.sh rename to scripts/sync-posthook.sh diff --git a/sync-system.sh b/scripts/sync-system.sh similarity index 78% rename from sync-system.sh rename to scripts/sync-system.sh index 34f27e8..050ae2c 100755 --- a/sync-system.sh +++ b/scripts/sync-system.sh @@ -7,4 +7,4 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # Rebuild system -sudo nixos-rebuild switch --flake $SCRIPT_DIR#system; +sudo nixos-rebuild switch --flake $SCRIPT_DIR/..#system; diff --git a/sync-user.sh b/scripts/sync-user.sh similarity index 82% rename from sync-user.sh rename to scripts/sync-user.sh index 7bcfde5..c9d3372 100755 --- a/sync-user.sh +++ b/scripts/sync-user.sh @@ -7,6 +7,6 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # Install and build home-manager configuration -home-manager switch --flake $SCRIPT_DIR#user -b bkp; +home-manager switch --flake $SCRIPT_DIR/..#user -b bkp; $SCRIPT_DIR/sync-posthook.sh diff --git a/sync.sh b/scripts/sync.sh similarity index 100% rename from sync.sh rename to scripts/sync.sh diff --git a/update.sh b/scripts/update.sh similarity index 88% rename from update.sh rename to scripts/update.sh index 26ab74c..ee4b592 100755 --- a/update.sh +++ b/scripts/update.sh @@ -6,7 +6,7 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # Update flake -pushd $SCRIPT_DIR &> /dev/null; +pushd $SCRIPT_DIR/.. &> /dev/null; sudo nix flake update; sudo nix-channel --update; nix-channel --update; diff --git a/upgrade.sh b/scripts/upgrade.sh similarity index 100% rename from upgrade.sh rename to scripts/upgrade.sh diff --git a/system/bin/phoenix.nix b/system/bin/phoenix.nix index 15e8ccc..3d88c10 100644 --- a/system/bin/phoenix.nix +++ b/system/bin/phoenix.nix @@ -3,13 +3,13 @@ let myScript = '' if [ "$1" = "sync" ]; then if [ "$#" = 1 ]; then - ''+userSettings.dotfilesDir+''/sync.sh; + ''+userSettings.dotfilesDir+''/scripts/sync.sh; exit 0; elif [ "$2" = "user" ]; then - ''+userSettings.dotfilesDir+''/sync-user.sh; + ''+userSettings.dotfilesDir+''/scripts/sync-user.sh; exit 0; elif [ "$2" = "system" ]; then - ''+userSettings.dotfilesDir+''/sync-system.sh; + ''+userSettings.dotfilesDir+''/scripts/sync-system.sh; exit 0; else echo "Please pass 'system' or 'user' if supplying a second argument" @@ -18,37 +18,37 @@ let myScript = '' if [ "$#" -gt 1 ]; then echo "Warning: The 'refresh' command has no subcommands (no $2 subcommand)"; fi - ''+userSettings.dotfilesDir+''/sync-posthook.sh; + ''+userSettings.dotfilesDir+''/scripts/sync-posthook.sh; exit 0; elif [ "$1" = "update" ]; then if [ "$#" -gt 1 ]; then echo "Warning: The 'update' command has no subcommands (no $2 subcommand)"; fi - ''+userSettings.dotfilesDir+''/update.sh; + ''+userSettings.dotfilesDir+''/scripts/update.sh; exit 0; elif [ "$1" = "upgrade" ]; then if [ "$#" -gt 1 ]; then echo "Warning: The 'update' command has no subcommands (no $2 subcommand)"; fi - ''+userSettings.dotfilesDir+''/upgrade.sh; + ''+userSettings.dotfilesDir+''/scripts/upgrade.sh; exit 0; elif [ "$1" = "pull" ]; then if [ "$#" -gt 1 ]; then echo "Warning: The 'upgrade' command has no subcommands (no $2 subcommand)"; fi - ''+userSettings.dotfilesDir+''/pull.sh; + ''+userSettings.dotfilesDir+''/scripts/pull.sh; exit 0; elif [ "$1" = "harden" ]; then if [ "$#" -gt 1 ]; then echo "Warning: The 'harden' command has no subcommands (no $2 subcommand)"; fi - ''+userSettings.dotfilesDir+''/harden.sh; + ''+userSettings.dotfilesDir+''/scripts/harden.sh; exit 0; elif [ "$1" = "soften" ]; then if [ "$#" -gt 1 ]; then echo "Warning: The 'soften' command has no subcommands (no $2 subcommand)"; fi - ''+userSettings.dotfilesDir+''/soften.sh; + ''+userSettings.dotfilesDir+''/scripts/soften.sh; exit 0; elif [ "$1" = "gc" ]; then if [ "$#" -gt 2 ]; then From b6f4118a6ba77f1edfebaae4d7031919866811ed Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 28 Dec 2024 11:30:30 -0600 Subject: [PATCH 070/317] Minor fixes --- profiles/personal/home.nix | 6 ------ scripts/update.sh | 4 +--- system/bin/phoenix.nix | 9 +++------ 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/profiles/personal/home.nix b/profiles/personal/home.nix index 5319d5b..3865a8c 100644 --- a/profiles/personal/home.nix +++ b/profiles/personal/home.nix @@ -24,11 +24,5 @@ ]; xdg.enable = true; - xdg.userDirs = { - extraConfig = { - XDG_GAME_DIR = "${config.home.homeDirectory}/Media/Games"; - XDG_GAME_SAVE_DIR = "${config.home.homeDirectory}/Media/Game Saves"; - }; - }; } diff --git a/scripts/update.sh b/scripts/update.sh index ee4b592..e880486 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -7,7 +7,5 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # Update flake pushd $SCRIPT_DIR/.. &> /dev/null; -sudo nix flake update; -sudo nix-channel --update; -nix-channel --update; +sudo nix flake update "$@"; popd &> /dev/null; diff --git a/system/bin/phoenix.nix b/system/bin/phoenix.nix index 3d88c10..029c624 100644 --- a/system/bin/phoenix.nix +++ b/system/bin/phoenix.nix @@ -21,20 +21,17 @@ let myScript = '' ''+userSettings.dotfilesDir+''/scripts/sync-posthook.sh; exit 0; elif [ "$1" = "update" ]; then - if [ "$#" -gt 1 ]; then - echo "Warning: The 'update' command has no subcommands (no $2 subcommand)"; - fi - ''+userSettings.dotfilesDir+''/scripts/update.sh; + ''+userSettings.dotfilesDir+''/scripts/update.sh "''${@:2}"; exit 0; elif [ "$1" = "upgrade" ]; then if [ "$#" -gt 1 ]; then - echo "Warning: The 'update' command has no subcommands (no $2 subcommand)"; + echo "Warning: The 'upgrade' command has no subcommands (no $2 subcommand)"; fi ''+userSettings.dotfilesDir+''/scripts/upgrade.sh; exit 0; elif [ "$1" = "pull" ]; then if [ "$#" -gt 1 ]; then - echo "Warning: The 'upgrade' command has no subcommands (no $2 subcommand)"; + echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; fi ''+userSettings.dotfilesDir+''/scripts/pull.sh; exit 0; From 95deb5b0c417bb244a2fe0ff9ab54b2146ab95be Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 28 Dec 2024 11:32:11 -0600 Subject: [PATCH 071/317] Fix redo --- user/app/emacs/init.el | 1 + 1 file changed, 1 insertion(+) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index e8a6897..7a32142 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -163,6 +163,7 @@ (evil-set-leader 'motion (kbd "SPC")) (setq evil-respect-visual-line-mode t) (setq evil-undo-system 'undo-fu) + (setq evil-redo-function 'undo-fu-only-redo) (evil-mode 1)) (with-eval-after-load 'evil-maps From 3e1caa4cde9bd6033c6fb8455cf3c15f3eb40770 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 28 Dec 2024 11:35:36 -0600 Subject: [PATCH 072/317] Quicker nix shell? --- profiles/work/configuration.nix | 8 ++++++++ user/shell/sh.nix | 1 + 2 files changed, 9 insertions(+) diff --git a/profiles/work/configuration.nix b/profiles/work/configuration.nix index 8215742..a6cd9cb 100644 --- a/profiles/work/configuration.nix +++ b/profiles/work/configuration.nix @@ -162,6 +162,14 @@ echo "usage: comma PKGNAME... [EXECUTABLE]"; fi '') + (pkgs.writeScriptBin "comma-shell" '' + if [ "$#" = 0 ]; then + echo "usage: comma-shell PKGNAME1 [PKGNAME2 PKGNAME3...]"; + else + nix-shell -p $@ + fi + '') + ]; # I use zsh btw diff --git a/user/shell/sh.nix b/user/shell/sh.nix index 588a2ca..435718f 100644 --- a/user/shell/sh.nix +++ b/user/shell/sh.nix @@ -12,6 +12,7 @@ let fetch = "disfetch"; gitfetch = "onefetch"; "," = "comma"; + ",," = "comma-shell"; }; in { From 4b6d29902bffaa6eacb8b6764417c707a6da24c6 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 28 Dec 2024 11:36:50 -0600 Subject: [PATCH 073/317] note for later --- profiles/work/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 7435d20..53d8d8f 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -23,6 +23,8 @@ ../../user/hardware/bluetooth.nix # Bluetooth ]; + # TODO make nix path follow flakes + nix.package = pkgs.nix; nix.settings = { substituters = [ From 02a775ba572df8ddf7b7d1105f2ce6ebdf9becb9 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 28 Dec 2024 12:11:45 -0600 Subject: [PATCH 074/317] Some doas fixes --- system/security/doas.nix | 15 ++++++++++++++- user/app/emacs/init.el | 4 +++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/system/security/doas.nix b/system/security/doas.nix index ade34e3..56fec85 100644 --- a/system/security/doas.nix +++ b/system/security/doas.nix @@ -12,8 +12,21 @@ } { users = [ "${userSettings.username}" ]; - cmd = "tee"; + cmd = "nix"; noPass = true; + keepEnv = true; + } + { + users = [ "${userSettings.username}" ]; + cmd = "nixos-rebuild"; + noPass = true; + keepEnv = true; + } + { + users = [ "${userSettings.username}" ]; + cmd = "nix-collect-garbage"; + noPass = true; + keepEnv = true; } ]; diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 7a32142..62589dc 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -247,7 +247,9 @@ (require 'sudo-edit) (setq sudo-edit-local-method "doas") -(setq auth-source-save-behavior nil) +(setq auth-sources '("~/.authinfo.gpg")) +(setq auth-source-save-behavior "ask") +(sudo-edit-indicator-mode) (evil-define-key 'normal 'global (kbd "fU") 'sudo-edit) (evil-define-key 'normal 'global (kbd "fu") 'sudo-edit-find-file) From 166a8525e299f866ff8e441d23b4eb556e18ef1c Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 28 Dec 2024 12:17:48 -0600 Subject: [PATCH 075/317] More org roam keybinds --- user/app/emacs/init.el | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 62589dc..994321c 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -480,9 +480,14 @@ All my (performant) foldings needs are met between this and `org-show-subtree' (org-roam-db-autosync-mode -1) (setq org-roam-capture-templates '(("d" "default" plain "%?" :unnarrowed t :target (file+head "${slug}-%<%Y%m%d%H%M%S>.org" "#+title: ${title}")))) - (evil-define-key 'motion 'global (kbd "n.") 'org-roam-node-find) - (evil-define-key 'motion 'global (kbd "nr") 'org-roam-refile) - (evil-define-key 'motion 'global (kbd "nb") 'org-roam-buffer-toggle)) + (evil-define-key 'motion 'global (kbd "N.") 'org-roam-node-find) + (evil-define-key 'motion 'global (kbd "Nr") 'org-roam-refile) + (evil-define-key 'motion 'global (kbd "Nb") 'org-roam-buffer-toggle) + (evil-define-key 'motion 'global (kbd "nrdd") 'org-roam-dailies-goto-date) + (evil-define-key 'motion 'global (kbd "nrdt") 'org-roam-dailies-goto-today) + (evil-define-key 'motion 'global (kbd "nrdn") 'org-roam-dailies-goto-next-note) + (evil-define-key 'motion 'global (kbd "nrdp") 'org-roam-dailies-goto-previous-note) + ) (use-package org-node :ensure t @@ -491,8 +496,8 @@ All my (performant) foldings needs are met between this and `org-show-subtree' (setq org-node-extra-id-dirs '("~/Notes/")) (org-node-complete-at-point-mode) (setq org-roam-completion-everywhere nil) - (evil-define-key 'motion 'global (kbd "ni") 'org-node-insert-link) - (evil-define-key 'motion 'global (kbd "nR") 'org-node-rewrite-links-ask) + (evil-define-key 'motion 'global (kbd "Ni") 'org-node-insert-link) + (evil-define-key 'motion 'global (kbd "NR") 'org-node-rewrite-links-ask) ) (use-package org-node-fakeroam From 43b2240d2d06be712dadfc67909097d5718931d8 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 4 Jan 2025 06:37:18 -0600 Subject: [PATCH 076/317] Disable steam --- profiles/personal/configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/profiles/personal/configuration.nix b/profiles/personal/configuration.nix index dcf8925..143bc7e 100644 --- a/profiles/personal/configuration.nix +++ b/profiles/personal/configuration.nix @@ -8,7 +8,7 @@ [ ../work/configuration.nix # Personal is essentially work system + games ../../system/hardware-configuration.nix ../../system/app/gamemode.nix - ../../system/app/steam.nix + #../../system/app/steam.nix ../../system/app/prismlauncher.nix ../../system/security/doas.nix ../../system/security/gpg.nix From c7a8e44bb6dbebf1f17a0efecc15d65927061d8f Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 4 Jan 2025 06:37:33 -0600 Subject: [PATCH 077/317] inherit pkgs-unstable --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index f7fb3f9..c2c6211 100644 --- a/flake.nix +++ b/flake.nix @@ -132,6 +132,7 @@ extraSpecialArgs = { # pass config variables from above inherit pkgs-stable; + inherit pkgs-unstable; inherit systemSettings; inherit userSettings; inherit inputs; @@ -149,6 +150,7 @@ specialArgs = { # pass config variables from above inherit pkgs-stable; + inherit pkgs-unstable; inherit systemSettings; inherit userSettings; inherit inputs; From 90d9b7a6b858558602c6a3de3062e9f471c5d898 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 7 Jan 2025 14:33:53 -0600 Subject: [PATCH 078/317] Updated stylix schema --- system/style/stylix.nix | 15 +++++------ themes/alph/alph.yaml | 18 ------------- themes/alph/backgroundsha256.txt | 1 - themes/alph/backgroundurl.txt | 1 - themes/alph/default.nix | 25 ++++++++++++++++++ themes/alph/polarity.txt | 1 - themes/ashes/ashes.yaml | 19 -------------- themes/ashes/backgroundsha256.txt | 1 - themes/ashes/backgroundurl.txt | 1 - themes/ashes/default.nix | 25 ++++++++++++++++++ themes/ashes/polarity.txt | 1 - themes/atelier-cave/atelier-cave.yaml | 18 ------------- themes/atelier-cave/backgroundsha256.txt | 1 - themes/atelier-cave/backgroundurl.txt | 1 - themes/atelier-cave/default.nix | 25 ++++++++++++++++++ themes/atelier-cave/polarity.txt | 1 - themes/atelier-dune/atelier-dune.yaml | 18 ------------- themes/atelier-dune/backgroundsha256.txt | 1 - themes/atelier-dune/backgroundurl.txt | 1 - themes/atelier-dune/default.nix | 25 ++++++++++++++++++ themes/atelier-dune/polarity.txt | 1 - themes/atelier-estuary/atelier-estuary.yaml | 18 ------------- themes/atelier-estuary/backgroundsha256.txt | 1 - themes/atelier-estuary/backgroundurl.txt | 1 - themes/atelier-estuary/default.nix | 25 ++++++++++++++++++ themes/atelier-estuary/polarity.txt | 1 - themes/atelier-forest/atelier-forest.yaml | 18 ------------- themes/atelier-forest/backgroundsha256.txt | 1 - themes/atelier-forest/backgroundurl.txt | 1 - themes/atelier-forest/default.nix | 25 ++++++++++++++++++ themes/atelier-forest/polarity.txt | 1 - themes/atelier-heath/atelier-heath.yaml | 18 ------------- themes/atelier-heath/backgroundsha256.txt | 1 - themes/atelier-heath/backgroundurl.txt | 1 - themes/atelier-heath/default.nix | 25 ++++++++++++++++++ themes/atelier-heath/polarity.txt | 1 - themes/atelier-lakeside/atelier-lakeside.yaml | 18 ------------- themes/atelier-lakeside/backgroundsha256.txt | 1 - themes/atelier-lakeside/backgroundurl.txt | 1 - themes/atelier-lakeside/default.nix | 25 ++++++++++++++++++ themes/atelier-lakeside/polarity.txt | 1 - themes/atelier-plateau/atelier-plateau.yaml | 18 ------------- themes/atelier-plateau/backgroundsha256.txt | 1 - themes/atelier-plateau/backgroundurl.txt | 1 - themes/atelier-plateau/default.nix | 25 ++++++++++++++++++ themes/atelier-plateau/polarity.txt | 1 - themes/atelier-savanna/atelier-savanna.yaml | 18 ------------- themes/atelier-savanna/backgroundsha256.txt | 1 - themes/atelier-savanna/backgroundurl.txt | 1 - themes/atelier-savanna/default.nix | 25 ++++++++++++++++++ themes/atelier-savanna/polarity.txt | 1 - themes/atelier-seaside/atelier-seaside.yaml | 18 ------------- themes/atelier-seaside/backgroundsha256.txt | 1 - themes/atelier-seaside/backgroundurl.txt | 1 - themes/atelier-seaside/default.nix | 25 ++++++++++++++++++ themes/atelier-seaside/polarity.txt | 1 - .../atelier-sulphurpool.yaml | 18 ------------- .../atelier-sulphurpool/backgroundsha256.txt | 1 - themes/atelier-sulphurpool/backgroundurl.txt | 1 - themes/atelier-sulphurpool/default.nix | 25 ++++++++++++++++++ themes/atelier-sulphurpool/polarity.txt | 1 - themes/ayu-dark/ayu-dark.yaml | 18 ------------- themes/ayu-dark/backgroundsha256.txt | 1 - themes/ayu-dark/backgroundurl.txt | 1 - themes/ayu-dark/default.nix | 25 ++++++++++++++++++ themes/ayu-dark/polarity.txt | 1 - themes/background-test.sh | 2 +- themes/bespin/backgroundsha256.txt | 1 - themes/bespin/backgroundurl.txt | 1 - themes/bespin/bespin.yaml | 19 -------------- themes/bespin/default.nix | 25 ++++++++++++++++++ themes/bespin/polarity.txt | 1 - themes/caret/backgroundsha256.txt | 1 - themes/caret/backgroundurl.txt | 1 - themes/caret/caret.yaml | 18 ------------- themes/caret/default.nix | 25 ++++++++++++++++++ themes/caret/polarity.txt | 1 - themes/catppuccin-frappe/backgroundsha256.txt | 1 - themes/catppuccin-frappe/backgroundurl.txt | 1 - .../catppuccin-frappe/catppuccin-frappe.yaml | 18 ------------- themes/catppuccin-frappe/default.nix | 25 ++++++++++++++++++ themes/catppuccin-frappe/polarity.txt | 1 - themes/catppuccin-mocha/backgroundsha256.txt | 1 - themes/catppuccin-mocha/backgroundurl.txt | 1 - themes/catppuccin-mocha/catppuccin-mocha.yaml | 18 ------------- themes/catppuccin-mocha/default.nix | 25 ++++++++++++++++++ themes/catppuccin-mocha/polarity.txt | 1 - themes/darkmoss/backgroundsha256.txt | 1 - themes/darkmoss/backgroundurl.txt | 1 - themes/darkmoss/darkmoss.yaml | 18 ------------- themes/darkmoss/default.nix | 25 ++++++++++++++++++ themes/darkmoss/polarity.txt | 1 - themes/doom-one/backgroundsha256.txt | 1 - themes/doom-one/backgroundurl.txt | 1 - themes/doom-one/default.nix | 25 ++++++++++++++++++ themes/doom-one/doom-one.yaml | 21 --------------- themes/doom-one/polarity.txt | 1 - themes/dracula/backgroundsha256.txt | 1 - themes/dracula/backgroundurl.txt | 1 - themes/dracula/default.nix | 25 ++++++++++++++++++ themes/dracula/dracula.yaml | 18 ------------- themes/dracula/polarity.txt | 1 - themes/ember/backgroundsha256.txt | 1 - themes/ember/backgroundurl.txt | 1 - themes/ember/default.nix | 25 ++++++++++++++++++ themes/ember/ember.yaml | 18 ------------- themes/ember/polarity.txt | 1 - themes/emil/backgroundsha256.txt | 1 - themes/emil/backgroundurl.txt | 1 - themes/emil/default.nix | 25 ++++++++++++++++++ themes/emil/emil.yaml | 18 ------------- themes/emil/polarity.txt | 1 - themes/eris/backgroundsha256.txt | 1 - themes/eris/backgroundurl.txt | 1 - themes/eris/default.nix | 25 ++++++++++++++++++ themes/eris/eris.yaml | 18 ------------- themes/eris/polarity.txt | 1 - themes/eva/backgroundsha256.txt | 1 - themes/eva/backgroundurl.txt | 1 - themes/eva/default.nix | 25 ++++++++++++++++++ themes/eva/eva.yaml | 18 ------------- themes/eva/polarity.txt | 1 - themes/everforest/backgroundsha256.txt | 1 - themes/everforest/backgroundurl.txt | 1 - themes/everforest/default.nix | 25 ++++++++++++++++++ themes/everforest/everforest.yaml | 18 ------------- themes/everforest/polarity.txt | 1 - themes/fairy-floss/backgroundsha256.txt | 1 - themes/fairy-floss/backgroundurl.txt | 1 - themes/fairy-floss/default.nix | 25 ++++++++++++++++++ themes/fairy-floss/fairy-floss.yaml | 20 -------------- themes/fairy-floss/polarity.txt | 1 - themes/gigavolt/backgroundsha256.txt | 1 - themes/gigavolt/backgroundurl.txt | 1 - themes/gigavolt/default.nix | 25 ++++++++++++++++++ themes/gigavolt/gigavolt.yaml | 18 ------------- themes/gigavolt/polarity.txt | 1 - themes/gruvbox-dark-hard/backgroundsha256.txt | 1 - themes/gruvbox-dark-hard/backgroundurl.txt | 1 - themes/gruvbox-dark-hard/default.nix | 25 ++++++++++++++++++ .../gruvbox-dark-hard/gruvbox-dark-hard.yaml | 18 ------------- themes/gruvbox-dark-hard/polarity.txt | 1 - .../gruvbox-dark-medium/backgroundsha256.txt | 1 - themes/gruvbox-dark-medium/backgroundurl.txt | 1 - themes/gruvbox-dark-medium/default.nix | 25 ++++++++++++++++++ .../gruvbox-dark-medium.yaml | 18 ------------- themes/gruvbox-dark-medium/polarity.txt | 1 - .../gruvbox-light-hard/backgroundsha256.txt | 1 - themes/gruvbox-light-hard/backgroundurl.txt | 1 - themes/gruvbox-light-hard/default.nix | 25 ++++++++++++++++++ .../gruvbox-light-hard.yaml | 18 ------------- themes/gruvbox-light-hard/polarity.txt | 1 - .../gruvbox-light-medium/backgroundsha256.txt | 1 - themes/gruvbox-light-medium/backgroundurl.txt | 1 - themes/gruvbox-light-medium/default.nix | 25 ++++++++++++++++++ .../gruvbox-light-medium.yaml | 18 ------------- themes/gruvbox-light-medium/polarity.txt | 1 - themes/helios/backgroundsha256.txt | 1 - themes/helios/backgroundurl.txt | 1 - themes/helios/default.nix | 25 ++++++++++++++++++ themes/helios/helios.yaml | 19 -------------- themes/helios/polarity.txt | 1 - themes/henna/backgroundsha256.txt | 1 - themes/henna/backgroundurl.txt | 1 - themes/henna/default.nix | 25 ++++++++++++++++++ themes/henna/henna.yaml | 20 -------------- themes/henna/polarity.txt | 1 - themes/horizon-dark/backgroundsha256.txt | 1 - themes/horizon-dark/backgroundurl.txt | 1 - themes/horizon-dark/default.nix | 25 ++++++++++++++++++ themes/horizon-dark/horizon-dark.yaml | 18 ------------- themes/horizon-dark/polarity.txt | 1 - themes/io/backgroundsha256.txt | 1 - themes/io/backgroundurl.txt | 1 - themes/io/default.nix | 26 +++++++++++++++++++ themes/io/io.yaml | 18 ------------- themes/io/polarity.txt | 1 - themes/isotope/backgroundsha256.txt | 1 - themes/isotope/backgroundurl.txt | 1 - themes/isotope/default.nix | 25 ++++++++++++++++++ themes/isotope/isotope.yaml | 19 -------------- themes/isotope/polarity.txt | 1 - themes/manegarm/backgroundsha256.txt | 1 - themes/manegarm/backgroundurl.txt | 1 - themes/manegarm/default.nix | 25 ++++++++++++++++++ themes/manegarm/manegarm.yaml | 21 --------------- themes/manegarm/polarity.txt | 1 - themes/material-vivid/backgroundsha256.txt | 1 - themes/material-vivid/backgroundurl.txt | 1 - themes/material-vivid/default.nix | 25 ++++++++++++++++++ themes/material-vivid/material-vivid.yaml | 18 ------------- themes/material-vivid/polarity.txt | 1 - themes/miramare/backgroundsha256.txt | 1 - themes/miramare/backgroundurl.txt | 1 - themes/miramare/default.nix | 25 ++++++++++++++++++ themes/miramare/miramare.yaml | 20 -------------- themes/miramare/polarity.txt | 1 - themes/monokai/backgroundsha256.txt | 1 - themes/monokai/backgroundurl.txt | 1 - themes/monokai/default.nix | 25 ++++++++++++++++++ themes/monokai/monokai.yaml | 18 ------------- themes/monokai/polarity.txt | 1 - themes/nord/backgroundsha256.txt | 1 - themes/nord/backgroundurl.txt | 1 - themes/nord/default.nix | 25 ++++++++++++++++++ themes/nord/nord.yaml | 18 ------------- themes/nord/polarity.txt | 1 - themes/oceanic-next/backgroundsha256.txt | 1 - themes/oceanic-next/backgroundurl.txt | 1 - themes/oceanic-next/default.nix | 25 ++++++++++++++++++ themes/oceanic-next/oceanic-next.yaml | 18 ------------- themes/oceanic-next/polarity.txt | 1 - themes/old-hope/backgroundsha256.txt | 1 - themes/old-hope/backgroundurl.txt | 1 - themes/old-hope/default.nix | 25 ++++++++++++++++++ themes/old-hope/old-hope.yaml | 20 -------------- themes/old-hope/polarity.txt | 1 - themes/outrun-dark/backgroundsha256.txt | 1 - themes/outrun-dark/backgroundurl.txt | 1 - themes/outrun-dark/default.nix | 25 ++++++++++++++++++ themes/outrun-dark/outrun-dark.yaml | 18 ------------- themes/outrun-dark/polarity.txt | 1 - themes/selenized-dark/backgroundsha256.txt | 1 - themes/selenized-dark/backgroundurl.txt | 1 - themes/selenized-dark/default.nix | 25 ++++++++++++++++++ themes/selenized-dark/polarity.txt | 1 - themes/selenized-dark/selenized-dark.yaml | 18 ------------- themes/selenized-light/backgroundsha256.txt | 1 - themes/selenized-light/backgroundurl.txt | 1 - themes/selenized-light/default.nix | 25 ++++++++++++++++++ themes/selenized-light/polarity.txt | 1 - themes/selenized-light/selenized-light.yaml | 18 ------------- themes/solarized-dark/backgroundsha256.txt | 1 - themes/solarized-dark/backgroundurl.txt | 1 - themes/solarized-dark/default.nix | 25 ++++++++++++++++++ themes/solarized-dark/polarity.txt | 1 - themes/solarized-dark/solarized-dark.yaml | 18 ------------- themes/solarized-light/backgroundsha256.txt | 1 - themes/solarized-light/backgroundurl.txt | 1 - themes/solarized-light/default.nix | 25 ++++++++++++++++++ themes/solarized-light/polarity.txt | 1 - themes/solarized-light/solarized-light.yaml | 18 ------------- themes/spaceduck/backgroundsha256.txt | 2 -- themes/spaceduck/backgroundurl.txt | 1 - themes/spaceduck/default.nix | 25 ++++++++++++++++++ themes/spaceduck/polarity.txt | 1 - themes/spaceduck/spaceduck.yaml | 18 ------------- themes/stella/backgroundsha256.txt | 1 - themes/stella/backgroundurl.txt | 1 - themes/stella/default.nix | 25 ++++++++++++++++++ themes/stella/polarity.txt | 1 - themes/stella/stella.yaml | 18 ------------- themes/summerfruit-dark/backgroundsha256.txt | 1 - themes/summerfruit-dark/backgroundurl.txt | 1 - themes/summerfruit-dark/default.nix | 25 ++++++++++++++++++ themes/summerfruit-dark/polarity.txt | 1 - themes/summerfruit-dark/summerfruit-dark.yaml | 18 ------------- themes/tomorrow-night/backgroundsha256.txt | 1 - themes/tomorrow-night/backgroundurl.txt | 1 - themes/tomorrow-night/default.nix | 25 ++++++++++++++++++ themes/tomorrow-night/polarity.txt | 1 - themes/tomorrow-night/tomorrow-night.yaml | 18 ------------- themes/twilight/backgroundsha256.txt | 1 - themes/twilight/backgroundurl.txt | 1 - themes/twilight/default.nix | 25 ++++++++++++++++++ themes/twilight/polarity.txt | 1 - themes/twilight/twilight.yaml | 18 ------------- themes/ubuntu/backgroundsha256.txt | 1 - themes/ubuntu/backgroundurl.txt | 1 - themes/ubuntu/default.nix | 25 ++++++++++++++++++ themes/ubuntu/polarity.txt | 1 - themes/ubuntu/ubuntu.yaml | 21 --------------- themes/uwunicorn/backgroundsha256.txt | 1 - themes/uwunicorn/backgroundurl.txt | 1 - themes/uwunicorn/default.nix | 25 ++++++++++++++++++ themes/uwunicorn/polarity.txt | 1 - themes/uwunicorn/uwunicorn.yaml | 18 ------------- themes/windows-95/backgroundsha256.txt | 1 - themes/windows-95/backgroundurl.txt | 1 - themes/windows-95/default.nix | 25 ++++++++++++++++++ themes/windows-95/polarity.txt | 1 - themes/windows-95/windows-95.yaml | 18 ------------- themes/woodland/backgroundsha256.txt | 1 - themes/woodland/backgroundurl.txt | 1 - themes/woodland/default.nix | 25 ++++++++++++++++++ themes/woodland/polarity.txt | 1 - themes/woodland/woodland.yaml | 18 ------------- themes/xcode-dusk/backgroundsha256.txt | 1 - themes/xcode-dusk/backgroundurl.txt | 1 - themes/xcode-dusk/default.nix | 25 ++++++++++++++++++ themes/xcode-dusk/polarity.txt | 1 - themes/xcode-dusk/xcode-dusk.yaml | 18 ------------- user/style/stylix.nix | 14 ++++------ 293 files changed, 1463 insertions(+), 1259 deletions(-) delete mode 100644 themes/alph/alph.yaml delete mode 100644 themes/alph/backgroundsha256.txt delete mode 100644 themes/alph/backgroundurl.txt create mode 100644 themes/alph/default.nix delete mode 100644 themes/alph/polarity.txt delete mode 100644 themes/ashes/ashes.yaml delete mode 100644 themes/ashes/backgroundsha256.txt delete mode 100644 themes/ashes/backgroundurl.txt create mode 100644 themes/ashes/default.nix delete mode 100644 themes/ashes/polarity.txt delete mode 100644 themes/atelier-cave/atelier-cave.yaml delete mode 100644 themes/atelier-cave/backgroundsha256.txt delete mode 100644 themes/atelier-cave/backgroundurl.txt create mode 100644 themes/atelier-cave/default.nix delete mode 100644 themes/atelier-cave/polarity.txt delete mode 100644 themes/atelier-dune/atelier-dune.yaml delete mode 100644 themes/atelier-dune/backgroundsha256.txt delete mode 100644 themes/atelier-dune/backgroundurl.txt create mode 100644 themes/atelier-dune/default.nix delete mode 100644 themes/atelier-dune/polarity.txt delete mode 100644 themes/atelier-estuary/atelier-estuary.yaml delete mode 100644 themes/atelier-estuary/backgroundsha256.txt delete mode 100644 themes/atelier-estuary/backgroundurl.txt create mode 100644 themes/atelier-estuary/default.nix delete mode 100644 themes/atelier-estuary/polarity.txt delete mode 100644 themes/atelier-forest/atelier-forest.yaml delete mode 100644 themes/atelier-forest/backgroundsha256.txt delete mode 100644 themes/atelier-forest/backgroundurl.txt create mode 100644 themes/atelier-forest/default.nix delete mode 100644 themes/atelier-forest/polarity.txt delete mode 100644 themes/atelier-heath/atelier-heath.yaml delete mode 100644 themes/atelier-heath/backgroundsha256.txt delete mode 100644 themes/atelier-heath/backgroundurl.txt create mode 100644 themes/atelier-heath/default.nix delete mode 100644 themes/atelier-heath/polarity.txt delete mode 100644 themes/atelier-lakeside/atelier-lakeside.yaml delete mode 100644 themes/atelier-lakeside/backgroundsha256.txt delete mode 100644 themes/atelier-lakeside/backgroundurl.txt create mode 100644 themes/atelier-lakeside/default.nix delete mode 100644 themes/atelier-lakeside/polarity.txt delete mode 100644 themes/atelier-plateau/atelier-plateau.yaml delete mode 100644 themes/atelier-plateau/backgroundsha256.txt delete mode 100644 themes/atelier-plateau/backgroundurl.txt create mode 100644 themes/atelier-plateau/default.nix delete mode 100644 themes/atelier-plateau/polarity.txt delete mode 100644 themes/atelier-savanna/atelier-savanna.yaml delete mode 100644 themes/atelier-savanna/backgroundsha256.txt delete mode 100644 themes/atelier-savanna/backgroundurl.txt create mode 100644 themes/atelier-savanna/default.nix delete mode 100644 themes/atelier-savanna/polarity.txt delete mode 100644 themes/atelier-seaside/atelier-seaside.yaml delete mode 100644 themes/atelier-seaside/backgroundsha256.txt delete mode 100644 themes/atelier-seaside/backgroundurl.txt create mode 100644 themes/atelier-seaside/default.nix delete mode 100644 themes/atelier-seaside/polarity.txt delete mode 100644 themes/atelier-sulphurpool/atelier-sulphurpool.yaml delete mode 100644 themes/atelier-sulphurpool/backgroundsha256.txt delete mode 100644 themes/atelier-sulphurpool/backgroundurl.txt create mode 100644 themes/atelier-sulphurpool/default.nix delete mode 100644 themes/atelier-sulphurpool/polarity.txt delete mode 100644 themes/ayu-dark/ayu-dark.yaml delete mode 100644 themes/ayu-dark/backgroundsha256.txt delete mode 100644 themes/ayu-dark/backgroundurl.txt create mode 100644 themes/ayu-dark/default.nix delete mode 100644 themes/ayu-dark/polarity.txt delete mode 100644 themes/bespin/backgroundsha256.txt delete mode 100644 themes/bespin/backgroundurl.txt delete mode 100644 themes/bespin/bespin.yaml create mode 100644 themes/bespin/default.nix delete mode 100644 themes/bespin/polarity.txt delete mode 100644 themes/caret/backgroundsha256.txt delete mode 100644 themes/caret/backgroundurl.txt delete mode 100644 themes/caret/caret.yaml create mode 100644 themes/caret/default.nix delete mode 100644 themes/caret/polarity.txt delete mode 100644 themes/catppuccin-frappe/backgroundsha256.txt delete mode 100644 themes/catppuccin-frappe/backgroundurl.txt delete mode 100644 themes/catppuccin-frappe/catppuccin-frappe.yaml create mode 100644 themes/catppuccin-frappe/default.nix delete mode 100644 themes/catppuccin-frappe/polarity.txt delete mode 100644 themes/catppuccin-mocha/backgroundsha256.txt delete mode 100644 themes/catppuccin-mocha/backgroundurl.txt delete mode 100644 themes/catppuccin-mocha/catppuccin-mocha.yaml create mode 100644 themes/catppuccin-mocha/default.nix delete mode 100644 themes/catppuccin-mocha/polarity.txt delete mode 100644 themes/darkmoss/backgroundsha256.txt delete mode 100644 themes/darkmoss/backgroundurl.txt delete mode 100644 themes/darkmoss/darkmoss.yaml create mode 100644 themes/darkmoss/default.nix delete mode 100644 themes/darkmoss/polarity.txt delete mode 100644 themes/doom-one/backgroundsha256.txt delete mode 100644 themes/doom-one/backgroundurl.txt create mode 100644 themes/doom-one/default.nix delete mode 100644 themes/doom-one/doom-one.yaml delete mode 100644 themes/doom-one/polarity.txt delete mode 100644 themes/dracula/backgroundsha256.txt delete mode 100644 themes/dracula/backgroundurl.txt create mode 100644 themes/dracula/default.nix delete mode 100644 themes/dracula/dracula.yaml delete mode 100644 themes/dracula/polarity.txt delete mode 100644 themes/ember/backgroundsha256.txt delete mode 100644 themes/ember/backgroundurl.txt create mode 100644 themes/ember/default.nix delete mode 100644 themes/ember/ember.yaml delete mode 100644 themes/ember/polarity.txt delete mode 100644 themes/emil/backgroundsha256.txt delete mode 100644 themes/emil/backgroundurl.txt create mode 100644 themes/emil/default.nix delete mode 100644 themes/emil/emil.yaml delete mode 100644 themes/emil/polarity.txt delete mode 100644 themes/eris/backgroundsha256.txt delete mode 100644 themes/eris/backgroundurl.txt create mode 100644 themes/eris/default.nix delete mode 100644 themes/eris/eris.yaml delete mode 100644 themes/eris/polarity.txt delete mode 100644 themes/eva/backgroundsha256.txt delete mode 100644 themes/eva/backgroundurl.txt create mode 100644 themes/eva/default.nix delete mode 100644 themes/eva/eva.yaml delete mode 100644 themes/eva/polarity.txt delete mode 100644 themes/everforest/backgroundsha256.txt delete mode 100644 themes/everforest/backgroundurl.txt create mode 100644 themes/everforest/default.nix delete mode 100644 themes/everforest/everforest.yaml delete mode 100644 themes/everforest/polarity.txt delete mode 100644 themes/fairy-floss/backgroundsha256.txt delete mode 100644 themes/fairy-floss/backgroundurl.txt create mode 100644 themes/fairy-floss/default.nix delete mode 100644 themes/fairy-floss/fairy-floss.yaml delete mode 100644 themes/fairy-floss/polarity.txt delete mode 100644 themes/gigavolt/backgroundsha256.txt delete mode 100644 themes/gigavolt/backgroundurl.txt create mode 100644 themes/gigavolt/default.nix delete mode 100644 themes/gigavolt/gigavolt.yaml delete mode 100644 themes/gigavolt/polarity.txt delete mode 100644 themes/gruvbox-dark-hard/backgroundsha256.txt delete mode 100644 themes/gruvbox-dark-hard/backgroundurl.txt create mode 100644 themes/gruvbox-dark-hard/default.nix delete mode 100644 themes/gruvbox-dark-hard/gruvbox-dark-hard.yaml delete mode 100644 themes/gruvbox-dark-hard/polarity.txt delete mode 100644 themes/gruvbox-dark-medium/backgroundsha256.txt delete mode 100644 themes/gruvbox-dark-medium/backgroundurl.txt create mode 100644 themes/gruvbox-dark-medium/default.nix delete mode 100644 themes/gruvbox-dark-medium/gruvbox-dark-medium.yaml delete mode 100644 themes/gruvbox-dark-medium/polarity.txt delete mode 100644 themes/gruvbox-light-hard/backgroundsha256.txt delete mode 100644 themes/gruvbox-light-hard/backgroundurl.txt create mode 100644 themes/gruvbox-light-hard/default.nix delete mode 100644 themes/gruvbox-light-hard/gruvbox-light-hard.yaml delete mode 100644 themes/gruvbox-light-hard/polarity.txt delete mode 100644 themes/gruvbox-light-medium/backgroundsha256.txt delete mode 100644 themes/gruvbox-light-medium/backgroundurl.txt create mode 100644 themes/gruvbox-light-medium/default.nix delete mode 100644 themes/gruvbox-light-medium/gruvbox-light-medium.yaml delete mode 100644 themes/gruvbox-light-medium/polarity.txt delete mode 100644 themes/helios/backgroundsha256.txt delete mode 100644 themes/helios/backgroundurl.txt create mode 100644 themes/helios/default.nix delete mode 100644 themes/helios/helios.yaml delete mode 100644 themes/helios/polarity.txt delete mode 100644 themes/henna/backgroundsha256.txt delete mode 100644 themes/henna/backgroundurl.txt create mode 100644 themes/henna/default.nix delete mode 100644 themes/henna/henna.yaml delete mode 100644 themes/henna/polarity.txt delete mode 100644 themes/horizon-dark/backgroundsha256.txt delete mode 100644 themes/horizon-dark/backgroundurl.txt create mode 100644 themes/horizon-dark/default.nix delete mode 100644 themes/horizon-dark/horizon-dark.yaml delete mode 100644 themes/horizon-dark/polarity.txt delete mode 100644 themes/io/backgroundsha256.txt delete mode 100644 themes/io/backgroundurl.txt create mode 100644 themes/io/default.nix delete mode 100644 themes/io/io.yaml delete mode 100644 themes/io/polarity.txt delete mode 100644 themes/isotope/backgroundsha256.txt delete mode 100644 themes/isotope/backgroundurl.txt create mode 100644 themes/isotope/default.nix delete mode 100644 themes/isotope/isotope.yaml delete mode 100644 themes/isotope/polarity.txt delete mode 100644 themes/manegarm/backgroundsha256.txt delete mode 100644 themes/manegarm/backgroundurl.txt create mode 100644 themes/manegarm/default.nix delete mode 100644 themes/manegarm/manegarm.yaml delete mode 100644 themes/manegarm/polarity.txt delete mode 100644 themes/material-vivid/backgroundsha256.txt delete mode 100644 themes/material-vivid/backgroundurl.txt create mode 100644 themes/material-vivid/default.nix delete mode 100644 themes/material-vivid/material-vivid.yaml delete mode 100644 themes/material-vivid/polarity.txt delete mode 100644 themes/miramare/backgroundsha256.txt delete mode 100644 themes/miramare/backgroundurl.txt create mode 100644 themes/miramare/default.nix delete mode 100644 themes/miramare/miramare.yaml delete mode 100644 themes/miramare/polarity.txt delete mode 100644 themes/monokai/backgroundsha256.txt delete mode 100644 themes/monokai/backgroundurl.txt create mode 100644 themes/monokai/default.nix delete mode 100644 themes/monokai/monokai.yaml delete mode 100644 themes/monokai/polarity.txt delete mode 100644 themes/nord/backgroundsha256.txt delete mode 100644 themes/nord/backgroundurl.txt create mode 100644 themes/nord/default.nix delete mode 100644 themes/nord/nord.yaml delete mode 100644 themes/nord/polarity.txt delete mode 100644 themes/oceanic-next/backgroundsha256.txt delete mode 100644 themes/oceanic-next/backgroundurl.txt create mode 100644 themes/oceanic-next/default.nix delete mode 100644 themes/oceanic-next/oceanic-next.yaml delete mode 100644 themes/oceanic-next/polarity.txt delete mode 100644 themes/old-hope/backgroundsha256.txt delete mode 100644 themes/old-hope/backgroundurl.txt create mode 100644 themes/old-hope/default.nix delete mode 100644 themes/old-hope/old-hope.yaml delete mode 100644 themes/old-hope/polarity.txt delete mode 100644 themes/outrun-dark/backgroundsha256.txt delete mode 100644 themes/outrun-dark/backgroundurl.txt create mode 100644 themes/outrun-dark/default.nix delete mode 100644 themes/outrun-dark/outrun-dark.yaml delete mode 100644 themes/outrun-dark/polarity.txt delete mode 100644 themes/selenized-dark/backgroundsha256.txt delete mode 100644 themes/selenized-dark/backgroundurl.txt create mode 100644 themes/selenized-dark/default.nix delete mode 100644 themes/selenized-dark/polarity.txt delete mode 100644 themes/selenized-dark/selenized-dark.yaml delete mode 100644 themes/selenized-light/backgroundsha256.txt delete mode 100644 themes/selenized-light/backgroundurl.txt create mode 100644 themes/selenized-light/default.nix delete mode 100644 themes/selenized-light/polarity.txt delete mode 100644 themes/selenized-light/selenized-light.yaml delete mode 100644 themes/solarized-dark/backgroundsha256.txt delete mode 100644 themes/solarized-dark/backgroundurl.txt create mode 100644 themes/solarized-dark/default.nix delete mode 100644 themes/solarized-dark/polarity.txt delete mode 100644 themes/solarized-dark/solarized-dark.yaml delete mode 100644 themes/solarized-light/backgroundsha256.txt delete mode 100644 themes/solarized-light/backgroundurl.txt create mode 100644 themes/solarized-light/default.nix delete mode 100644 themes/solarized-light/polarity.txt delete mode 100644 themes/solarized-light/solarized-light.yaml delete mode 100644 themes/spaceduck/backgroundsha256.txt delete mode 100644 themes/spaceduck/backgroundurl.txt create mode 100644 themes/spaceduck/default.nix delete mode 100644 themes/spaceduck/polarity.txt delete mode 100644 themes/spaceduck/spaceduck.yaml delete mode 100644 themes/stella/backgroundsha256.txt delete mode 100644 themes/stella/backgroundurl.txt create mode 100644 themes/stella/default.nix delete mode 100644 themes/stella/polarity.txt delete mode 100644 themes/stella/stella.yaml delete mode 100644 themes/summerfruit-dark/backgroundsha256.txt delete mode 100644 themes/summerfruit-dark/backgroundurl.txt create mode 100644 themes/summerfruit-dark/default.nix delete mode 100644 themes/summerfruit-dark/polarity.txt delete mode 100644 themes/summerfruit-dark/summerfruit-dark.yaml delete mode 100644 themes/tomorrow-night/backgroundsha256.txt delete mode 100644 themes/tomorrow-night/backgroundurl.txt create mode 100644 themes/tomorrow-night/default.nix delete mode 100644 themes/tomorrow-night/polarity.txt delete mode 100644 themes/tomorrow-night/tomorrow-night.yaml delete mode 100644 themes/twilight/backgroundsha256.txt delete mode 100644 themes/twilight/backgroundurl.txt create mode 100644 themes/twilight/default.nix delete mode 100644 themes/twilight/polarity.txt delete mode 100644 themes/twilight/twilight.yaml delete mode 100644 themes/ubuntu/backgroundsha256.txt delete mode 100644 themes/ubuntu/backgroundurl.txt create mode 100644 themes/ubuntu/default.nix delete mode 100644 themes/ubuntu/polarity.txt delete mode 100644 themes/ubuntu/ubuntu.yaml delete mode 100644 themes/uwunicorn/backgroundsha256.txt delete mode 100644 themes/uwunicorn/backgroundurl.txt create mode 100644 themes/uwunicorn/default.nix delete mode 100644 themes/uwunicorn/polarity.txt delete mode 100644 themes/uwunicorn/uwunicorn.yaml delete mode 100644 themes/windows-95/backgroundsha256.txt delete mode 100644 themes/windows-95/backgroundurl.txt create mode 100644 themes/windows-95/default.nix delete mode 100644 themes/windows-95/polarity.txt delete mode 100644 themes/windows-95/windows-95.yaml delete mode 100644 themes/woodland/backgroundsha256.txt delete mode 100644 themes/woodland/backgroundurl.txt create mode 100644 themes/woodland/default.nix delete mode 100644 themes/woodland/polarity.txt delete mode 100644 themes/woodland/woodland.yaml delete mode 100644 themes/xcode-dusk/backgroundsha256.txt delete mode 100644 themes/xcode-dusk/backgroundurl.txt create mode 100644 themes/xcode-dusk/default.nix delete mode 100644 themes/xcode-dusk/polarity.txt delete mode 100644 themes/xcode-dusk/xcode-dusk.yaml diff --git a/system/style/stylix.nix b/system/style/stylix.nix index 7b7bf6b..4c3d158 100644 --- a/system/style/stylix.nix +++ b/system/style/stylix.nix @@ -1,22 +1,19 @@ { lib, pkgs, inputs, userSettings, ... }: let - themePath = "../../../themes/"+userSettings.theme+"/"+userSettings.theme+".yaml"; - themePolarity = lib.removeSuffix "\n" (builtins.readFile (./. + "../../../themes"+("/"+userSettings.theme)+"/polarity.txt")); - myLightDMTheme = if themePolarity == "light" then "Adwaita" else "Adwaita-dark"; - backgroundUrl = builtins.readFile (./. + "../../../themes"+("/"+userSettings.theme)+"/backgroundurl.txt"); - backgroundSha256 = builtins.readFile (./. + "../../../themes/"+("/"+userSettings.theme)+"/backgroundsha256.txt"); + theme = import (./. + "../../../themes"+("/"+userSettings.theme)); + myLightDMTheme = if theme.polarity == "light" then "Adwaita" else "Adwaita-dark"; in { imports = [ inputs.stylix.nixosModules.stylix ]; stylix.autoEnable = false; - stylix.polarity = themePolarity; + stylix.polarity = theme.polarity; stylix.image = pkgs.fetchurl { - url = backgroundUrl; - sha256 = backgroundSha256; + url = theme.backgroundUrl; + sha256 = theme.backgroundSha256; }; - stylix.base16Scheme = ./. + themePath; + stylix.base16Scheme = ./. + theme; stylix.fonts = { monospace = { name = userSettings.font; diff --git a/themes/alph/alph.yaml b/themes/alph/alph.yaml deleted file mode 100644 index 40403eb..0000000 --- a/themes/alph/alph.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Alph" -author: "LibrePhoenix" -base00: "fbfbff" -base01: "D8E4F4" -base02: "BCCDE1" -base03: "9FB4D1" -base04: "667D9F" -base05: "444452" -base06: "333349" -base07: "141229" -base08: "AD0617" -base09: "872626" -base0A: "AD6A06" -base0B: "06AD72" -base0C: "06A3AD" -base0D: "0A5D97" -base0E: "5B037A" -base0F: "87267C" diff --git a/themes/alph/backgroundsha256.txt b/themes/alph/backgroundsha256.txt deleted file mode 100644 index f942354..0000000 --- a/themes/alph/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-ZM0X0IXsUwAgxdZileDOol8kBANxjW8oGrgha3OFjYE= diff --git a/themes/alph/backgroundurl.txt b/themes/alph/backgroundurl.txt deleted file mode 100644 index 8398587..0000000 --- a/themes/alph/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/132/401/75/painting-clouds-sky-landscape-wallpaper-57bfb2f40fd59f8acf4284a1e191c785.jpg diff --git a/themes/alph/default.nix b/themes/alph/default.nix new file mode 100644 index 0000000..ab61d90 --- /dev/null +++ b/themes/alph/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Alph"; + slug = "alph"; + author = "LibrePhoenix (https://github.com/librephoenix)"; + description = "Flagship light theme of the LibrePhoenix Channel"; + polarity = "light"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/132/401/75/painting-clouds-sky-landscape-wallpaper-57bfb2f40fd59f8acf4284a1e191c785.jpg"; + backgroundSha256 = "sha256-ZM0X0IXsUwAgxdZileDOol8kBANxjW8oGrgha3OFjYE="; + base00 = "fbfbff"; + base01 = "D8E4F4"; + base02 = "BCCDE1"; + base03 = "9FB4D1"; + base04 = "667D9F"; + base05 = "444452"; + base06 = "333349"; + base07 = "141229"; + base08 = "AD0617"; + base09 = "872626"; + base0A = "AD6A06"; + base0B = "06AD72"; + base0C = "06A3AD"; + base0D = "0A5D97"; + base0E = "5B037A"; + base0F = "87267C"; +} diff --git a/themes/alph/polarity.txt b/themes/alph/polarity.txt deleted file mode 100644 index 162faa6..0000000 --- a/themes/alph/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -light diff --git a/themes/ashes/ashes.yaml b/themes/ashes/ashes.yaml deleted file mode 100644 index 7278667..0000000 --- a/themes/ashes/ashes.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Ashes scheme for the Base16 Builder (https://github.com/chriskempson/base16-builder) -scheme: "Ashes" -author: "Jannik Siebert (https://github.com/janniks)" -base00: "1C2023" # ---- -base01: "393F45" # --- -base02: "565E65" # -- -base03: "747C84" # - -base04: "ADB3BA" # + -base05: "C7CCD1" # ++ -base06: "DFE2E5" # +++ -base07: "F3F4F5" # ++++ -base08: "C7AE95" # orange -base09: "C7C795" # yellow -base0A: "AEC795" # poison green -base0B: "95C7AE" # turquois -base0C: "95AEC7" # aqua -base0D: "AE95C7" # purple -base0E: "C795AE" # pink -base0F: "C79595" # light red diff --git a/themes/ashes/backgroundsha256.txt b/themes/ashes/backgroundsha256.txt deleted file mode 100644 index bf464a2..0000000 --- a/themes/ashes/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-ul7ecqPw9bSr+JRSd+3OlKwVfB+5378L7ObYydJDsgQ= diff --git a/themes/ashes/backgroundurl.txt b/themes/ashes/backgroundurl.txt deleted file mode 100644 index 4efbb1d..0000000 --- a/themes/ashes/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://images.hdqwalls.com/wallpapers/anime-road-to-city-everlasting-summer-4k-ep.jpg diff --git a/themes/ashes/default.nix b/themes/ashes/default.nix new file mode 100644 index 0000000..79d6e3c --- /dev/null +++ b/themes/ashes/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Ashes"; + slug = "ashes"; + author = "Jannik Siebert (https://github.com/janniks)"; + description = "Desaturated dark color scheme"; + polarity = "dark"; + backgroundUrl = "https://images.hdqwalls.com/wallpapers/anime-road-to-city-everlasting-summer-4k-ep.jpg"; + backgroundSha256 = "sha256-ul7ecqPw9bSr+JRSd+3OlKwVfB+5378L7ObYydJDsgQ="; + base00 = "1C2023"; + base01 = "393F45"; + base02 = "565E65"; + base03 = "747C84"; + base04 = "ADB3BA"; + base05 = "C7CCD1"; + base06 = "DFE2E5"; + base07 = "F3F4F5"; + base08 = "C7AE95"; + base09 = "C7C795"; + base0A = "AEC795"; + base0B = "95C7AE"; + base0C = "95AEC7"; + base0D = "AE95C7"; + base0E = "C795AE"; + base0F = "C79595"; +} diff --git a/themes/ashes/polarity.txt b/themes/ashes/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/ashes/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/atelier-cave/atelier-cave.yaml b/themes/atelier-cave/atelier-cave.yaml deleted file mode 100644 index 725ecb4..0000000 --- a/themes/atelier-cave/atelier-cave.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Atelier Cave" -author: "Bram de Haan (http://atelierbramdehaan.nl)" -base00: "19171c" -base01: "26232a" -base02: "585260" -base03: "655f6d" -base04: "7e7887" -base05: "8b8792" -base06: "e2dfe7" -base07: "efecf4" -base08: "be4678" -base09: "aa573c" -base0A: "a06e3b" -base0B: "2a9292" -base0C: "398bc6" -base0D: "576ddb" -base0E: "955ae7" -base0F: "bf40bf" diff --git a/themes/atelier-cave/backgroundsha256.txt b/themes/atelier-cave/backgroundsha256.txt deleted file mode 100644 index 131b0be..0000000 --- a/themes/atelier-cave/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-AVPJYFLEQr9x1V2yQLkMc1g7GqcBPJiKRFuj8MaKe5c= diff --git a/themes/atelier-cave/backgroundurl.txt b/themes/atelier-cave/backgroundurl.txt deleted file mode 100644 index 952db2b..0000000 --- a/themes/atelier-cave/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://images.hdqwalls.com/wallpapers/anime-girl-angel-ring-5k-7c.jpg diff --git a/themes/atelier-cave/default.nix b/themes/atelier-cave/default.nix new file mode 100644 index 0000000..0b83f39 --- /dev/null +++ b/themes/atelier-cave/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Atelier Cave"; + slug = "atelier-cave"; + author = "Bram de Haan (http://atelierbramdehaan.nl)"; + description = ''A “cool-warm” palette; not for the claustrophobic''; + polarity = "dark"; + backgroundUrl = "https://images.hdqwalls.com/wallpapers/anime-girl-angel-ring-5k-7c.jpg"; + backgroundUrlSha256 = "sha256-AVPJYFLEQr9x1V2yQLkMc1g7GqcBPJiKRFuj8MaKe5c="; + base00 = "19171c"; + base01 = "26232a"; + base02 = "585260"; + base03 = "655f6d"; + base04 = "7e7887"; + base05 = "8b8792"; + base06 = "e2dfe7"; + base07 = "efecf4"; + base08 = "be4678"; + base09 = "aa573c"; + base0A = "a06e3b"; + base0B = "2a9292"; + base0C = "398bc6"; + base0D = "576ddb"; + base0E = "955ae7"; + base0F = "bf40bf"; +} diff --git a/themes/atelier-cave/polarity.txt b/themes/atelier-cave/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/atelier-cave/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/atelier-dune/atelier-dune.yaml b/themes/atelier-dune/atelier-dune.yaml deleted file mode 100644 index 806e20c..0000000 --- a/themes/atelier-dune/atelier-dune.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Atelier Dune" -author: "Bram de Haan (http://atelierbramdehaan.nl)" -base00: "20201d" -base01: "292824" -base02: "6e6b5e" -base03: "7d7a68" -base04: "999580" -base05: "a6a28c" -base06: "e8e4cf" -base07: "fefbec" -base08: "d73737" -base09: "b65611" -base0A: "ae9513" -base0B: "60ac39" -base0C: "1fad83" -base0D: "6684e1" -base0E: "b854d4" -base0F: "d43552" diff --git a/themes/atelier-dune/backgroundsha256.txt b/themes/atelier-dune/backgroundsha256.txt deleted file mode 100644 index fac6d85..0000000 --- a/themes/atelier-dune/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-wplFIlIIYHTofJMuBLtpSWwrFyzz8ao1Gq4wGqgz7qY= diff --git a/themes/atelier-dune/backgroundurl.txt b/themes/atelier-dune/backgroundurl.txt deleted file mode 100644 index 45f18ad..0000000 --- a/themes/atelier-dune/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://images.hdqwalls.com/wallpapers/tengen-toppa-gurren-lagann-4k-1m.jpg diff --git a/themes/atelier-dune/default.nix b/themes/atelier-dune/default.nix new file mode 100644 index 0000000..d8b9b91 --- /dev/null +++ b/themes/atelier-dune/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Atelier Dune"; + slug = "atelier-dune"; + author = "Bram de Haan (http://atelierbramdehaan.nl)"; + description = "A welcoming, soothing friendly but also bright, colorscheme"; + polarity = "dark"; + backgroundUrl = "https://images.hdqwalls.com/wallpapers/tengen-toppa-gurren-lagann-4k-1m.jpg"; + backgroundSha256 = "sha256-wplFIlIIYHTofJMuBLtpSWwrFyzz8ao1Gq4wGqgz7qY="; + base00 = "20201d"; + base01 = "292824"; + base02 = "6e6b5e"; + base03 = "7d7a68"; + base04 = "999580"; + base05 = "a6a28c"; + base06 = "e8e4cf"; + base07 = "fefbec"; + base08 = "d73737"; + base09 = "b65611"; + base0A = "ae9513"; + base0B = "60ac39"; + base0C = "1fad83"; + base0D = "6684e1"; + base0E = "b854d4"; + base0F = "d43552"; +} diff --git a/themes/atelier-dune/polarity.txt b/themes/atelier-dune/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/atelier-dune/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/atelier-estuary/atelier-estuary.yaml b/themes/atelier-estuary/atelier-estuary.yaml deleted file mode 100644 index 90eaf4a..0000000 --- a/themes/atelier-estuary/atelier-estuary.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Atelier Estuary" -author: "Bram de Haan (http://atelierbramdehaan.nl)" -base00: "22221b" -base01: "302f27" -base02: "5f5e4e" -base03: "6c6b5a" -base04: "878573" -base05: "929181" -base06: "e7e6df" -base07: "f4f3ec" -base08: "ba6236" -base09: "ae7313" -base0A: "a5980d" -base0B: "7d9726" -base0C: "5b9d48" -base0D: "36a166" -base0E: "5f9182" -base0F: "9d6c7c" diff --git a/themes/atelier-estuary/backgroundsha256.txt b/themes/atelier-estuary/backgroundsha256.txt deleted file mode 100644 index 7ea63f8..0000000 --- a/themes/atelier-estuary/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-f97njdnllbsnnIjZnz/j0l2qIFWbEsGF2QtV1JTF2Yg= diff --git a/themes/atelier-estuary/backgroundurl.txt b/themes/atelier-estuary/backgroundurl.txt deleted file mode 100644 index 1774ba9..0000000 --- a/themes/atelier-estuary/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/352/194/322/digital-art-artwork-dragon-skeleton-wallpaper-15f339ed090d16293ff528ba738d87f9.jpg diff --git a/themes/atelier-estuary/default.nix b/themes/atelier-estuary/default.nix new file mode 100644 index 0000000..f96a928 --- /dev/null +++ b/themes/atelier-estuary/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Atelier Estuary"; + slug = "atelier-estuary"; + author = "Bram de Haan (http://atelierbramdehaan.nl)"; + description = "A bit of a poisonous colorscheme, be aware of the crocodiles …, they’re hiding in there"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/352/194/322/digital-art-artwork-dragon-skeleton-wallpaper-15f339ed090d16293ff528ba738d87f9.jpg"; + backgroundUrlSha256 = "sha256-f97njdnllbsnnIjZnz/j0l2qIFWbEsGF2QtV1JTF2Yg="; + base00 = "22221b"; + base01 = "302f27"; + base02 = "5f5e4e"; + base03 = "6c6b5a"; + base04 = "878573"; + base05 = "929181"; + base06 = "e7e6df"; + base07 = "f4f3ec"; + base08 = "ba6236"; + base09 = "ae7313"; + base0A = "a5980d"; + base0B = "7d9726"; + base0C = "5b9d48"; + base0D = "36a166"; + base0E = "5f9182"; + base0F = "9d6c7c"; +} diff --git a/themes/atelier-estuary/polarity.txt b/themes/atelier-estuary/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/atelier-estuary/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/atelier-forest/atelier-forest.yaml b/themes/atelier-forest/atelier-forest.yaml deleted file mode 100644 index 9704dfc..0000000 --- a/themes/atelier-forest/atelier-forest.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Atelier Forest" -author: "Bram de Haan (http://atelierbramdehaan.nl)" -base00: "1b1918" -base01: "2c2421" -base02: "68615e" -base03: "766e6b" -base04: "9c9491" -base05: "a8a19f" -base06: "e6e2e0" -base07: "f1efee" -base08: "f22c40" -base09: "df5320" -base0A: "c38418" -base0B: "7b9726" -base0C: "3d97b8" -base0D: "407ee7" -base0E: "6666ea" -base0F: "c33ff3" diff --git a/themes/atelier-forest/backgroundsha256.txt b/themes/atelier-forest/backgroundsha256.txt deleted file mode 100644 index 06c1816..0000000 --- a/themes/atelier-forest/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-+ayGF3G14PfZwZnIeqCpnV/awnwdpue3OBmJYTirb2U= diff --git a/themes/atelier-forest/backgroundurl.txt b/themes/atelier-forest/backgroundurl.txt deleted file mode 100644 index d49eb2b..0000000 --- a/themes/atelier-forest/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/72/wallhaven-72p97v.jpg diff --git a/themes/atelier-forest/default.nix b/themes/atelier-forest/default.nix new file mode 100644 index 0000000..5cc735f --- /dev/null +++ b/themes/atelier-forest/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Atelier Forest"; + slug = "atelier-forest"; + author = "Bram de Haan (http://atelierbramdehaan.nl)"; + description = ''A colorscheme like “Birds of Paradise”, but a bit muddier on the browns, less red and more greyed out, like clay''; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/72/wallhaven-72p97v.jpg"; + backgroundSha256 = "sha256-+ayGF3G14PfZwZnIeqCpnV/awnwdpue3OBmJYTirb2U="; + base00 = "1b1918"; + base01 = "2c2421"; + base02 = "68615e"; + base03 = "766e6b"; + base04 = "9c9491"; + base05 = "a8a19f"; + base06 = "e6e2e0"; + base07 = "f1efee"; + base08 = "f22c40"; + base09 = "df5320"; + base0A = "c38418"; + base0B = "7b9726"; + base0C = "3d97b8"; + base0D = "407ee7"; + base0E = "6666ea"; + base0F = "c33ff3"; +} diff --git a/themes/atelier-forest/polarity.txt b/themes/atelier-forest/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/atelier-forest/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/atelier-heath/atelier-heath.yaml b/themes/atelier-heath/atelier-heath.yaml deleted file mode 100644 index 8a711fc..0000000 --- a/themes/atelier-heath/atelier-heath.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Atelier Heath" -author: "Bram de Haan (http://atelierbramdehaan.nl)" -base00: "1b181b" -base01: "292329" -base02: "695d69" -base03: "776977" -base04: "9e8f9e" -base05: "ab9bab" -base06: "d8cad8" -base07: "f7f3f7" -base08: "ca402b" -base09: "a65926" -base0A: "bb8a35" -base0B: "918b3b" -base0C: "159393" -base0D: "516aec" -base0E: "7b59c0" -base0F: "cc33cc" diff --git a/themes/atelier-heath/backgroundsha256.txt b/themes/atelier-heath/backgroundsha256.txt deleted file mode 100644 index bebe3b9..0000000 --- a/themes/atelier-heath/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-KuPdCD5IT0/LJghqQKuAFiFtztp+FyRJRdsjdrAzPI8= diff --git a/themes/atelier-heath/backgroundurl.txt b/themes/atelier-heath/backgroundurl.txt deleted file mode 100644 index 955f855..0000000 --- a/themes/atelier-heath/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/861/102/512/moonlight-fantasy-landscape-moon-full-moon-wallpaper-0960b8dd31ca4d2b96b7684fd021067d.jpg diff --git a/themes/atelier-heath/default.nix b/themes/atelier-heath/default.nix new file mode 100644 index 0000000..3861568 --- /dev/null +++ b/themes/atelier-heath/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Atelier Heath"; + slug = "atelier-heath"; + author = "Bram de Haan (http://atelierbramdehaan.nl)"; + description = "Here the background-colors have these cool-red colors for the background, but then obviously toned down quite a bit…"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/861/102/512/moonlight-fantasy-landscape-moon-full-moon-wallpaper-0960b8dd31ca4d2b96b7684fd021067d.jpg"; + backgroundSha256 = "sha256-KuPdCD5IT0/LJghqQKuAFiFtztp+FyRJRdsjdrAzPI8="; + base00 = "1b181b"; + base01 = "292329"; + base02 = "695d69"; + base03 = "776977"; + base04 = "9e8f9e"; + base05 = "ab9bab"; + base06 = "d8cad8"; + base07 = "f7f3f7"; + base08 = "ca402b"; + base09 = "a65926"; + base0A = "bb8a35"; + base0B = "918b3b"; + base0C = "159393"; + base0D = "516aec"; + base0E = "7b59c0"; + base0F = "cc33cc"; +} diff --git a/themes/atelier-heath/polarity.txt b/themes/atelier-heath/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/atelier-heath/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/atelier-lakeside/atelier-lakeside.yaml b/themes/atelier-lakeside/atelier-lakeside.yaml deleted file mode 100644 index 6c383d3..0000000 --- a/themes/atelier-lakeside/atelier-lakeside.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Atelier Lakeside" -author: "Bram de Haan (http://atelierbramdehaan.nl)" -base00: "161b1d" -base01: "1f292e" -base02: "516d7b" -base03: "5a7b8c" -base04: "7195a8" -base05: "7ea2b4" -base06: "c1e4f6" -base07: "ebf8ff" -base08: "d22d72" -base09: "935c25" -base0A: "8a8a0f" -base0B: "568c3b" -base0C: "2d8f6f" -base0D: "257fad" -base0E: "6b6bb8" -base0F: "b72dd2" diff --git a/themes/atelier-lakeside/backgroundsha256.txt b/themes/atelier-lakeside/backgroundsha256.txt deleted file mode 100644 index 6d1c790..0000000 --- a/themes/atelier-lakeside/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-8ytn00rZUiJxgtjXqTxtR7qusokxjY68u+UiWuwD8Bs= diff --git a/themes/atelier-lakeside/backgroundurl.txt b/themes/atelier-lakeside/backgroundurl.txt deleted file mode 100644 index 301266e..0000000 --- a/themes/atelier-lakeside/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/410/867/750/vector-forest-sunset-forest-sunset-forest-wallpaper-b3abc35d0d699b056fa6b247589b18a8.jpg diff --git a/themes/atelier-lakeside/default.nix b/themes/atelier-lakeside/default.nix new file mode 100644 index 0000000..490a235 --- /dev/null +++ b/themes/atelier-lakeside/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Atelier Lakeside"; + slug = "atelier-lakeside"; + author = "Bram de Haan (http://atelierbramdehaan.nl)"; + description = "Coolest colorscheme of the (Atelier) bunch"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/410/867/750/vector-forest-sunset-forest-sunset-forest-wallpaper-b3abc35d0d699b056fa6b247589b18a8.jpg"; + backgroundSha256 = "sha256-8ytn00rZUiJxgtjXqTxtR7qusokxjY68u+UiWuwD8Bs="; + base00 = "161b1d"; + base01 = "1f292e"; + base02 = "516d7b"; + base03 = "5a7b8c"; + base04 = "7195a8"; + base05 = "7ea2b4"; + base06 = "c1e4f6"; + base07 = "ebf8ff"; + base08 = "d22d72"; + base09 = "935c25"; + base0A = "8a8a0f"; + base0B = "568c3b"; + base0C = "2d8f6f"; + base0D = "257fad"; + base0E = "6b6bb8"; + base0F = "b72dd2"; +} diff --git a/themes/atelier-lakeside/polarity.txt b/themes/atelier-lakeside/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/atelier-lakeside/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/atelier-plateau/atelier-plateau.yaml b/themes/atelier-plateau/atelier-plateau.yaml deleted file mode 100644 index 1e81c0a..0000000 --- a/themes/atelier-plateau/atelier-plateau.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Atelier Plateau" -author: "Bram de Haan (http://atelierbramdehaan.nl)" -base00: "1b1818" -base01: "292424" -base02: "585050" -base03: "655d5d" -base04: "7e7777" -base05: "8a8585" -base06: "e7dfdf" -base07: "f4ecec" -base08: "ca4949" -base09: "b45a3c" -base0A: "a06e3b" -base0B: "4b8b8b" -base0C: "5485b6" -base0D: "7272ca" -base0E: "8464c4" -base0F: "bd5187" diff --git a/themes/atelier-plateau/backgroundsha256.txt b/themes/atelier-plateau/backgroundsha256.txt deleted file mode 100644 index d541554..0000000 --- a/themes/atelier-plateau/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-GL4QjCZFLAgsMM05cLqAx9Sd293NfU79azFhuzBGhW0= diff --git a/themes/atelier-plateau/backgroundurl.txt b/themes/atelier-plateau/backgroundurl.txt deleted file mode 100644 index 124d5a5..0000000 --- a/themes/atelier-plateau/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/428/434/322/art-computer-digital-art-concept-art-wallpaper-b9a0c85d016a9d0b66a7b84f509116ad.jpg diff --git a/themes/atelier-plateau/default.nix b/themes/atelier-plateau/default.nix new file mode 100644 index 0000000..b48189b --- /dev/null +++ b/themes/atelier-plateau/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Atelier Plateau"; + slug = "atelier-plateau"; + author = "Bram de Haan (http://atelierbramdehaan.nl)"; + description = "A warm palette; no real green in here"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/428/434/322/art-computer-digital-art-concept-art-wallpaper-b9a0c85d016a9d0b66a7b84f509116ad.jpg"; + backgroundSha256 = "sha256-GL4QjCZFLAgsMM05cLqAx9Sd293NfU79azFhuzBGhW0="; + base00 = "1b1818"; + base01 = "292424"; + base02 = "585050"; + base03 = "655d5d"; + base04 = "7e7777"; + base05 = "8a8585"; + base06 = "e7dfdf"; + base07 = "f4ecec"; + base08 = "ca4949"; + base09 = "b45a3c"; + base0A = "a06e3b"; + base0B = "4b8b8b"; + base0C = "5485b6"; + base0D = "7272ca"; + base0E = "8464c4"; + base0F = "bd5187"; +} diff --git a/themes/atelier-plateau/polarity.txt b/themes/atelier-plateau/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/atelier-plateau/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/atelier-savanna/atelier-savanna.yaml b/themes/atelier-savanna/atelier-savanna.yaml deleted file mode 100644 index 0e69954..0000000 --- a/themes/atelier-savanna/atelier-savanna.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Atelier Savanna" -author: "Bram de Haan (http://atelierbramdehaan.nl)" -base00: "171c19" -base01: "232a25" -base02: "526057" -base03: "5f6d64" -base04: "78877d" -base05: "87928a" -base06: "dfe7e2" -base07: "ecf4ee" -base08: "b16139" -base09: "9f713c" -base0A: "a07e3b" -base0B: "489963" -base0C: "1c9aa0" -base0D: "478c90" -base0E: "55859b" -base0F: "867469" diff --git a/themes/atelier-savanna/backgroundsha256.txt b/themes/atelier-savanna/backgroundsha256.txt deleted file mode 100644 index fbf3086..0000000 --- a/themes/atelier-savanna/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-0ubzlyIj3Uz9vQa+qvz/+q/1trgbNUEpQysqtEFs54g= diff --git a/themes/atelier-savanna/backgroundurl.txt b/themes/atelier-savanna/backgroundurl.txt deleted file mode 100644 index fd5ab9f..0000000 --- a/themes/atelier-savanna/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/760/955/638/artwork-landscape-sky-mountains-wallpaper-78664db880d01c78404c214e28e2847a.jpg diff --git a/themes/atelier-savanna/default.nix b/themes/atelier-savanna/default.nix new file mode 100644 index 0000000..6e69e63 --- /dev/null +++ b/themes/atelier-savanna/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Atelier Savanna"; + slug = "atelier-savanna"; + author = "Bram de Haan (http://atelierbramdehaan.nl)"; + description = ''“Color-wheel colors” are desaturated considerably, giving this colorscheme a rather understated appeal and, dear I say it, a ‘natural’ look and feel''; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/760/955/638/artwork-landscape-sky-mountains-wallpaper-78664db880d01c78404c214e28e2847a.jpg"; + backgroundSha256 = "sha256-0ubzlyIj3Uz9vQa+qvz/+q/1trgbNUEpQysqtEFs54g="; + base00 = "171c19"; + base01 = "232a25"; + base02 = "526057"; + base03 = "5f6d64"; + base04 = "78877d"; + base05 = "87928a"; + base06 = "dfe7e2"; + base07 = "ecf4ee"; + base08 = "b16139"; + base09 = "9f713c"; + base0A = "a07e3b"; + base0B = "489963"; + base0C = "1c9aa0"; + base0D = "478c90"; + base0E = "55859b"; + base0F = "867469"; +} diff --git a/themes/atelier-savanna/polarity.txt b/themes/atelier-savanna/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/atelier-savanna/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/atelier-seaside/atelier-seaside.yaml b/themes/atelier-seaside/atelier-seaside.yaml deleted file mode 100644 index bcc649f..0000000 --- a/themes/atelier-seaside/atelier-seaside.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Atelier Seaside" -author: "Bram de Haan (http://atelierbramdehaan.nl)" -base00: "131513" -base01: "242924" -base02: "5e6e5e" -base03: "687d68" -base04: "809980" -base05: "8ca68c" -base06: "cfe8cf" -base07: "f4fbf4" -base08: "e6193c" -base09: "87711d" -base0A: "98981b" -base0B: "29a329" -base0C: "1999b3" -base0D: "3d62f5" -base0E: "ad2bee" -base0F: "e619c3" diff --git a/themes/atelier-seaside/backgroundsha256.txt b/themes/atelier-seaside/backgroundsha256.txt deleted file mode 100644 index 74730ad..0000000 --- a/themes/atelier-seaside/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-GcHU4qYRGFubobNENwp8prpd/da4tzHwRyN+rsH2dYA= diff --git a/themes/atelier-seaside/backgroundurl.txt b/themes/atelier-seaside/backgroundurl.txt deleted file mode 100644 index abd6483..0000000 --- a/themes/atelier-seaside/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/714/495/609/landscape-artwork-digital-art-fantasy-art-wallpaper-9960e89d112afd2ba6e738ff70b1e63d.jpg diff --git a/themes/atelier-seaside/default.nix b/themes/atelier-seaside/default.nix new file mode 100644 index 0000000..2af8f1c --- /dev/null +++ b/themes/atelier-seaside/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Atelier Seaside"; + slug = "atelier-seaside"; + author = "Bram de Haan (http://atelierbramdehaan.nl)"; + description = "Very saturated color-palette; comes popping at you"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/714/495/609/landscape-artwork-digital-art-fantasy-art-wallpaper-9960e89d112afd2ba6e738ff70b1e63d.jpg"; + backgroundSha256 = "sha256-GcHU4qYRGFubobNENwp8prpd/da4tzHwRyN+rsH2dYA="; + base00 = "131513"; + base01 = "242924"; + base02 = "5e6e5e"; + base03 = "687d68"; + base04 = "809980"; + base05 = "8ca68c"; + base06 = "cfe8cf"; + base07 = "f4fbf4"; + base08 = "e6193c"; + base09 = "87711d"; + base0A = "98981b"; + base0B = "29a329"; + base0C = "1999b3"; + base0D = "3d62f5"; + base0E = "ad2bee"; + base0F = "e619c3"; +} diff --git a/themes/atelier-seaside/polarity.txt b/themes/atelier-seaside/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/atelier-seaside/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/atelier-sulphurpool/atelier-sulphurpool.yaml b/themes/atelier-sulphurpool/atelier-sulphurpool.yaml deleted file mode 100644 index c9f0b1f..0000000 --- a/themes/atelier-sulphurpool/atelier-sulphurpool.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Atelier Sulphurpool" -author: "Bram de Haan (http://atelierbramdehaan.nl)" -base00: "202746" -base01: "293256" -base02: "5e6687" -base03: "6b7394" -base04: "898ea4" -base05: "979db4" -base06: "dfe2f1" -base07: "f5f7ff" -base08: "c94922" -base09: "c76b29" -base0A: "c08b30" -base0B: "ac9739" -base0C: "22a2c9" -base0D: "3d8fd1" -base0E: "6679cc" -base0F: "9c637a" diff --git a/themes/atelier-sulphurpool/backgroundsha256.txt b/themes/atelier-sulphurpool/backgroundsha256.txt deleted file mode 100644 index 606c5a1..0000000 --- a/themes/atelier-sulphurpool/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-mnh2uKy3PO0otUdTw4Bv4JDnMYj/m7Gt7P7XDJb2+c0= diff --git a/themes/atelier-sulphurpool/backgroundurl.txt b/themes/atelier-sulphurpool/backgroundurl.txt deleted file mode 100644 index 8711482..0000000 --- a/themes/atelier-sulphurpool/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/13/960/9/digital-art-fantasy-art-colorful-space-art-wallpaper-99330d2ae61a6c661d5ea4793fc17511.jpg diff --git a/themes/atelier-sulphurpool/default.nix b/themes/atelier-sulphurpool/default.nix new file mode 100644 index 0000000..bb058e5 --- /dev/null +++ b/themes/atelier-sulphurpool/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Atelier Sulphurpool"; + slug = "atelier-sulphurpool"; + author = "Bram de Haan (http://atelierbramdehaan.nl)"; + description = "Purple base color; easy on the eye"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/13/960/9/digital-art-fantasy-art-colorful-space-art-wallpaper-99330d2ae61a6c661d5ea4793fc17511.jpg"; + backgroundSha256 = "sha256-mnh2uKy3PO0otUdTw4Bv4JDnMYj/m7Gt7P7XDJb2+c0="; + base00 = "202746"; + base01 = "293256"; + base02 = "5e6687"; + base03 = "6b7394"; + base04 = "898ea4"; + base05 = "979db4"; + base06 = "dfe2f1"; + base07 = "f5f7ff"; + base08 = "c94922"; + base09 = "c76b29"; + base0A = "c08b30"; + base0B = "ac9739"; + base0C = "22a2c9"; + base0D = "3d8fd1"; + base0E = "6679cc"; + base0F = "9c637a"; +} diff --git a/themes/atelier-sulphurpool/polarity.txt b/themes/atelier-sulphurpool/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/atelier-sulphurpool/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/ayu-dark/ayu-dark.yaml b/themes/ayu-dark/ayu-dark.yaml deleted file mode 100644 index 6eeb8b2..0000000 --- a/themes/ayu-dark/ayu-dark.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Ayu Dark" -author: "Khue Nguyen " -base00: "0F1419" -base01: "131721" -base02: "272D38" -base03: "3E4B59" -base04: "BFBDB6" -base05: "E6E1CF" -base06: "E6E1CF" -base07: "F3F4F5" -base08: "F07178" -base09: "FF8F40" -base0A: "FFB454" -base0B: "B8CC52" -base0C: "95E6CB" -base0D: "59C2FF" -base0E: "D2A6FF" -base0F: "E6B673" diff --git a/themes/ayu-dark/backgroundsha256.txt b/themes/ayu-dark/backgroundsha256.txt deleted file mode 100644 index 8b4f2d4..0000000 --- a/themes/ayu-dark/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-0BiSjEZnwh6KnWuNau+9lf1PVBYRnq228l4OA/nm5YI= diff --git a/themes/ayu-dark/backgroundurl.txt b/themes/ayu-dark/backgroundurl.txt deleted file mode 100644 index 7196a95..0000000 --- a/themes/ayu-dark/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/zy/wallhaven-zy8wwo.jpg diff --git a/themes/ayu-dark/default.nix b/themes/ayu-dark/default.nix new file mode 100644 index 0000000..1d938d1 --- /dev/null +++ b/themes/ayu-dark/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Ayu Dark"; + slug = "ayu-dark"; + author = "Khue Nguyen "; + description = "Simple, bright and elegant theme"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/zy/wallhaven-zy8wwo.jpg"; + backgroundSha256 = "sha256-0BiSjEZnwh6KnWuNau+9lf1PVBYRnq228l4OA/nm5YI="; + base00 = "0F1419"; + base01 = "131721"; + base02 = "272D38"; + base03 = "3E4B59"; + base04 = "BFBDB6"; + base05 = "E6E1CF"; + base06 = "E6E1CF"; + base07 = "F3F4F5"; + base08 = "F07178"; + base09 = "FF8F40"; + base0A = "FFB454"; + base0B = "B8CC52"; + base0C = "95E6CB"; + base0D = "59C2FF"; + base0E = "D2A6FF"; + base0F = "E6B673"; +} diff --git a/themes/ayu-dark/polarity.txt b/themes/ayu-dark/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/ayu-dark/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/background-test.sh b/themes/background-test.sh index 885cc3f..a8cce14 100755 --- a/themes/background-test.sh +++ b/themes/background-test.sh @@ -1,7 +1,7 @@ #!/bin/sh for i in $(ls -d */); do - if curl --output /dev/null --silent --head --fail $(cat $i/backgroundurl.txt); then + if curl --output /dev/null --silent --head --fail $(cat $i/default.nix | grep "backgroundUrl" | cut -d'"' -f 2); then echo "$i background successfully downloads"; else echo -e "\033[0;31m$i background download fails\033[0m" diff --git a/themes/bespin/backgroundsha256.txt b/themes/bespin/backgroundsha256.txt deleted file mode 100644 index ff23001..0000000 --- a/themes/bespin/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-uVPfyCXyyBVSfgbiQy5rhngNjuAmxk89btary3Iiwq0= diff --git a/themes/bespin/backgroundurl.txt b/themes/bespin/backgroundurl.txt deleted file mode 100644 index a6451f4..0000000 --- a/themes/bespin/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/597/635/621/sword-fantasy-forest-twilight-river-hd-wallpaper-f98078cd21caad7b46d7b83fb021566d.jpg diff --git a/themes/bespin/bespin.yaml b/themes/bespin/bespin.yaml deleted file mode 100644 index bbdd0fd..0000000 --- a/themes/bespin/bespin.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Base16 Builder scheme by Jan T. Sott -scheme: "Bespin" -author: "Jan T. Sott" -base00: "28211c" -base01: "36312e" -base02: "5e5d5c" -base03: "666666" -base04: "797977" -base05: "8a8986" -base06: "9d9b97" -base07: "baae9e" -base08: "cf6a4c" -base09: "cf7d34" -base0A: "f9ee98" -base0B: "54be0d" -base0C: "afc4db" -base0D: "5ea6ea" -base0E: "9b859d" -base0F: "937121" \ No newline at end of file diff --git a/themes/bespin/default.nix b/themes/bespin/default.nix new file mode 100644 index 0000000..4e775cd --- /dev/null +++ b/themes/bespin/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Bespin"; + slug = "bespin"; + author = "Jan T. Sott (https://github.com/idleberg)"; + description = "Port of the Bespin theme from Sublime Text 2/3"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/597/635/621/sword-fantasy-forest-twilight-river-hd-wallpaper-f98078cd21caad7b46d7b83fb021566d.jpg"; + backgroundSha256 = "sha256-uVPfyCXyyBVSfgbiQy5rhngNjuAmxk89btary3Iiwq0="; + base00 = "28211c"; + base01 = "36312e"; + base02 = "5e5d5c"; + base03 = "666666"; + base04 = "797977"; + base05 = "8a8986"; + base06 = "9d9b97"; + base07 = "baae9e"; + base08 = "cf6a4c"; + base09 = "cf7d34"; + base0A = "f9ee98"; + base0B = "54be0d"; + base0C = "afc4db"; + base0D = "5ea6ea"; + base0E = "9b859d"; + base0F = "937121"; +} diff --git a/themes/bespin/polarity.txt b/themes/bespin/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/bespin/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/caret/backgroundsha256.txt b/themes/caret/backgroundsha256.txt deleted file mode 100644 index 04e0b9c..0000000 --- a/themes/caret/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-sHr/BFWhRvzr0gVD73E7fSlGG8/9G2D3/M46UNf+qvU= diff --git a/themes/caret/backgroundurl.txt b/themes/caret/backgroundurl.txt deleted file mode 100644 index ab4dd34..0000000 --- a/themes/caret/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://raw.githubusercontent.com/D3Ext/aesthetic-wallpapers/main/images/gruvbox_retrocity.png diff --git a/themes/caret/caret.yaml b/themes/caret/caret.yaml deleted file mode 100644 index 1ef4adf..0000000 --- a/themes/caret/caret.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Caret Dark" -author: "projekt0n" -base00: "2a2d25" -base01: "3f4536" -base02: "586048" -base03: "6d7859" -base04: "9db573" -base05: "b0c48d" -base06: "c5d4ab" -base07: "fdfffa" -base08: "f18e91" -base09: "e2a66f" -base0A: "e0c98a" -base0B: "a1ea9e" -base0C: "a1ea93" -base0D: "67cfa3" -base0E: "80b7cb" -base0F: "baacd7" diff --git a/themes/caret/default.nix b/themes/caret/default.nix new file mode 100644 index 0000000..fdbabb5 --- /dev/null +++ b/themes/caret/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Caret Dark"; + slug = "caret-dark"; + author = "projekt0n (https://github.com/projekt0n)"; + description = "The timeless colorscheme (originally for the neovim text editor)"; + polarity = "dark"; + backgroundUrl = "https://raw.githubusercontent.com/D3Ext/aesthetic-wallpapers/main/images/gruvbox_retrocity.png"; + backgroundSha256 = "sha256-sHr/BFWhRvzr0gVD73E7fSlGG8/9G2D3/M46UNf+qvU="; + base00 = "2a2d25"; + base01 = "3f4536"; + base02 = "586048"; + base03 = "6d7859"; + base04 = "9db573"; + base05 = "b0c48d"; + base06 = "c5d4ab"; + base07 = "fdfffa"; + base08 = "f18e91"; + base09 = "e2a66f"; + base0A = "e0c98a"; + base0B = "a1ea9e"; + base0C = "a1ea93"; + base0D = "67cfa3"; + base0E = "80b7cb"; + base0F = "baacd7"; +} diff --git a/themes/caret/polarity.txt b/themes/caret/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/caret/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/catppuccin-frappe/backgroundsha256.txt b/themes/catppuccin-frappe/backgroundsha256.txt deleted file mode 100644 index 61f6058..0000000 --- a/themes/catppuccin-frappe/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-krJtLOP+9mV87l0/XCkqtk558VeHP3ZjThLEh97ESek= diff --git a/themes/catppuccin-frappe/backgroundurl.txt b/themes/catppuccin-frappe/backgroundurl.txt deleted file mode 100644 index 343ed5e..0000000 --- a/themes/catppuccin-frappe/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://images3.alphacoders.com/126/1266078.jpg diff --git a/themes/catppuccin-frappe/catppuccin-frappe.yaml b/themes/catppuccin-frappe/catppuccin-frappe.yaml deleted file mode 100644 index 9bf1082..0000000 --- a/themes/catppuccin-frappe/catppuccin-frappe.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Catppuccin Frappe" -author: "https://github.com/catppuccin/catppuccin" -base00: "303446" # base -base01: "292c3c" # mantle -base02: "414559" # surface0 -base03: "51576d" # surface1 -base04: "626880" # surface2 -base05: "c6d0f5" # text -base06: "f2d5cf" # rosewater -base07: "babbf1" # lavender -base08: "e78284" # red -base09: "ef9f76" # peach -base0A: "e5c890" # yellow -base0B: "a6d189" # green -base0C: "81c8be" # teal -base0D: "8caaee" # blue -base0E: "ca9ee6" # mauve -base0F: "eebebe" # flamingo diff --git a/themes/catppuccin-frappe/default.nix b/themes/catppuccin-frappe/default.nix new file mode 100644 index 0000000..4d1a9df --- /dev/null +++ b/themes/catppuccin-frappe/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Catppuccin Frappe"; + slug = "catppuccin-frappe"; + author = "https://catppuccin.com/"; + description = "Soothing pastel theme for the high-spirited!"; + polarity = "dark"; + backgroundUrl = "https://images3.alphacoders.com/126/1266078.jpg"; + backgroundSha256 = "sha256-krJtLOP+9mV87l0/XCkqtk558VeHP3ZjThLEh97ESek="; + base00 = "303446"; + base01 = "292c3c"; + base02 = "414559"; + base03 = "51576d"; + base04 = "626880"; + base05 = "c6d0f5"; + base06 = "f2d5cf"; + base07 = "babbf1"; + base08 = "e78284"; + base09 = "ef9f76"; + base0A = "e5c890"; + base0B = "a6d189"; + base0C = "81c8be"; + base0D = "8caaee"; + base0E = "ca9ee6"; + base0F = "eebebe"; +} diff --git a/themes/catppuccin-frappe/polarity.txt b/themes/catppuccin-frappe/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/catppuccin-frappe/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/catppuccin-mocha/backgroundsha256.txt b/themes/catppuccin-mocha/backgroundsha256.txt deleted file mode 100644 index 8976491..0000000 --- a/themes/catppuccin-mocha/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-wCXKHemZYxVYnWVwh6Ng/nGlUroRotXgvcOdSfqRPeo= diff --git a/themes/catppuccin-mocha/backgroundurl.txt b/themes/catppuccin-mocha/backgroundurl.txt deleted file mode 100644 index db3ed32..0000000 --- a/themes/catppuccin-mocha/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://images7.alphacoders.com/126/1266081.jpg diff --git a/themes/catppuccin-mocha/catppuccin-mocha.yaml b/themes/catppuccin-mocha/catppuccin-mocha.yaml deleted file mode 100644 index c2a68ec..0000000 --- a/themes/catppuccin-mocha/catppuccin-mocha.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Catppuccin Mocha" -author: "https://github.com/catppuccin/catppuccin" -base00: "1e1e2e" # base -base01: "181825" # mantle -base02: "313244" # surface0 -base03: "45475a" # surface1 -base04: "585b70" # surface2 -base05: "cdd6f4" # text -base06: "f5e0dc" # rosewater -base07: "b4befe" # lavender -base08: "f38ba8" # red -base09: "fab387" # peach -base0A: "f9e2af" # yellow -base0B: "a6e3a1" # green -base0C: "94e2d5" # teal -base0D: "89b4fa" # blue -base0E: "cba6f7" # mauve -base0F: "f2cdcd" # flamingo diff --git a/themes/catppuccin-mocha/default.nix b/themes/catppuccin-mocha/default.nix new file mode 100644 index 0000000..47290d6 --- /dev/null +++ b/themes/catppuccin-mocha/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Catppuccin Mocha"; + slug = "catppuccin-mocha"; + author = "https://catppuccin.com/"; + description = "Soothing pastel theme for the high-spirited!"; + polarity = "dark"; + backgroundUrl = "https://images7.alphacoders.com/126/1266081.jpg"; + backgroundSha256 = "sha256-wCXKHemZYxVYnWVwh6Ng/nGlUroRotXgvcOdSfqRPeo="; + base00 = "1e1e2e"; + base01 = "181825"; + base02 = "313244"; + base03 = "45475a"; + base04 = "585b70"; + base05 = "cdd6f4"; + base06 = "f5e0dc"; + base07 = "b4befe"; + base08 = "f38ba8"; + base09 = "fab387"; + base0A = "f9e2af"; + base0B = "a6e3a1"; + base0C = "94e2d5"; + base0D = "89b4fa"; + base0E = "cba6f7"; + base0F = "f2cdcd"; +} diff --git a/themes/catppuccin-mocha/polarity.txt b/themes/catppuccin-mocha/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/catppuccin-mocha/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/darkmoss/backgroundsha256.txt b/themes/darkmoss/backgroundsha256.txt deleted file mode 100644 index 5e930d3..0000000 --- a/themes/darkmoss/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-JGEY8mhpXNLCXPoWCXvGWbLkfkpeZRl+hxiLPGwVmSQ= diff --git a/themes/darkmoss/backgroundurl.txt b/themes/darkmoss/backgroundurl.txt deleted file mode 100644 index 133ec56..0000000 --- a/themes/darkmoss/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/0w/wallhaven-0wrp3p.jpg diff --git a/themes/darkmoss/darkmoss.yaml b/themes/darkmoss/darkmoss.yaml deleted file mode 100644 index 5a0daec..0000000 --- a/themes/darkmoss/darkmoss.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "darkmoss" -author: "Gabriel Avanzi (https://github.com/avanzzzi)" -base00: "171e1f" -base01: "252c2d" -base02: "373c3d" -base03: "555e5f" -base04: "818f80" -base05: "c7c7a5" -base06: "e3e3c8" -base07: "e1eaef" -base08: "ff4658" -base09: "e6db74" -base0A: "fdb11f" -base0B: "499180" -base0C: "66d9ef" -base0D: "498091" -base0E: "9bc0c8" -base0F: "d27b53" diff --git a/themes/darkmoss/default.nix b/themes/darkmoss/default.nix new file mode 100644 index 0000000..21d5cad --- /dev/null +++ b/themes/darkmoss/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "darkmoss"; + slug = "darkmoss"; + author = "Gabriel Avanzi (https://github.com/avanzzzi)"; + description = "A dark color scheme for Base16"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/0w/wallhaven-0wrp3p.jpg"; + backgroundSha256 = "sha256-JGEY8mhpXNLCXPoWCXvGWbLkfkpeZRl+hxiLPGwVmSQ="; + base00 = "171e1f"; + base01 = "252c2d"; + base02 = "373c3d"; + base03 = "555e5f"; + base04 = "818f80"; + base05 = "c7c7a5"; + base06 = "e3e3c8"; + base07 = "e1eaef"; + base08 = "ff4658"; + base09 = "e6db74"; + base0A = "fdb11f"; + base0B = "499180"; + base0C = "66d9ef"; + base0D = "498091"; + base0E = "9bc0c8"; + base0F = "d27b53"; +} diff --git a/themes/darkmoss/polarity.txt b/themes/darkmoss/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/darkmoss/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/doom-one/backgroundsha256.txt b/themes/doom-one/backgroundsha256.txt deleted file mode 100644 index a77cf8d..0000000 --- a/themes/doom-one/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-gYGwWAgRjpZQGUMZsw5GJ11dKKrU6/bX3xcKXQZVOac= diff --git a/themes/doom-one/backgroundurl.txt b/themes/doom-one/backgroundurl.txt deleted file mode 100644 index 6e9451e..0000000 --- a/themes/doom-one/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/834/299/692/city-lights-girl-moon-wallpaper-e178a9faa68bf35ee7e3f2afc50e43fc.jpg diff --git a/themes/doom-one/default.nix b/themes/doom-one/default.nix new file mode 100644 index 0000000..953cbe4 --- /dev/null +++ b/themes/doom-one/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Doom One"; + slug = "doom-one"; + author = "hlissner (https://github.com/doomemacs/themes)"; + description = "Flagship theme of Doom Emacs"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/834/299/692/city-lights-girl-moon-wallpaper-e178a9faa68bf35ee7e3f2afc50e43fc.jpg"; + backgroundSha256 = "sha256-gYGwWAgRjpZQGUMZsw5GJ11dKKrU6/bX3xcKXQZVOac="; + base00 = "1b2229"; + base01 = "3f444a"; + base02 = "5B6268"; + base03 = "202328"; + base04 = "73797e"; + base05 = "9ca0a4"; + base06 = "b1b1b1"; + base07 = "e6e6e6"; + base08 = "ff6c6b"; + base09 = "ECBE7B"; + base0A = "98be65"; + base0B = "4db5bd"; + base0C = "51afef"; + base0D = "a9a1e1"; + base0E = "46D9FF"; + base0F = "5699AF"; +} diff --git a/themes/doom-one/doom-one.yaml b/themes/doom-one/doom-one.yaml deleted file mode 100644 index f1cd99c..0000000 --- a/themes/doom-one/doom-one.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Doom One scheme -# Based on Doom One by hlissner (https://github.com/doomemacs/themes) -# With help from doom-one.vim by romgrk (https://github.com/romgrk/doom-one.vim) -scheme: "Doom One" -author: "librephoenix (https://gitlab.com/librephoenix)" -base00: "1b2229" # ---- -base01: "3f444a" # --- -base02: "5B6268" # -- -base03: "202328" # - -base04: "73797e" # + -base05: "9ca0a4" # ++ -base06: "b1b1b1" # +++ -base07: "e6e6e6" # ++++ -base08: "ff6c6b" # red -base09: "ECBE7B" # yellow -base0A: "98be65" # green -base0B: "4db5bd" # teal -base0C: "51afef" # blue -base0D: "a9a1e1" # purple -base0E: "46D9FF" # pink -base0F: "5699AF" # light red diff --git a/themes/doom-one/polarity.txt b/themes/doom-one/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/doom-one/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/dracula/backgroundsha256.txt b/themes/dracula/backgroundsha256.txt deleted file mode 100644 index fe65626..0000000 --- a/themes/dracula/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-rgJkrd7S/uWugPyBVTicbn6HtC8ru5HtEHP426CRSCE= diff --git a/themes/dracula/backgroundurl.txt b/themes/dracula/backgroundurl.txt deleted file mode 100644 index bc3d269..0000000 --- a/themes/dracula/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://images.hdqwalls.com/wallpapers/heights-are-not-scary-5k-7s.jpg diff --git a/themes/dracula/default.nix b/themes/dracula/default.nix new file mode 100644 index 0000000..0a51c17 --- /dev/null +++ b/themes/dracula/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Dracula"; + slug = "dracula"; + author = "Mike Barkmin (http://github.com/mikebarkmin) based on Dracula Theme (https://github.com/dracula)"; + description = "Dark theme inspired by a certain vampire"; + polarity = "dark"; + backgroundUrl = "https://images.hdqwalls.com/wallpapers/heights-are-not-scary-5k-7s.jpg"; + backgroundSha256 = "sha256-rgJkrd7S/uWugPyBVTicbn6HtC8ru5HtEHP426CRSCE="; + base00 = "282936"; + base01 = "333547"; + base02 = "4d4f68"; + base03 = "626483"; + base04 = "62d6e8"; + base05 = "e9e9f4"; + base06 = "f1f2f8"; + base07 = "f7f7fb"; + base08 = "ea51b2"; + base09 = "b45bcf"; + base0A = "00f769"; + base0B = "ebff87"; + base0C = "a1efe4"; + base0D = "62d6e8"; + base0E = "b45bcf"; + base0F = "00f769"; +} diff --git a/themes/dracula/dracula.yaml b/themes/dracula/dracula.yaml deleted file mode 100644 index 0645feb..0000000 --- a/themes/dracula/dracula.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Dracula" -author: "Mike Barkmin (http://github.com/mikebarkmin) based on Dracula Theme (https://github.com/dracula)" -base00: "282936" #background -base01: "333547" # I modified this slightly -base02: "4d4f68" -base03: "626483" -base04: "62d6e8" -base05: "e9e9f4" #foreground -base06: "f1f2f8" -base07: "f7f7fb" -base08: "ea51b2" -base09: "b45bcf" -base0A: "00f769" -base0B: "ebff87" -base0C: "a1efe4" -base0D: "62d6e8" -base0E: "b45bcf" -base0F: "00f769" diff --git a/themes/dracula/polarity.txt b/themes/dracula/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/dracula/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/ember/backgroundsha256.txt b/themes/ember/backgroundsha256.txt deleted file mode 100644 index 6fcd29b..0000000 --- a/themes/ember/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-3HX1ADHBXR50YGmS0Y7i6n19AUX74sy8tJnOLZzMjEw= diff --git a/themes/ember/backgroundurl.txt b/themes/ember/backgroundurl.txt deleted file mode 100644 index d9e99ef..0000000 --- a/themes/ember/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/x8/wallhaven-x82ldl.jpg diff --git a/themes/ember/default.nix b/themes/ember/default.nix new file mode 100644 index 0000000..c2c17ef --- /dev/null +++ b/themes/ember/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Ember"; + slug = "ember"; + author = "Emmet K (https://gitlab.com/librephoenix)"; + description = "Warm and fiery colorscheme"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/x8/wallhaven-x82ldl.jpg"; + backgroundSha256 = "sha256-3HX1ADHBXR50YGmS0Y7i6n19AUX74sy8tJnOLZzMjEw="; + base00 = "330a0a"; + base01 = "4d0a0a"; + base02 = "662a0a"; + base03 = "992f0a"; + base04 = "c05a0a"; + base05 = "f89852"; + base06 = "ffb441"; + base07 = "ffc8b5"; + base08 = "f92622"; + base09 = "fd751f"; + base0A = "fdc51f"; + base0B = "8682fe"; + base0C = "f1bf84"; + base0D = "b6b98f"; + base0E = "a275a0"; + base0F = "bb86cc"; +} diff --git a/themes/ember/ember.yaml b/themes/ember/ember.yaml deleted file mode 100644 index 3cd806c..0000000 --- a/themes/ember/ember.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Ember" -author: "Emmet K (https://gitlab.com/librephoenix)" -base00: "330a0a" -base01: "4d0a0a" -base02: "662a0a" -base03: "992f0a" -base04: "c05a0a" -base05: "f89852" -base06: "ffb441" -base07: "ffc8b5" -base08: "f92622" -base09: "fd751f" -base0A: "fdc51f" -base0B: "8682fe" -base0C: "f1bf84" -base0D: "b6b98f" -base0E: "a275a0" -base0F: "bb86cc" diff --git a/themes/ember/polarity.txt b/themes/ember/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/ember/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/emil/backgroundsha256.txt b/themes/emil/backgroundsha256.txt deleted file mode 100644 index c23a7cd..0000000 --- a/themes/emil/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-qD/yPZHqDgpMwhqPNtyO4r3dtAnR9oMx6DLizZvDHpk= diff --git a/themes/emil/backgroundurl.txt b/themes/emil/backgroundurl.txt deleted file mode 100644 index c9633c3..0000000 --- a/themes/emil/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/535/845/69/digital-art-artwork-fantasy-art-planet-sun-hd-wallpaper-d866fd38b0b06cd800cc016ed8d284fa.jpg diff --git a/themes/emil/default.nix b/themes/emil/default.nix new file mode 100644 index 0000000..cbe721e --- /dev/null +++ b/themes/emil/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Emil"; + slug = "emil"; + author = "limelier (https://github.com/limelier)"; + description = "Ethereal pastel color scheme"; + polarity = "light"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/535/845/69/digital-art-artwork-fantasy-art-planet-sun-hd-wallpaper-d866fd38b0b06cd800cc016ed8d284fa.jpg"; + backgroundSha256 = "sha256-qD/yPZHqDgpMwhqPNtyO4r3dtAnR9oMx6DLizZvDHpk="; + base00 = "efefef"; + base01 = "bebed2"; + base02 = "9e9eaf"; + base03 = "7c7c98"; + base04 = "505063"; + base05 = "313145"; + base06 = "22223a"; + base07 = "1a1a2f"; + base08 = "f43979"; + base09 = "d22a8b"; + base0A = "ff669b"; + base0B = "0073a8"; + base0C = "2155d6"; + base0D = "471397"; + base0E = "6916b6"; + base0F = "8d17a5"; +} diff --git a/themes/emil/emil.yaml b/themes/emil/emil.yaml deleted file mode 100644 index 4819daf..0000000 --- a/themes/emil/emil.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "emil" -author: "limelier" -base00: "efefef" -base01: "bebed2" -base02: "9e9eaf" -base03: "7c7c98" -base04: "505063" -base05: "313145" -base06: "22223a" -base07: "1a1a2f" -base08: "f43979" -base09: "d22a8b" -base0A: "ff669b" -base0B: "0073a8" -base0C: "2155d6" -base0D: "471397" -base0E: "6916b6" -base0F: "8d17a5" diff --git a/themes/emil/polarity.txt b/themes/emil/polarity.txt deleted file mode 100644 index 162faa6..0000000 --- a/themes/emil/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -light diff --git a/themes/eris/backgroundsha256.txt b/themes/eris/backgroundsha256.txt deleted file mode 100644 index a9b5607..0000000 --- a/themes/eris/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-w8BF0TvHX0LBZqPvgKJi0Zg6aWIKLgS/jyoRRu6M54A= diff --git a/themes/eris/backgroundurl.txt b/themes/eris/backgroundurl.txt deleted file mode 100644 index f070fc3..0000000 --- a/themes/eris/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/531/951/621/digital-digital-art-artwork-illustration-minimalism-hd-wallpaper-08869d3810a06c28a09cf1be487204ea.jpg diff --git a/themes/eris/default.nix b/themes/eris/default.nix new file mode 100644 index 0000000..08fed47 --- /dev/null +++ b/themes/eris/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Eris"; + slug = "eris"; + author = "ed (https://codeberg.org/ed)"; + description = "Vibrant purple and orange theme"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/531/951/621/digital-digital-art-artwork-illustration-minimalism-hd-wallpaper-08869d3810a06c28a09cf1be487204ea.jpg"; + backgroundSha256 = "sha256-w8BF0TvHX0LBZqPvgKJi0Zg6aWIKLgS/jyoRRu6M54A="; + base00 = "0a0920"; + base01 = "13133a"; + base02 = "23255a"; + base03 = "333773"; + base04 = "4a5293"; + base05 = "606bac"; + base06 = "7986c5"; + base07 = "9aaae5"; + base08 = "f768a3"; + base09 = "f768a3"; + base0A = "faaea2"; + base0B = "faaea2"; + base0C = "258fc4"; + base0D = "258fc4"; + base0E = "f768a3"; + base0F = "f768a3"; +} diff --git a/themes/eris/eris.yaml b/themes/eris/eris.yaml deleted file mode 100644 index a94bd24..0000000 --- a/themes/eris/eris.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "eris" -author: "ed (https://codeberg.org/ed)" -base00: "0a0920" -base01: "13133a" -base02: "23255a" -base03: "333773" -base04: "4a5293" -base05: "606bac" -base06: "7986c5" -base07: "9aaae5" -base08: "f768a3" -base09: "f768a3" -base0A: "faaea2" -base0B: "faaea2" -base0C: "258fc4" -base0D: "258fc4" -base0E: "f768a3" -base0F: "f768a3" diff --git a/themes/eris/polarity.txt b/themes/eris/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/eris/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/eva/backgroundsha256.txt b/themes/eva/backgroundsha256.txt deleted file mode 100644 index 5fed936..0000000 --- a/themes/eva/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-eWXpVrveYCG8cq3Pu/734DbO8tdofjUUIlrSNfOUTlM= diff --git a/themes/eva/backgroundurl.txt b/themes/eva/backgroundurl.txt deleted file mode 100644 index c6af0cc..0000000 --- a/themes/eva/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/13/wallhaven-13m9z9.jpg diff --git a/themes/eva/default.nix b/themes/eva/default.nix new file mode 100644 index 0000000..d2bd573 --- /dev/null +++ b/themes/eva/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Eva"; + slug = "eva"; + author = "kjakapat (https://github.com/kjakapat)"; + description = "Wintery cyan color scheme"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/13/wallhaven-13m9z9.jpg"; + backgroundSha256 = "sha256-eWXpVrveYCG8cq3Pu/734DbO8tdofjUUIlrSNfOUTlM="; + base00 = "2a3b4d"; + base01 = "3d566f"; + base02 = "4b6988"; + base03 = "55799c"; + base04 = "7e90a3"; + base05 = "9fa2a6"; + base06 = "d6d7d9"; + base07 = "ffffff"; + base08 = "c4676c"; + base09 = "ff9966"; + base0A = "ffff66"; + base0B = "66ff66"; + base0C = "4b8f77"; + base0D = "15f4ee"; + base0E = "9c6cd3"; + base0F = "bb64a9"; +} diff --git a/themes/eva/eva.yaml b/themes/eva/eva.yaml deleted file mode 100644 index 8f0e563..0000000 --- a/themes/eva/eva.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Eva" -author: "kjakapat (https://github.com/kjakapat)" -base00: "2a3b4d" # default background -base01: "3d566f" -base02: "4b6988" -base03: "55799c" # commments -base04: "7e90a3" -base05: "9fa2a6" # foreground -base06: "d6d7d9" -base07: "ffffff" -base08: "c4676c" # red -base09: "ff9966" # orange -base0A: "ffff66" # yellow -base0B: "66ff66" # green -base0C: "4b8f77" # cyan -base0D: "15f4ee" # blue -base0E: "9c6cd3" # purple -base0F: "bb64a9" # magenta diff --git a/themes/eva/polarity.txt b/themes/eva/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/eva/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/everforest/backgroundsha256.txt b/themes/everforest/backgroundsha256.txt deleted file mode 100644 index 01cb522..0000000 --- a/themes/everforest/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-xtnvDoIs+kKvRXo/L+ifq/q+yWNeqh1EUsaRkmDTtz4= diff --git a/themes/everforest/backgroundurl.txt b/themes/everforest/backgroundurl.txt deleted file mode 100644 index 17d3ae2..0000000 --- a/themes/everforest/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/83/wallhaven-839ppy.png diff --git a/themes/everforest/default.nix b/themes/everforest/default.nix new file mode 100644 index 0000000..7509bc3 --- /dev/null +++ b/themes/everforest/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Everforest"; + slug = "everforest"; + author = "Sainnhe Park (https://github.com/sainnhe)"; + description = "Comfortable & pleasant color scheme (originally for Vim)"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/83/wallhaven-839ppy.png"; + backgroundSha256 = "sha256-xtnvDoIs+kKvRXo/L+ifq/q+yWNeqh1EUsaRkmDTtz4="; + base00 = "2f383e"; + base01 = "374247"; + base02 = "4a555b"; + base03 = "859289"; + base04 = "9da9a0"; + base05 = "d3c6aa"; + base06 = "e4e1cd"; + base07 = "fdf6e3"; + base08 = "7fbbb3"; + base09 = "d699b6"; + base0A = "dbbc7f"; + base0B = "83c092"; + base0C = "e69875"; + base0D = "a7c080"; + base0E = "e67e80"; + base0F = "eaedc8"; +} diff --git a/themes/everforest/everforest.yaml b/themes/everforest/everforest.yaml deleted file mode 100644 index 4545a8a..0000000 --- a/themes/everforest/everforest.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Everforest" -author: "Sainnhe Park (https://github.com/sainnhe)" -base00: "2f383e" # bg0, palette1 dark (medium) -base01: "374247" # bg1, palette1 dark (medium) -base02: "4a555b" # bg3, palette1 dark (medium) -base03: "859289" # grey1, palette2 dark -base04: "9da9a0" # grey2, palette2 dark -base05: "d3c6aa" # fg, palette2 dark -base06: "e4e1cd" # bg3, palette1 light (medium) -base07: "fdf6e3" # bg0, palette1 light (medium) -base08: "7fbbb3" # blue, palette2 dark -base09: "d699b6" # purple, palette2 dark -base0A: "dbbc7f" # yellow, palette2 dark -base0B: "83c092" # aqua, palette2 dark -base0C: "e69875" # orange, palette2 dark -base0D: "a7c080" # green, palette2 dark -base0E: "e67e80" # red, palette2 dark -base0F: "eaedc8" # bg_visual, palette1 dark (medium) diff --git a/themes/everforest/polarity.txt b/themes/everforest/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/everforest/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/fairy-floss/backgroundsha256.txt b/themes/fairy-floss/backgroundsha256.txt deleted file mode 100644 index 37cedfa..0000000 --- a/themes/fairy-floss/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-bv9c0RWYGT3EX8tfqzanQ8ZwVNcxbpmRYv5ymk7hido= diff --git a/themes/fairy-floss/backgroundurl.txt b/themes/fairy-floss/backgroundurl.txt deleted file mode 100644 index deb32fe..0000000 --- a/themes/fairy-floss/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/rr/wallhaven-rrgydw.jpg diff --git a/themes/fairy-floss/default.nix b/themes/fairy-floss/default.nix new file mode 100644 index 0000000..3013c06 --- /dev/null +++ b/themes/fairy-floss/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Fairy Floss"; + slug = "fairy-floss"; + author = "sailorhg (https://github.com/sailorhg)"; + description = "A pastel/candy/daydream theme"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/rr/wallhaven-rrgydw.jpg"; + backgroundSha256 = "sha256-bv9c0RWYGT3EX8tfqzanQ8ZwVNcxbpmRYv5ymk7hido="; + base00 = "343145"; + base01 = "464258"; + base02 = "6A6483"; + base03 = "422013"; + base04 = "9673D3"; + base05 = "A0A0C0"; + base06 = "B5B2Bd"; + base07 = "F8F8F0"; + base08 = "CC6666"; + base09 = "FFEA00"; + base0A = "C2FFDF"; + base0B = "55b3cc"; + base0C = "8295D6"; + base0D = "FFB8D1"; + base0E = "C5A3FF"; + base0F = "96CBFE"; +} diff --git a/themes/fairy-floss/fairy-floss.yaml b/themes/fairy-floss/fairy-floss.yaml deleted file mode 100644 index e3c71a3..0000000 --- a/themes/fairy-floss/fairy-floss.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Fairy Floss scheme -# Based on fairyfloss by sailorhg (https://github.com/sailorhg/fairyfloss) -scheme: "Fairy Floss" -author: "sailorhg (https://github.com/sailorhg)" -base00: "343145" # ---- -base01: "464258" # --- -base02: "6A6483" # -- -base03: "422013" # - -base04: "9673D3" # + -base05: "A0A0C0" # ++ -base06: "B5B2Bd" # +++ -base07: "F8F8F0" # ++++ -base08: "CC6666" -base09: "FFEA00" -base0A: "C2FFDF" -base0B: "55b3cc" -base0C: "8295D6" -base0D: "FFB8D1" -base0E: "C5A3FF" -base0F: "96CBFE" diff --git a/themes/fairy-floss/polarity.txt b/themes/fairy-floss/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/fairy-floss/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/gigavolt/backgroundsha256.txt b/themes/gigavolt/backgroundsha256.txt deleted file mode 100644 index a1e95bf..0000000 --- a/themes/gigavolt/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-5H/VP5qzdJQgpzndacXt12wbFcfxaWDqAoZxFSetekg= diff --git a/themes/gigavolt/backgroundurl.txt b/themes/gigavolt/backgroundurl.txt deleted file mode 100644 index 5a6c8d9..0000000 --- a/themes/gigavolt/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/240/608/936/anime-original-bird-building-city-hd-wallpaper-d3ead31ac8d55c6d18129e0391683261.jpg diff --git a/themes/gigavolt/default.nix b/themes/gigavolt/default.nix new file mode 100644 index 0000000..bdd8768 --- /dev/null +++ b/themes/gigavolt/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Gigavolt"; + slug = "gigavolt"; + author = "Aidan Swope (https://github.com/Whillikers)"; + description = "An electrifying color scheme. For use with mad science only"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/240/608/936/anime-original-bird-building-city-hd-wallpaper-d3ead31ac8d55c6d18129e0391683261.jpg"; + backgroundSha256 = "sha256-5H/VP5qzdJQgpzndacXt12wbFcfxaWDqAoZxFSetekg="; + base00 = "202126"; + base01 = "2d303d"; + base02 = "5a576e"; + base03 = "a1d2e6"; + base04 = "cad3ff"; + base05 = "e9e7e1"; + base06 = "eff0f9"; + base07 = "f2fbff"; + base08 = "ff661a"; + base09 = "19f988"; + base0A = "ffdc2d"; + base0B = "f2e6a9"; + base0C = "fb6acb"; + base0D = "40bfff"; + base0E = "ae94f9"; + base0F = "6187ff"; +} diff --git a/themes/gigavolt/gigavolt.yaml b/themes/gigavolt/gigavolt.yaml deleted file mode 100644 index 164bbda..0000000 --- a/themes/gigavolt/gigavolt.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Gigavolt" -author: "Aidan Swope (http://github.com/Whillikers)" -base00: "202126" -base01: "2d303d" -base02: "5a576e" -base03: "a1d2e6" -base04: "cad3ff" -base05: "e9e7e1" -base06: "eff0f9" -base07: "f2fbff" -base08: "ff661a" -base09: "19f988" -base0A: "ffdc2d" -base0B: "f2e6a9" -base0C: "fb6acb" -base0D: "40bfff" -base0E: "ae94f9" -base0F: "6187ff" diff --git a/themes/gigavolt/polarity.txt b/themes/gigavolt/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/gigavolt/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/gruvbox-dark-hard/backgroundsha256.txt b/themes/gruvbox-dark-hard/backgroundsha256.txt deleted file mode 100644 index b9eeafd..0000000 --- a/themes/gruvbox-dark-hard/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-dBmKkLR8yI1W7d9IRTOaErHf0KApSq0UsY5LWxAaSuA= diff --git a/themes/gruvbox-dark-hard/backgroundurl.txt b/themes/gruvbox-dark-hard/backgroundurl.txt deleted file mode 100644 index 4c417a3..0000000 --- a/themes/gruvbox-dark-hard/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/39/wallhaven-3911w9.jpg diff --git a/themes/gruvbox-dark-hard/default.nix b/themes/gruvbox-dark-hard/default.nix new file mode 100644 index 0000000..05321fa --- /dev/null +++ b/themes/gruvbox-dark-hard/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Gruvbox Dark, Hard"; + slug = "gruvbox-dark-hard"; + author = "Dawid Kurek (dawikur@gmail.com) and morhetz (https://github.com/morhetz/gruvbox)"; + description = "Retro groove color scheme (originally for Vim)"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/39/wallhaven-3911w9.jpg"; + backgroundSha256 = "sha256-dBmKkLR8yI1W7d9IRTOaErHf0KApSq0UsY5LWxAaSuA="; + base00 = "1d2021"; + base01 = "3c3836"; + base02 = "504945"; + base03 = "665c54"; + base04 = "bdae93"; + base05 = "d5c4a1"; + base06 = "ebdbb2"; + base07 = "fbf1c7"; + base08 = "fb4934"; + base09 = "fe8019"; + base0A = "fabd2f"; + base0B = "b8bb26"; + base0C = "8ec07c"; + base0D = "83a598"; + base0E = "d3869b"; + base0F = "d65d0e"; +} diff --git a/themes/gruvbox-dark-hard/gruvbox-dark-hard.yaml b/themes/gruvbox-dark-hard/gruvbox-dark-hard.yaml deleted file mode 100644 index de8f94d..0000000 --- a/themes/gruvbox-dark-hard/gruvbox-dark-hard.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Gruvbox dark, hard" -author: "Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)" -base00: "1d2021" # ---- -base01: "3c3836" # --- -base02: "504945" # -- -base03: "665c54" # - -base04: "bdae93" # + -base05: "d5c4a1" # ++ -base06: "ebdbb2" # +++ -base07: "fbf1c7" # ++++ -base08: "fb4934" # red -base09: "fe8019" # orange -base0A: "fabd2f" # yellow -base0B: "b8bb26" # green -base0C: "8ec07c" # aqua/cyan -base0D: "83a598" # blue -base0E: "d3869b" # purple -base0F: "d65d0e" # brown diff --git a/themes/gruvbox-dark-hard/polarity.txt b/themes/gruvbox-dark-hard/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/gruvbox-dark-hard/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/gruvbox-dark-medium/backgroundsha256.txt b/themes/gruvbox-dark-medium/backgroundsha256.txt deleted file mode 100644 index b9eeafd..0000000 --- a/themes/gruvbox-dark-medium/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-dBmKkLR8yI1W7d9IRTOaErHf0KApSq0UsY5LWxAaSuA= diff --git a/themes/gruvbox-dark-medium/backgroundurl.txt b/themes/gruvbox-dark-medium/backgroundurl.txt deleted file mode 100644 index 4c417a3..0000000 --- a/themes/gruvbox-dark-medium/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/39/wallhaven-3911w9.jpg diff --git a/themes/gruvbox-dark-medium/default.nix b/themes/gruvbox-dark-medium/default.nix new file mode 100644 index 0000000..fcc1c8e --- /dev/null +++ b/themes/gruvbox-dark-medium/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Gruvbox Dark, Medium"; + slug = "gruvbox-dark-medium"; + author = "Dawid Kurek (dawikur@gmail.com) and morhetz (https://github.com/morhetz/gruvbox)"; + description = "Retro groove color scheme (originally for Vim)"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/39/wallhaven-3911w9.jpg"; + backgroundSha256 = "sha256-dBmKkLR8yI1W7d9IRTOaErHf0KApSq0UsY5LWxAaSuA="; + base00 = "282828"; + base01 = "3c3836"; + base02 = "504945"; + base03 = "665c54"; + base04 = "bdae93"; + base05 = "d5c4a1"; + base06 = "ebdbb2"; + base07 = "fbf1c7"; + base08 = "fb4934"; + base09 = "fe8019"; + base0A = "fabd2f"; + base0B = "b8bb26"; + base0C = "8ec07c"; + base0D = "83a598"; + base0E = "d3869b"; + base0F = "d65d0e"; +} diff --git a/themes/gruvbox-dark-medium/gruvbox-dark-medium.yaml b/themes/gruvbox-dark-medium/gruvbox-dark-medium.yaml deleted file mode 100644 index 7104d67..0000000 --- a/themes/gruvbox-dark-medium/gruvbox-dark-medium.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Gruvbox dark, medium" -author: "Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)" -base00: "282828" # ---- -base01: "3c3836" # --- -base02: "504945" # -- -base03: "665c54" # - -base04: "bdae93" # + -base05: "d5c4a1" # ++ -base06: "ebdbb2" # +++ -base07: "fbf1c7" # ++++ -base08: "fb4934" # red -base09: "fe8019" # orange -base0A: "fabd2f" # yellow -base0B: "b8bb26" # green -base0C: "8ec07c" # aqua/cyan -base0D: "83a598" # blue -base0E: "d3869b" # purple -base0F: "d65d0e" # brown diff --git a/themes/gruvbox-dark-medium/polarity.txt b/themes/gruvbox-dark-medium/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/gruvbox-dark-medium/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/gruvbox-light-hard/backgroundsha256.txt b/themes/gruvbox-light-hard/backgroundsha256.txt deleted file mode 100644 index a0f4687..0000000 --- a/themes/gruvbox-light-hard/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-12U/Z4HGv31MihexuwCnTX6mcfOvkdUsMghahKzoPBE= diff --git a/themes/gruvbox-light-hard/backgroundurl.txt b/themes/gruvbox-light-hard/backgroundurl.txt deleted file mode 100644 index b6f5fd5..0000000 --- a/themes/gruvbox-light-hard/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/dp/wallhaven-dppjk3.jpg diff --git a/themes/gruvbox-light-hard/default.nix b/themes/gruvbox-light-hard/default.nix new file mode 100644 index 0000000..4ed115e --- /dev/null +++ b/themes/gruvbox-light-hard/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Gruvbox Light, Hard"; + slug = "gruvbox-light-hard"; + author = "Dawid Kurek (dawikur@gmail.com) and morhetz (https://github.com/morhetz/gruvbox)"; + description = "Retro groove color scheme (originally for Vim)"; + polarity = "light"; + backgroundUrl = "https://w.wallhaven.cc/full/dp/wallhaven-dppjk3.jpg"; + backgroundSha256 = "sha256-12U/Z4HGv31MihexuwCnTX6mcfOvkdUsMghahKzoPBE="; + base00 = "f9f5d7"; + base01 = "ebdbb2"; + base02 = "d5c4a1"; + base03 = "bdae93"; + base04 = "665c54"; + base05 = "504945"; + base06 = "3c3836"; + base07 = "282828"; + base08 = "9d0006"; + base09 = "af3a03"; + base0A = "b57614"; + base0B = "79740e"; + base0C = "427b58"; + base0D = "076678"; + base0E = "8f3f71"; + base0F = "d65d0e"; +} diff --git a/themes/gruvbox-light-hard/gruvbox-light-hard.yaml b/themes/gruvbox-light-hard/gruvbox-light-hard.yaml deleted file mode 100644 index 2b3b8e3..0000000 --- a/themes/gruvbox-light-hard/gruvbox-light-hard.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Gruvbox light, hard" -author: "Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)" -base00: "f9f5d7" # ---- -base01: "ebdbb2" # --- -base02: "d5c4a1" # -- -base03: "bdae93" # - -base04: "665c54" # + -base05: "504945" # ++ -base06: "3c3836" # +++ -base07: "282828" # ++++ -base08: "9d0006" # red -base09: "af3a03" # orange -base0A: "b57614" # yellow -base0B: "79740e" # green -base0C: "427b58" # aqua/cyan -base0D: "076678" # blue -base0E: "8f3f71" # purple -base0F: "d65d0e" # brown diff --git a/themes/gruvbox-light-hard/polarity.txt b/themes/gruvbox-light-hard/polarity.txt deleted file mode 100644 index 162faa6..0000000 --- a/themes/gruvbox-light-hard/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -light diff --git a/themes/gruvbox-light-medium/backgroundsha256.txt b/themes/gruvbox-light-medium/backgroundsha256.txt deleted file mode 100644 index a0f4687..0000000 --- a/themes/gruvbox-light-medium/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-12U/Z4HGv31MihexuwCnTX6mcfOvkdUsMghahKzoPBE= diff --git a/themes/gruvbox-light-medium/backgroundurl.txt b/themes/gruvbox-light-medium/backgroundurl.txt deleted file mode 100644 index b6f5fd5..0000000 --- a/themes/gruvbox-light-medium/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/dp/wallhaven-dppjk3.jpg diff --git a/themes/gruvbox-light-medium/default.nix b/themes/gruvbox-light-medium/default.nix new file mode 100644 index 0000000..e0bc5f2 --- /dev/null +++ b/themes/gruvbox-light-medium/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Gruvbox Light, Medium"; + slug = "gruvbox-light-medium"; + author = "Dawid Kurek (dawikur@gmail.com) and morhetz (https://github.com/morhetz/gruvbox)"; + description = "Retro groove color scheme (originally for Vim)"; + polarity = "light"; + backgroundUrl = "https://w.wallhaven.cc/full/dp/wallhaven-dppjk3.jpg"; + backgroundSha256 = "sha256-12U/Z4HGv31MihexuwCnTX6mcfOvkdUsMghahKzoPBE="; + base00 = "fbf1c7"; + base01 = "ebdbb2"; + base02 = "d5c4a1"; + base03 = "bdae93"; + base04 = "665c54"; + base05 = "504945"; + base06 = "3c3836"; + base07 = "282828"; + base08 = "9d0006"; + base09 = "af3a03"; + base0A = "b57614"; + base0B = "79740e"; + base0C = "427b58"; + base0D = "076678"; + base0E = "8f3f71"; + base0F = "d65d0e"; +} diff --git a/themes/gruvbox-light-medium/gruvbox-light-medium.yaml b/themes/gruvbox-light-medium/gruvbox-light-medium.yaml deleted file mode 100644 index 9fe060d..0000000 --- a/themes/gruvbox-light-medium/gruvbox-light-medium.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Gruvbox light, medium" -author: "Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)" -base00: "fbf1c7" # ---- -base01: "ebdbb2" # --- -base02: "d5c4a1" # -- -base03: "bdae93" # - -base04: "665c54" # + -base05: "504945" # ++ -base06: "3c3836" # +++ -base07: "282828" # ++++ -base08: "9d0006" # red -base09: "af3a03" # orange -base0A: "b57614" # yellow -base0B: "79740e" # green -base0C: "427b58" # aqua/cyan -base0D: "076678" # blue -base0E: "8f3f71" # purple -base0F: "d65d0e" # brown diff --git a/themes/gruvbox-light-medium/polarity.txt b/themes/gruvbox-light-medium/polarity.txt deleted file mode 100644 index 162faa6..0000000 --- a/themes/gruvbox-light-medium/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -light diff --git a/themes/helios/backgroundsha256.txt b/themes/helios/backgroundsha256.txt deleted file mode 100644 index 34c1ecc..0000000 --- a/themes/helios/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-KDp90rltTtMEiQtsA8VPq2Msi/D51mPPEdo1tiRIo7E= diff --git a/themes/helios/backgroundurl.txt b/themes/helios/backgroundurl.txt deleted file mode 100644 index 9f3496e..0000000 --- a/themes/helios/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://images.hdqwalls.com/wallpapers/one-last-time-8h.jpg diff --git a/themes/helios/default.nix b/themes/helios/default.nix new file mode 100644 index 0000000..01134d7 --- /dev/null +++ b/themes/helios/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Helios"; + slug = "helios"; + author = "Alex Meyer (https://github.com/reyemxela)"; + description = "Somewhat inspired by gruvbox; a dark, saturated base16 scheme with nice clean colors"; + polarity = "dark"; + backgroundUrl = "https://images.hdqwalls.com/wallpapers/one-last-time-8h.jpg"; + backgroundSha256 = "sha256-KDp90rltTtMEiQtsA8VPq2Msi/D51mPPEdo1tiRIo7E="; + base00 = "1d2021"; + base01 = "383c3e"; + base02 = "53585b"; + base03 = "6f7579"; + base04 = "cdcdcd"; + base05 = "d5d5d5"; + base06 = "dddddd"; + base07 = "e5e5e5"; + base08 = "d72638"; + base09 = "eb8413"; + base0A = "f19d1a"; + base0B = "88b92d"; + base0C = "1ba595"; + base0D = "1e8bac"; + base0E = "be4264"; + base0F = "c85e0d"; +} diff --git a/themes/helios/helios.yaml b/themes/helios/helios.yaml deleted file mode 100644 index d1c1445..0000000 --- a/themes/helios/helios.yaml +++ /dev/null @@ -1,19 +0,0 @@ -scheme: "Helios" -author: "Alex Meyer (https://github.com/reyemxela)" -base00: "1d2021" # ---- -base01: "383c3e" # --- -base02: "53585b" # -- -base03: "6f7579" # - -base04: "cdcdcd" # + -base05: "d5d5d5" # ++ -base06: "dddddd" # +++ -base07: "e5e5e5" # ++++ -base08: "d72638" # red -base09: "eb8413" # orange -base0A: "f19d1a" # yellow -base0B: "88b92d" # green -base0C: "1ba595" # aqua/cyan -base0D: "1e8bac" # blue -base0E: "be4264" # purple -base0F: "c85e0d" # brown - diff --git a/themes/helios/polarity.txt b/themes/helios/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/helios/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/henna/backgroundsha256.txt b/themes/henna/backgroundsha256.txt deleted file mode 100644 index ab3ec6a..0000000 --- a/themes/henna/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-0skcwkVzZ3VdLImlMUT9sab3631vTttKk8LupTqM71Q= diff --git a/themes/henna/backgroundurl.txt b/themes/henna/backgroundurl.txt deleted file mode 100644 index 643e5b2..0000000 --- a/themes/henna/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/71/196/981/digital-art-minimalism-nature-hills-wallpaper-88f64d4860b08ca8d02c41def8f2349a.jpg diff --git a/themes/henna/default.nix b/themes/henna/default.nix new file mode 100644 index 0000000..0248c03 --- /dev/null +++ b/themes/henna/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Henna"; + slug = "henna"; + author = "httpsterio (https://github.com/httpsterio/vscode-henna)"; + description = "Henna is a colour theme inspired by a certain green-eyed redhead girl"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/71/196/981/digital-art-minimalism-nature-hills-wallpaper-88f64d4860b08ca8d02c41def8f2349a.jpg"; + backgroundSha256 = "sha256-0skcwkVzZ3VdLImlMUT9sab3631vTttKk8LupTqM71Q="; + base00 = "10151a"; + base01 = "1B1F23"; + base02 = "2c313a"; + base03 = "3B4048"; + base04 = "495162"; + base05 = "606F73"; + base06 = "6B717D"; + base07 = "f8f8f0"; + base08 = "e74c3c"; + base09 = "fd7c56"; + base0A = "9cd230"; + base0B = "53df83"; + base0C = "1abc9c"; + base0D = "56b5c2"; + base0E = "FFB8D1"; + base0F = "ECBE7B"; +} diff --git a/themes/henna/henna.yaml b/themes/henna/henna.yaml deleted file mode 100644 index a05d28b..0000000 --- a/themes/henna/henna.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Henna scheme -# Based on vscode-henna by httpsterio (https://github.com/httpsterio/vscode-henna) -scheme: "Henna" -author: "librephoenix (https://gitlab.com/librephoenix)" -base00: "10151a" # ---- -base01: "1B1F23" # --- -base02: "2c313a" # -- -base03: "3B4048" # - -base04: "495162" # + -base05: "606F73" # ++ -base06: "6B717D" # +++ -base07: "f8f8f0" # ++++ -base08: "e74c3c" -base09: "fd7c56" -base0A: "9cd230" -base0B: "53df83" -base0C: "1abc9c" -base0D: "56b5c2" -base0E: "FFB8D1" -base0F: "ECBE7B" diff --git a/themes/henna/polarity.txt b/themes/henna/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/henna/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/horizon-dark/backgroundsha256.txt b/themes/horizon-dark/backgroundsha256.txt deleted file mode 100644 index 0377205..0000000 --- a/themes/horizon-dark/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-a09gjqeVRB6JlDvis+QRDquNuefDAj/NHw9FHAj8yys= diff --git a/themes/horizon-dark/backgroundurl.txt b/themes/horizon-dark/backgroundurl.txt deleted file mode 100644 index 327b24e..0000000 --- a/themes/horizon-dark/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/966/951/802/digital-digital-art-artwork-illustration-fantasy-art-hd-wallpaper-4856fd282030fc78505c71cea802646a.jpg diff --git a/themes/horizon-dark/default.nix b/themes/horizon-dark/default.nix new file mode 100644 index 0000000..ac1adda --- /dev/null +++ b/themes/horizon-dark/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Horizon Dark"; + slug = "horizon-dark"; + author = "Michaël Ball (http://github.com/michael-ball/)"; + description = "A beautifully warm theme (originally for Visual Studio Code)"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/966/951/802/digital-digital-art-artwork-illustration-fantasy-art-hd-wallpaper-4856fd282030fc78505c71cea802646a.jpg"; + backgroundSha256 = "sha256-a09gjqeVRB6JlDvis+QRDquNuefDAj/NHw9FHAj8yys="; + base00 = "1C1E26"; + base01 = "232530"; + base02 = "2E303E"; + base03 = "6F6F70"; + base04 = "9DA0A2"; + base05 = "CBCED0"; + base06 = "DCDFE4"; + base07 = "E3E6EE"; + base08 = "E93C58"; + base09 = "E58D7D"; + base0A = "EFB993"; + base0B = "EFAF8E"; + base0C = "24A8B4"; + base0D = "DF5273"; + base0E = "B072D1"; + base0F = "E4A382"; +} diff --git a/themes/horizon-dark/horizon-dark.yaml b/themes/horizon-dark/horizon-dark.yaml deleted file mode 100644 index ee7d8df..0000000 --- a/themes/horizon-dark/horizon-dark.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Horizon Dark" -author: "Michaël Ball (http://github.com/michael-ball/)" -base00: "1C1E26" -base01: "232530" -base02: "2E303E" -base03: "6F6F70" -base04: "9DA0A2" -base05: "CBCED0" -base06: "DCDFE4" -base07: "E3E6EE" -base08: "E93C58" -base09: "E58D7D" -base0A: "EFB993" -base0B: "EFAF8E" -base0C: "24A8B4" -base0D: "DF5273" -base0E: "B072D1" -base0F: "E4A382" diff --git a/themes/horizon-dark/polarity.txt b/themes/horizon-dark/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/horizon-dark/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/io/backgroundsha256.txt b/themes/io/backgroundsha256.txt deleted file mode 100644 index 01a4ac5..0000000 --- a/themes/io/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-GjM/Bu0zispdtPCFPzAk+zGlKYYg5XwTTxZ0TXOW9Fg= diff --git a/themes/io/backgroundurl.txt b/themes/io/backgroundurl.txt deleted file mode 100644 index eacb57a..0000000 --- a/themes/io/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://images.hdqwalls.com/wallpapers/aurora-s-embrace-a-borealis-beauty-in-anime-ub.jpg diff --git a/themes/io/default.nix b/themes/io/default.nix new file mode 100644 index 0000000..2c0df78 --- /dev/null +++ b/themes/io/default.nix @@ -0,0 +1,26 @@ +{ + scheme = "Io"; + slug = "io"; + author = "LibrePhoenix (https://github.com/librephoenix)"; + credits = "Forked from Fernando Marques (https://github.com/RakkiUwU) and Gabriel Fontes (https://github.com/Misterio77))"; + description = "Flagship theme of the LibrePhoenix Channel, named after one of Jupiter's moons"; + polarity = "dark"; + backgroundUrl = "https://images.hdqwalls.com/wallpapers/aurora-s-embrace-a-borealis-beauty-in-anime-ub.jpg"; + backgroundSha256 = "sha256-GjM/Bu0zispdtPCFPzAk+zGlKYYg5XwTTxZ0TXOW9Fg="; + base00 = "1a181a"; + base01 = "262326"; + base02 = "302c30"; + base03 = "463f47"; + base04 = "bfaab7"; + base05 = "dbd7da"; + base06 = "dbd7da"; + base07 = "faf7f9"; + base08 = "de5b44"; + base09 = "e39755"; + base0A = "a84a73"; + base0B = "c965bf"; + base0C = "9c5fce"; + base0D = "0e85b9"; + base0E = "6ac38f"; + base0F = "a3ab5a"; +} diff --git a/themes/io/io.yaml b/themes/io/io.yaml deleted file mode 100644 index 5af69a4..0000000 --- a/themes/io/io.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Io" -author: "LibrePhoenix (forked from Fernando Marques (https://github.com/RakkiUwU) and Gabriel Fontes (https://github.com/Misterio77))" -base00: "1a181a" -base01: "262326" -base02: "302c30" -base03: "373238" -base04: "463f47" -base05: "bfaab7" -base06: "dbd7da" -base07: "faf7f9" -base08: "de5b44" -base09: "e39755" -base0A: "a84a73" -base0B: "c965bf" -base0C: "9c5fce" -base0D: "0e85b9" -base0E: "6ac38f" -base0F: "a3ab5a" diff --git a/themes/io/polarity.txt b/themes/io/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/io/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/isotope/backgroundsha256.txt b/themes/isotope/backgroundsha256.txt deleted file mode 100644 index 5450dea..0000000 --- a/themes/isotope/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-zYzUBaCvYVgmfw1/irgleRpTIrm4dsP8F3RmR8m/DBk= diff --git a/themes/isotope/backgroundurl.txt b/themes/isotope/backgroundurl.txt deleted file mode 100644 index 455a891..0000000 --- a/themes/isotope/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/108/140/869/digital-digital-art-artwork-fantasy-art-drawing-hd-wallpaper-d8b62d28c0f06c48d03c114ec8f2b4aa.jpg diff --git a/themes/isotope/default.nix b/themes/isotope/default.nix new file mode 100644 index 0000000..e120151 --- /dev/null +++ b/themes/isotope/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Isotope"; + slug = "isotope"; + author = "Jan T. Sott (https://github.com/idleberg)"; + description = "Vibrant atomic color scheme"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/108/140/869/digital-digital-art-artwork-fantasy-art-drawing-hd-wallpaper-d8b62d28c0f06c48d03c114ec8f2b4aa.jpg"; + backgroundSha256 = "sha256-zYzUBaCvYVgmfw1/irgleRpTIrm4dsP8F3RmR8m/DBk="; + base00 = "000000"; + base01 = "404040"; + base02 = "606060"; + base03 = "808080"; + base04 = "c0c0c0"; + base05 = "d0d0d0"; + base06 = "e0e0e0"; + base07 = "ffffff"; + base08 = "ff0000"; + base09 = "ff9900"; + base0A = "ff0099"; + base0B = "33ff00"; + base0C = "00ffff"; + base0D = "0066ff"; + base0E = "cc00ff"; + base0F = "3300ff"; +} diff --git a/themes/isotope/isotope.yaml b/themes/isotope/isotope.yaml deleted file mode 100644 index 7393a52..0000000 --- a/themes/isotope/isotope.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Base16 Builder scheme by Jan T. Sott -scheme: "Isotope" -author: "Jan T. Sott" -base00: "000000" -base01: "404040" -base02: "606060" -base03: "808080" -base04: "c0c0c0" -base05: "d0d0d0" -base06: "e0e0e0" -base07: "ffffff" -base08: "ff0000" -base09: "ff9900" -base0A: "ff0099" -base0B: "33ff00" -base0C: "00ffff" -base0D: "0066ff" -base0E: "cc00ff" -base0F: "3300ff" \ No newline at end of file diff --git a/themes/isotope/polarity.txt b/themes/isotope/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/isotope/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/manegarm/backgroundsha256.txt b/themes/manegarm/backgroundsha256.txt deleted file mode 100644 index 4150676..0000000 --- a/themes/manegarm/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-JdL2TfIJCQdzmoex/uqJzJJ1V8nVmTWRBC296O8ynnw= diff --git a/themes/manegarm/backgroundurl.txt b/themes/manegarm/backgroundurl.txt deleted file mode 100644 index 833ccfe..0000000 --- a/themes/manegarm/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/86/440/1017/digital-digital-art-artwork-illustration-drawing-hd-wallpaper-60cb37b6dd08e0d36729f856e7bcb083.jpg diff --git a/themes/manegarm/default.nix b/themes/manegarm/default.nix new file mode 100644 index 0000000..50fb06f --- /dev/null +++ b/themes/manegarm/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Manegarm"; + slug = "manegarm"; + author = "kenranunderscore (https://github.com/kenranunderscore)"; + description = "A dark theme with autumn-inspired colors"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/86/440/1017/digital-digital-art-artwork-illustration-drawing-hd-wallpaper-60cb37b6dd08e0d36729f856e7bcb083.jpg"; + backgroundSha256 = "sha256-JdL2TfIJCQdzmoex/uqJzJJ1V8nVmTWRBC296O8ynnw="; + base00 = "1c1408"; + base01 = "241c0a"; + base02 = "351a0f"; + base03 = "422013"; + base04 = "5b8512"; + base05 = "73797e"; + base06 = "9ca0a4"; + base07 = "dfdfdf"; + base08 = "ff4e00"; + base09 = "ff7000"; + base0A = "7cb518"; + base0B = "ffbf00"; + base0C = "0075c4"; + base0D = "d72638"; + base0E = "76597b"; + base0F = "dbc077"; +} diff --git a/themes/manegarm/manegarm.yaml b/themes/manegarm/manegarm.yaml deleted file mode 100644 index 41aaecc..0000000 --- a/themes/manegarm/manegarm.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Manegarm scheme -# Based on manegarm in doom-themes (https://github.com/doomemacs/themes) -# by kenranunderscore (https://github.com/kenranunderscore) -scheme: "Manegarm" -author: "librephoenix (https://gitlab.com/librephoenix)" -base00: "1c1408" # ---- -base01: "241c0a" # --- -base02: "351a0f" # -- -base03: "422013" # - -base04: "5b8512" # + -base05: "73797e" # ++ -base06: "9ca0a4" # +++ -base07: "dfdfdf" # ++++ -base08: "ff4e00" -base09: "ff7000" -base0A: "7cb518" -base0B: "ffbf00" -base0C: "0075c4" -base0D: "d72638" -base0E: "76597b" -base0F: "dbc077" diff --git a/themes/manegarm/polarity.txt b/themes/manegarm/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/manegarm/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/material-vivid/backgroundsha256.txt b/themes/material-vivid/backgroundsha256.txt deleted file mode 100644 index bfff7a6..0000000 --- a/themes/material-vivid/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-LBgsEyiFJUv1FT26dq2ACIFtQZXTIeKtEk92cLoNv4g= diff --git a/themes/material-vivid/backgroundurl.txt b/themes/material-vivid/backgroundurl.txt deleted file mode 100644 index 1d2ce7f..0000000 --- a/themes/material-vivid/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/e7/wallhaven-e7z71l.jpg diff --git a/themes/material-vivid/default.nix b/themes/material-vivid/default.nix new file mode 100644 index 0000000..a5f762d --- /dev/null +++ b/themes/material-vivid/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Material Vivid"; + slug = "material-vivid"; + author = "joshyrobot (https://github.com/joshyrobot)"; + description = "A more vivid base16 material theme"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/e7/wallhaven-e7z71l.jpg"; + backgroundSha256 = "sha256-LBgsEyiFJUv1FT26dq2ACIFtQZXTIeKtEk92cLoNv4g="; + base00 = "202124"; + base01 = "27292c"; + base02 = "323639"; + base03 = "44464d"; + base04 = "676c71"; + base05 = "80868b"; + base06 = "9e9e9e"; + base07 = "ffffff"; + base08 = "f44336"; + base09 = "ff9800"; + base0A = "ffeb3b"; + base0B = "00e676"; + base0C = "00bcd4"; + base0D = "2196f3"; + base0E = "673ab7"; + base0F = "8d6e63"; +} diff --git a/themes/material-vivid/material-vivid.yaml b/themes/material-vivid/material-vivid.yaml deleted file mode 100644 index ed68566..0000000 --- a/themes/material-vivid/material-vivid.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Material Vivid" -author: "joshyrobot" -base00: "202124" -base01: "27292c" -base02: "323639" -base03: "44464d" -base04: "676c71" -base05: "80868b" -base06: "9e9e9e" -base07: "ffffff" -base08: "f44336" -base09: "ff9800" -base0A: "ffeb3b" -base0B: "00e676" -base0C: "00bcd4" -base0D: "2196f3" -base0E: "673ab7" -base0F: "8d6e63" diff --git a/themes/material-vivid/polarity.txt b/themes/material-vivid/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/material-vivid/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/miramare/backgroundsha256.txt b/themes/miramare/backgroundsha256.txt deleted file mode 100644 index 5faeedf..0000000 --- a/themes/miramare/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-3Yo3qdzMRQGh/C3Qo5gpS2V1D4u1MptmqsXb+QO9EsE= diff --git a/themes/miramare/backgroundurl.txt b/themes/miramare/backgroundurl.txt deleted file mode 100644 index b54409e..0000000 --- a/themes/miramare/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/v9/wallhaven-v9qy9l.jpg diff --git a/themes/miramare/default.nix b/themes/miramare/default.nix new file mode 100644 index 0000000..8205e8d --- /dev/null +++ b/themes/miramare/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Miramare"; + slug = "miramare"; + author = "franbach (https://github.com/franbach/miramare)"; + description = "Comfortable & pleasant color scheme (originally for Vim)"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/v9/wallhaven-v9qy9l.jpg"; + backgroundSha256 = "sha256-3Yo3qdzMRQGh/C3Qo5gpS2V1D4u1MptmqsXb+QO9EsE="; + base00 = "0d1001"; + base01 = "241c0a"; + base02 = "3c3836"; + base03 = "5b5b5b"; + base04 = "7c6f64"; + base05 = "928374"; + base06 = "d8caac"; + base07 = "e6d6ac"; + base08 = "e68183"; + base09 = "e39b7b"; + base0A = "d9bb80"; + base0B = "87af87"; + base0C = "0075c4"; + base0D = "89beba"; + base0E = "87af87"; + base0F = "87c095"; +} diff --git a/themes/miramare/miramare.yaml b/themes/miramare/miramare.yaml deleted file mode 100644 index 880085d..0000000 --- a/themes/miramare/miramare.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Miramare scheme -# Based on miramare by franbach (https://github.com/franbach/miramare) -scheme: "Miramare" -author: "librephoenix (https://gitlab.com/librephoenix)" -base00: "0d1001" # ---- -base01: "241c0a" # --- -base02: "3c3836" # -- -base03: "5b5b5b" # - -base04: "7c6f64" # + -base05: "928374" # ++ -base06: "d8caac" # +++ -base07: "e6d6ac" # ++++ -base08: "e68183" -base09: "e39b7b" -base0A: "d9bb80" -base0B: "87af87" -base0C: "0075c4" -base0D: "89beba" -base0E: "87af87" -base0F: "87c095" diff --git a/themes/miramare/polarity.txt b/themes/miramare/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/miramare/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/monokai/backgroundsha256.txt b/themes/monokai/backgroundsha256.txt deleted file mode 100644 index 6411fb2..0000000 --- a/themes/monokai/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-zQXOIdWGxvwh6KFeiWwfRFNqIHtWzCsVHK8ondcYi2w= diff --git a/themes/monokai/backgroundurl.txt b/themes/monokai/backgroundurl.txt deleted file mode 100644 index e746a49..0000000 --- a/themes/monokai/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/xl/wallhaven-xl225z.png diff --git a/themes/monokai/default.nix b/themes/monokai/default.nix new file mode 100644 index 0000000..0150924 --- /dev/null +++ b/themes/monokai/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Monokai"; + slug = "monokai"; + author = "Wimer Hazenberg (https://monokai.pro/)"; + description = "Port of monokai for base16"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/xl/wallhaven-xl225z.png"; + backgroundSha256 = "sha256-zQXOIdWGxvwh6KFeiWwfRFNqIHtWzCsVHK8ondcYi2w="; + base00 = "272822"; + base01 = "383830"; + base02 = "49483e"; + base03 = "75715e"; + base04 = "a59f85"; + base05 = "f8f8f2"; + base06 = "f5f4f1"; + base07 = "f9f8f5"; + base08 = "f92672"; + base09 = "fd971f"; + base0A = "f4bf75"; + base0B = "a6e22e"; + base0C = "a1efe4"; + base0D = "66d9ef"; + base0E = "ae81ff"; + base0F = "cc6633"; +} diff --git a/themes/monokai/monokai.yaml b/themes/monokai/monokai.yaml deleted file mode 100644 index a97181c..0000000 --- a/themes/monokai/monokai.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Monokai" -author: "Wimer Hazenberg (http://www.monokai.nl)" -base00: "272822" -base01: "383830" -base02: "49483e" -base03: "75715e" -base04: "a59f85" -base05: "f8f8f2" -base06: "f5f4f1" -base07: "f9f8f5" -base08: "f92672" -base09: "fd971f" -base0A: "f4bf75" -base0B: "a6e22e" -base0C: "a1efe4" -base0D: "66d9ef" -base0E: "ae81ff" -base0F: "cc6633" \ No newline at end of file diff --git a/themes/monokai/polarity.txt b/themes/monokai/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/monokai/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/nord/backgroundsha256.txt b/themes/nord/backgroundsha256.txt deleted file mode 100644 index d1751c7..0000000 --- a/themes/nord/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-+zlCkbmA6GwJStrL1+BP08GezbhDB07TTYBgu86xWOw= diff --git a/themes/nord/backgroundurl.txt b/themes/nord/backgroundurl.txt deleted file mode 100644 index d960960..0000000 --- a/themes/nord/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/976/74/465/multiple-display-mountains-snow-nature-wallpaper-c1b4ba2a902ec5b27032d3c4aefe604d.jpg diff --git a/themes/nord/default.nix b/themes/nord/default.nix new file mode 100644 index 0000000..7d875e0 --- /dev/null +++ b/themes/nord/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Nord"; + slug = "nord"; + author = "Sven Greb (https://github.com/nordtheme)"; + description = "An arctic, north-bluish color palette"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/976/74/465/multiple-display-mountains-snow-nature-wallpaper-c1b4ba2a902ec5b27032d3c4aefe604d.jpg"; + backgroundSha256 = "sha256-+zlCkbmA6GwJStrL1+BP08GezbhDB07TTYBgu86xWOw="; + base00 = "2E3440"; + base01 = "3B4252"; + base02 = "434C5E"; + base03 = "4C566A"; + base04 = "D8DEE9"; + base05 = "E5E9F0"; + base06 = "ECEFF4"; + base07 = "8FBCBB"; + base08 = "BF616A"; + base09 = "D08770"; + base0A = "EBCB8B"; + base0B = "A3BE8C"; + base0C = "88C0D0"; + base0D = "81A1C1"; + base0E = "B48EAD"; + base0F = "5E81AC"; +} diff --git a/themes/nord/nord.yaml b/themes/nord/nord.yaml deleted file mode 100644 index 1371883..0000000 --- a/themes/nord/nord.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Nord" -author: "arcticicestudio" -base00: "2E3440" -base01: "3B4252" -base02: "434C5E" -base03: "4C566A" -base04: "D8DEE9" -base05: "E5E9F0" -base06: "ECEFF4" -base07: "8FBCBB" -base08: "BF616A" -base09: "D08770" -base0A: "EBCB8B" -base0B: "A3BE8C" -base0C: "88C0D0" -base0D: "81A1C1" -base0E: "B48EAD" -base0F: "5E81AC" diff --git a/themes/nord/polarity.txt b/themes/nord/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/nord/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/oceanic-next/backgroundsha256.txt b/themes/oceanic-next/backgroundsha256.txt deleted file mode 100644 index 4267eb3..0000000 --- a/themes/oceanic-next/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-F67ItsyBFzcU3KNvqwL8DEeXHZlLpmg8xRT8Fr0dolI= diff --git a/themes/oceanic-next/backgroundurl.txt b/themes/oceanic-next/backgroundurl.txt deleted file mode 100644 index 2834911..0000000 --- a/themes/oceanic-next/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/1024/162/573/nature-beach-ocean-sea-wallpaper-c8660d98d0b02c48b02cb11e3882646a.jpg diff --git a/themes/oceanic-next/default.nix b/themes/oceanic-next/default.nix new file mode 100644 index 0000000..2b3c887 --- /dev/null +++ b/themes/oceanic-next/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Oceanic Next"; + slug = "oceanic-next"; + author = "Dmytro Voronianski (https://github.com/voronianski/oceanic-next-color-scheme)"; + description = "Colorful blue color scheme (originally for Sublime Text 2/3)"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/1024/162/573/nature-beach-ocean-sea-wallpaper-c8660d98d0b02c48b02cb11e3882646a.jpg"; + backgroundSha256 = "sha256-F67ItsyBFzcU3KNvqwL8DEeXHZlLpmg8xRT8Fr0dolI="; + base00 = "1B2B34"; + base01 = "343D46"; + base02 = "4F5B66"; + base03 = "65737E"; + base04 = "A7ADBA"; + base05 = "C0C5CE"; + base06 = "CDD3DE"; + base07 = "D8DEE9"; + base08 = "EC5f67"; + base09 = "F99157"; + base0A = "FAC863"; + base0B = "99C794"; + base0C = "5FB3B3"; + base0D = "6699CC"; + base0E = "C594C5"; + base0F = "AB7967"; +} diff --git a/themes/oceanic-next/oceanic-next.yaml b/themes/oceanic-next/oceanic-next.yaml deleted file mode 100644 index 2c3230f..0000000 --- a/themes/oceanic-next/oceanic-next.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "OceanicNext" -author: "https://github.com/voronianski/oceanic-next-color-scheme" -base00: "1B2B34" -base01: "343D46" -base02: "4F5B66" -base03: "65737E" -base04: "A7ADBA" -base05: "C0C5CE" -base06: "CDD3DE" -base07: "D8DEE9" -base08: "EC5f67" -base09: "F99157" -base0A: "FAC863" -base0B: "99C794" -base0C: "5FB3B3" -base0D: "6699CC" -base0E: "C594C5" -base0F: "AB7967" diff --git a/themes/oceanic-next/polarity.txt b/themes/oceanic-next/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/oceanic-next/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/old-hope/backgroundsha256.txt b/themes/old-hope/backgroundsha256.txt deleted file mode 100644 index 0b8bd46..0000000 --- a/themes/old-hope/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-3Z8kpA+JBs3nQhe+zUZF0zoXFGbJCfePp3/RzpcuN6Q= diff --git a/themes/old-hope/backgroundurl.txt b/themes/old-hope/backgroundurl.txt deleted file mode 100644 index 67ba66e..0000000 --- a/themes/old-hope/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/218/1018/501/star-wars-star-wars-the-rise-of-skywalker-jedi-kylo-ren-lightsaber-hd-wallpaper-534b63fd3d29abf5efe66267283ba8c8.jpg diff --git a/themes/old-hope/default.nix b/themes/old-hope/default.nix new file mode 100644 index 0000000..21a4886 --- /dev/null +++ b/themes/old-hope/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Old Hope"; + slug = "old-hope"; + author = "mohkale (https://github.com/mohkale/an-old-hope-theme)"; + description = "A theme inspired by a galaxy far far away..."; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/218/1018/501/star-wars-star-wars-the-rise-of-skywalker-jedi-kylo-ren-lightsaber-hd-wallpaper-534b63fd3d29abf5efe66267283ba8c8.jpg"; + backgroundSha256 = "sha256-3Z8kpA+JBs3nQhe+zUZF0zoXFGbJCfePp3/RzpcuN6Q="; + base00 = "1c1d20"; + base01 = "202328"; + base02 = "23272e"; + base03 = "3f444a"; + base04 = "5B6268"; + base05 = "686b78"; + base06 = "9ca0a4"; + base07 = "cbccd1"; + base08 = "ea3d54"; + base09 = "ee7b29"; + base0A = "fedd38"; + base0B = "78bd65"; + base0C = "78bd65"; + base0D = "4fb3d8"; + base0E = "b978ab"; + base0F = "4fb3d8"; +} diff --git a/themes/old-hope/old-hope.yaml b/themes/old-hope/old-hope.yaml deleted file mode 100644 index 0291342..0000000 --- a/themes/old-hope/old-hope.yaml +++ /dev/null @@ -1,20 +0,0 @@ -# Old Hope scheme -# Based on An Old Hope Theme by mohkale (https://github.com/mohkale/an-old-hope-theme) -scheme: "Old Hope" -author: "librephoenix (https://gitlab.com/librephoenix)" -base00: "1c1d20" # ---- -base01: "202328" # --- -base02: "23272e" # -- -base03: "3f444a" # - -base04: "5B6268" # + -base05: "686b78" # ++ -base06: "9ca0a4" # +++ -base07: "cbccd1" # ++++ -base08: "ea3d54" -base09: "ee7b29" -base0A: "fedd38" -base0B: "78bd65" -base0C: "78bd65" -base0D: "4fb3d8" -base0E: "b978ab" -base0F: "4fb3d8" diff --git a/themes/old-hope/polarity.txt b/themes/old-hope/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/old-hope/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/outrun-dark/backgroundsha256.txt b/themes/outrun-dark/backgroundsha256.txt deleted file mode 100644 index 40174d0..0000000 --- a/themes/outrun-dark/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-wySC8BjvJKZAnbGOeyyp1xwt/EMAwsTON0os6n1/fp8= diff --git a/themes/outrun-dark/backgroundurl.txt b/themes/outrun-dark/backgroundurl.txt deleted file mode 100644 index b682eee..0000000 --- a/themes/outrun-dark/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/586/965/67/night-sky-illustration-futuristic-art-night-wallpaper-88366d08c0d00c08207cf12ef892b49a.jpg diff --git a/themes/outrun-dark/default.nix b/themes/outrun-dark/default.nix new file mode 100644 index 0000000..dd853ea --- /dev/null +++ b/themes/outrun-dark/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Outrun Dark"; + slug = "outrun-dark"; + author = "Hugo Delahousse (https://github.com/hugodelahousse/)"; + description = "Color scheme inspired by the synthwave music scene"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/586/965/67/night-sky-illustration-futuristic-art-night-wallpaper-88366d08c0d00c08207cf12ef892b49a.jpg"; + backgroundSha256 = "sha256-wySC8BjvJKZAnbGOeyyp1xwt/EMAwsTON0os6n1/fp8="; + base00 = "00002A"; + base01 = "20204A"; + base02 = "30305A"; + base03 = "50507A"; + base04 = "B0B0DA"; + base05 = "D0D0FA"; + base06 = "E0E0FF"; + base07 = "F5F5FF"; + base08 = "FF4242"; + base09 = "FC8D28"; + base0A = "F3E877"; + base0B = "59F176"; + base0C = "0EF0F0"; + base0D = "66B0FF"; + base0E = "F10596"; + base0F = "F003EF"; +} diff --git a/themes/outrun-dark/outrun-dark.yaml b/themes/outrun-dark/outrun-dark.yaml deleted file mode 100644 index b6e0c7e..0000000 --- a/themes/outrun-dark/outrun-dark.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Outrun Dark" -author: "Hugo Delahousse (http://github.com/hugodelahousse/)" -base00: "00002A" -base01: "20204A" -base02: "30305A" -base03: "50507A" -base04: "B0B0DA" -base05: "D0D0FA" -base06: "E0E0FF" -base07: "F5F5FF" -base08: "FF4242" -base09: "FC8D28" -base0A: "F3E877" -base0B: "59F176" -base0C: "0EF0F0" -base0D: "66B0FF" -base0E: "F10596" -base0F: "F003EF" diff --git a/themes/outrun-dark/polarity.txt b/themes/outrun-dark/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/outrun-dark/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/selenized-dark/backgroundsha256.txt b/themes/selenized-dark/backgroundsha256.txt deleted file mode 100644 index c041396..0000000 --- a/themes/selenized-dark/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-ugnjfKCIpyH0enWB5l52j+1pWG1FwX8X5BeRh68NRuE= diff --git a/themes/selenized-dark/backgroundurl.txt b/themes/selenized-dark/backgroundurl.txt deleted file mode 100644 index 1ca4a63..0000000 --- a/themes/selenized-dark/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/474/140/1011/stars-sea-clouds-night-wallpaper-7bede9caa0ccfc6d8a1eb0759c9972b0.jpg diff --git a/themes/selenized-dark/default.nix b/themes/selenized-dark/default.nix new file mode 100644 index 0000000..170d8a0 --- /dev/null +++ b/themes/selenized-dark/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Selenized Dark"; + slug = "selenized-dark"; + author = "Jan Warchol (https://github.com/jan-warchol/selenized) / adapted to base16 by ali (https://github.com/ali-githb)"; + description = "Solarized redesigned: fine-tuned color palette for programmers with focus on readability"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/474/140/1011/stars-sea-clouds-night-wallpaper-7bede9caa0ccfc6d8a1eb0759c9972b0.jpg"; + backgroundSha256 = "sha256-ugnjfKCIpyH0enWB5l52j+1pWG1FwX8X5BeRh68NRuE="; + base00 = "103c48"; + base01 = "184956"; + base02 = "2d5b69"; + base03 = "72898f"; + base04 = "72898f"; + base05 = "adbcbc"; + base06 = "cad8d9"; + base07 = "cad8d9"; + base08 = "fa5750"; + base09 = "ed8649"; + base0A = "dbb32d"; + base0B = "75b938"; + base0C = "41c7b9"; + base0D = "4695f7"; + base0E = "af88eb"; + base0F = "f275be"; +} diff --git a/themes/selenized-dark/polarity.txt b/themes/selenized-dark/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/selenized-dark/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/selenized-dark/selenized-dark.yaml b/themes/selenized-dark/selenized-dark.yaml deleted file mode 100644 index 173e853..0000000 --- a/themes/selenized-dark/selenized-dark.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "selenized-dark" -author: "Jan Warchol (https://github.com/jan-warchol/selenized) / adapted to base16 by ali" -base00: "103c48" -base01: "184956" -base02: "2d5b69" -base03: "72898f" -base04: "72898f" -base05: "adbcbc" -base06: "cad8d9" -base07: "cad8d9" -base08: "fa5750" -base09: "ed8649" -base0A: "dbb32d" -base0B: "75b938" -base0C: "41c7b9" -base0D: "4695f7" -base0E: "af88eb" -base0F: "f275be" diff --git a/themes/selenized-light/backgroundsha256.txt b/themes/selenized-light/backgroundsha256.txt deleted file mode 100644 index f4d87e6..0000000 --- a/themes/selenized-light/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-QFWU0b/dKHA1duzpDFZ4PfTt1ku4ZnekUnUZKX1drxQ= diff --git a/themes/selenized-light/backgroundurl.txt b/themes/selenized-light/backgroundurl.txt deleted file mode 100644 index 0f40ae4..0000000 --- a/themes/selenized-light/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/790/734/537/landscape-digital-art-coast-sky-wallpaper-2fbce811ee788644e4f742a5f338be69.jpg diff --git a/themes/selenized-light/default.nix b/themes/selenized-light/default.nix new file mode 100644 index 0000000..7f8aa2f --- /dev/null +++ b/themes/selenized-light/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Selenized Light"; + slug = "selenized-light"; + author = "Jan Warchol (https://github.com/jan-warchol/selenized) / adapted to base16 by ali (https://github.com/ali-githb)"; + description = "Solarized redesigned: fine-tuned color palette for programmers with focus on readability"; + polarity = "light"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/790/734/537/landscape-digital-art-coast-sky-wallpaper-2fbce811ee788644e4f742a5f338be69.jpg"; + backgroundSha256 = "sha256-QFWU0b/dKHA1duzpDFZ4PfTt1ku4ZnekUnUZKX1drxQ="; + base00 = "fbf3db"; + base01 = "ece3cc"; + base02 = "d5cdb6"; + base03 = "909995"; + base04 = "909995"; + base05 = "53676d"; + base06 = "3a4d53"; + base07 = "3a4d53"; + base08 = "cc1729"; + base09 = "bc5819"; + base0A = "a78300"; + base0B = "428b00"; + base0C = "00978a"; + base0D = "006dce"; + base0E = "825dc0"; + base0F = "c44392"; +} diff --git a/themes/selenized-light/polarity.txt b/themes/selenized-light/polarity.txt deleted file mode 100644 index 162faa6..0000000 --- a/themes/selenized-light/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -light diff --git a/themes/selenized-light/selenized-light.yaml b/themes/selenized-light/selenized-light.yaml deleted file mode 100644 index 0836da6..0000000 --- a/themes/selenized-light/selenized-light.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "selenized-light" -author: "Jan Warchol (https://github.com/jan-warchol/selenized) / adapted to base16 by ali" -base00: "fbf3db" -base01: "ece3cc" -base02: "d5cdb6" -base03: "909995" -base04: "909995" -base05: "53676d" -base06: "3a4d53" -base07: "3a4d53" -base08: "cc1729" -base09: "bc5819" -base0A: "a78300" -base0B: "428b00" -base0C: "00978a" -base0D: "006dce" -base0E: "825dc0" -base0F: "c44392" diff --git a/themes/solarized-dark/backgroundsha256.txt b/themes/solarized-dark/backgroundsha256.txt deleted file mode 100644 index c041396..0000000 --- a/themes/solarized-dark/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-ugnjfKCIpyH0enWB5l52j+1pWG1FwX8X5BeRh68NRuE= diff --git a/themes/solarized-dark/backgroundurl.txt b/themes/solarized-dark/backgroundurl.txt deleted file mode 100644 index 1ca4a63..0000000 --- a/themes/solarized-dark/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/474/140/1011/stars-sea-clouds-night-wallpaper-7bede9caa0ccfc6d8a1eb0759c9972b0.jpg diff --git a/themes/solarized-dark/default.nix b/themes/solarized-dark/default.nix new file mode 100644 index 0000000..b8770b6 --- /dev/null +++ b/themes/solarized-dark/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Solarized Dark"; + slug = "solarized-dark"; + author = "Ethan Schoonover (https://ethanschoonover.com/), modified by aramisgithub)"; + description = "Precision colors for machines and people"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/474/140/1011/stars-sea-clouds-night-wallpaper-7bede9caa0ccfc6d8a1eb0759c9972b0.jpg"; + backgroundSha256 = "sha256-ugnjfKCIpyH0enWB5l52j+1pWG1FwX8X5BeRh68NRuE="; + base00 = "002b36"; + base01 = "073642"; + base02 = "586e75"; + base03 = "657b83"; + base04 = "839496"; + base05 = "93a1a1"; + base06 = "eee8d5"; + base07 = "fdf6e3"; + base08 = "dc322f"; + base09 = "cb4b16"; + base0A = "b58900"; + base0B = "859900"; + base0C = "2aa198"; + base0D = "268bd2"; + base0E = "6c71c4"; + base0F = "d33682"; +} diff --git a/themes/solarized-dark/polarity.txt b/themes/solarized-dark/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/solarized-dark/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/solarized-dark/solarized-dark.yaml b/themes/solarized-dark/solarized-dark.yaml deleted file mode 100644 index 61f48a5..0000000 --- a/themes/solarized-dark/solarized-dark.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Solarized Dark" -author: "Ethan Schoonover (modified by aramisgithub)" -base00: "002b36" -base01: "073642" -base02: "586e75" -base03: "657b83" -base04: "839496" -base05: "93a1a1" -base06: "eee8d5" -base07: "fdf6e3" -base08: "dc322f" -base09: "cb4b16" -base0A: "b58900" -base0B: "859900" -base0C: "2aa198" -base0D: "268bd2" -base0E: "6c71c4" -base0F: "d33682" diff --git a/themes/solarized-light/backgroundsha256.txt b/themes/solarized-light/backgroundsha256.txt deleted file mode 100644 index f4d87e6..0000000 --- a/themes/solarized-light/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-QFWU0b/dKHA1duzpDFZ4PfTt1ku4ZnekUnUZKX1drxQ= diff --git a/themes/solarized-light/backgroundurl.txt b/themes/solarized-light/backgroundurl.txt deleted file mode 100644 index 0f40ae4..0000000 --- a/themes/solarized-light/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/790/734/537/landscape-digital-art-coast-sky-wallpaper-2fbce811ee788644e4f742a5f338be69.jpg diff --git a/themes/solarized-light/default.nix b/themes/solarized-light/default.nix new file mode 100644 index 0000000..f2d2989 --- /dev/null +++ b/themes/solarized-light/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Solarized Light"; + slug = "solarized-light"; + author = "Ethan Schoonover (https://ethanschoonover.com/), modified by aramisgithub)"; + description = "Precision colors for machines and people"; + polarity = "light"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/790/734/537/landscape-digital-art-coast-sky-wallpaper-2fbce811ee788644e4f742a5f338be69.jpg"; + backgroundSha256 = "sha256-QFWU0b/dKHA1duzpDFZ4PfTt1ku4ZnekUnUZKX1drxQ="; + base00 = "fdf6e3"; + base01 = "eee8d5"; + base02 = "93a1a1"; + base03 = "839496"; + base04 = "657b83"; + base05 = "586e75"; + base06 = "073642"; + base07 = "002b36"; + base08 = "dc322f"; + base09 = "cb4b16"; + base0A = "b58900"; + base0B = "859900"; + base0C = "2aa198"; + base0D = "268bd2"; + base0E = "6c71c4"; + base0F = "d33682"; +} diff --git a/themes/solarized-light/polarity.txt b/themes/solarized-light/polarity.txt deleted file mode 100644 index 162faa6..0000000 --- a/themes/solarized-light/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -light diff --git a/themes/solarized-light/solarized-light.yaml b/themes/solarized-light/solarized-light.yaml deleted file mode 100644 index 31da6d3..0000000 --- a/themes/solarized-light/solarized-light.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Solarized Light" -author: "Ethan Schoonover (modified by aramisgithub)" -base00: "fdf6e3" -base01: "eee8d5" -base02: "93a1a1" -base03: "839496" -base04: "657b83" -base05: "586e75" -base06: "073642" -base07: "002b36" -base08: "dc322f" -base09: "cb4b16" -base0A: "b58900" -base0B: "859900" -base0C: "2aa198" -base0D: "268bd2" -base0E: "6c71c4" -base0F: "d33682" diff --git a/themes/spaceduck/backgroundsha256.txt b/themes/spaceduck/backgroundsha256.txt deleted file mode 100644 index db1d141..0000000 --- a/themes/spaceduck/backgroundsha256.txt +++ /dev/null @@ -1,2 +0,0 @@ -sha256-+xl4H3UiVmMRNvMhIlaLdVTYYqnSyCTSX2UOTGsDQ8c= - diff --git a/themes/spaceduck/backgroundurl.txt b/themes/spaceduck/backgroundurl.txt deleted file mode 100644 index ca3b097..0000000 --- a/themes/spaceduck/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/6d/wallhaven-6d5k6x.jpg diff --git a/themes/spaceduck/default.nix b/themes/spaceduck/default.nix new file mode 100644 index 0000000..36d25b2 --- /dev/null +++ b/themes/spaceduck/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Spaceduck"; + slug = "spaceduck"; + author = "Guillermo Rodriguez (https://github.com/pineapplegiant), packaged by Gabriel Fontes (https://github.com/Misterio77)"; + description = "An intergalactic space theme for Vim, Terminal, and more!"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/6d/wallhaven-6d5k6x.jpg"; + backgroundSha256 = "sha256-+xl4H3UiVmMRNvMhIlaLdVTYYqnSyCTSX2UOTGsDQ8c="; + base00 = "16172d"; + base01 = "1b1c36"; + base02 = "30365F"; + base03 = "686f9a"; + base04 = "818596"; + base05 = "ecf0c1"; + base06 = "c1c3cc"; + base07 = "ffffff"; + base08 = "e33400"; + base09 = "e39400"; + base0A = "f2ce00"; + base0B = "5ccc96"; + base0C = "00a3cc"; + base0D = "7a5ccc"; + base0E = "b3a1e6"; + base0F = "ce6f8f"; +} diff --git a/themes/spaceduck/polarity.txt b/themes/spaceduck/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/spaceduck/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/spaceduck/spaceduck.yaml b/themes/spaceduck/spaceduck.yaml deleted file mode 100644 index 79cf12d..0000000 --- a/themes/spaceduck/spaceduck.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Spaceduck" -author: "Guillermo Rodriguez (https://github.com/pineapplegiant), packaged by Gabriel Fontes (https://github.com/Misterio77)" -base00: "16172d" -base01: "1b1c36" -base02: "30365F" -base03: "686f9a" -base04: "818596" -base05: "ecf0c1" -base06: "c1c3cc" -base07: "ffffff" -base08: "e33400" -base09: "e39400" -base0A: "f2ce00" -base0B: "5ccc96" -base0C: "00a3cc" -base0D: "7a5ccc" -base0E: "b3a1e6" -base0F: "ce6f8f" diff --git a/themes/stella/backgroundsha256.txt b/themes/stella/backgroundsha256.txt deleted file mode 100644 index e02eff5..0000000 --- a/themes/stella/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-ZdzYsYawW2pINFG8bHLBd62iyD4p/9Iw09H3pB0SUyw= diff --git a/themes/stella/backgroundurl.txt b/themes/stella/backgroundurl.txt deleted file mode 100644 index 8524203..0000000 --- a/themes/stella/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/662/963/756/artwork-night-stars-sailing-ship-wallpaper-f8e6cdf800802ca8b0acb18ea86274ca.jpg diff --git a/themes/stella/default.nix b/themes/stella/default.nix new file mode 100644 index 0000000..524bd2c --- /dev/null +++ b/themes/stella/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Stella"; + slug = "stella"; + author = "Shrimpram (https://github.com/Shrimpram)"; + description = "A regal purple color scheme based on a dog named Stella"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/662/963/756/artwork-night-stars-sailing-ship-wallpaper-f8e6cdf800802ca8b0acb18ea86274ca.jpg"; + backgroundSha256 = "sha256-ZdzYsYawW2pINFG8bHLBd62iyD4p/9Iw09H3pB0SUyw="; + base00 = "2B213C"; + base01 = "362B48"; + base02 = "4D4160"; + base03 = "655978"; + base04 = "7F7192"; + base05 = "998BAD"; + base06 = "B4A5C8"; + base07 = "EBDCFF"; + base08 = "C79987"; + base09 = "8865C6"; + base0A = "C7C691"; + base0B = "ACC79B"; + base0C = "9BC7BF"; + base0D = "A5AAD4"; + base0E = "C594FF"; + base0F = "C7AB87"; +} diff --git a/themes/stella/polarity.txt b/themes/stella/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/stella/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/stella/stella.yaml b/themes/stella/stella.yaml deleted file mode 100644 index 8e42d31..0000000 --- a/themes/stella/stella.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Stella" -author: "Shrimpram" -base00: "2B213C" -base01: "362B48" -base02: "4D4160" -base03: "655978" -base04: "7F7192" -base05: "998BAD" -base06: "B4A5C8" -base07: "EBDCFF" -base08: "C79987" -base09: "8865C6" -base0A: "C7C691" -base0B: "ACC79B" -base0C: "9BC7BF" -base0D: "A5AAD4" -base0E: "C594FF" -base0F: "C7AB87" diff --git a/themes/summerfruit-dark/backgroundsha256.txt b/themes/summerfruit-dark/backgroundsha256.txt deleted file mode 100644 index effac21..0000000 --- a/themes/summerfruit-dark/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-/3k+6paAH2Z36f5g4eeK62+dXF+8szDj4EO8vXYRg8o= diff --git a/themes/summerfruit-dark/backgroundurl.txt b/themes/summerfruit-dark/backgroundurl.txt deleted file mode 100644 index cb45ad3..0000000 --- a/themes/summerfruit-dark/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/rr/wallhaven-rrow61.png diff --git a/themes/summerfruit-dark/default.nix b/themes/summerfruit-dark/default.nix new file mode 100644 index 0000000..489c91b --- /dev/null +++ b/themes/summerfruit-dark/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Summerfruit Dark"; + slug = "summerfruit-dark"; + author = "Christopher Corley (https://christop.club/)"; + description = "Fruity vibrant color scheme with neon colors"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/rr/wallhaven-rrow61.png"; + backgroundSha256 = "sha256-/3k+6paAH2Z36f5g4eeK62+dXF+8szDj4EO8vXYRg8o="; + base00 = "151515"; + base01 = "202020"; + base02 = "303030"; + base03 = "505050"; + base04 = "B0B0B0"; + base05 = "D0D0D0"; + base06 = "E0E0E0"; + base07 = "FFFFFF"; + base08 = "FF0086"; + base09 = "FD8900"; + base0A = "ABA800"; + base0B = "00C918"; + base0C = "1FAAAA"; + base0D = "3777E6"; + base0E = "AD00A1"; + base0F = "CC6633"; +} diff --git a/themes/summerfruit-dark/polarity.txt b/themes/summerfruit-dark/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/summerfruit-dark/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/summerfruit-dark/summerfruit-dark.yaml b/themes/summerfruit-dark/summerfruit-dark.yaml deleted file mode 100644 index 99d4894..0000000 --- a/themes/summerfruit-dark/summerfruit-dark.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Summerfruit Dark" -author: "Christopher Corley (http://christop.club/)" -base00: "151515" -base01: "202020" -base02: "303030" -base03: "505050" -base04: "B0B0B0" -base05: "D0D0D0" -base06: "E0E0E0" -base07: "FFFFFF" -base08: "FF0086" -base09: "FD8900" -base0A: "ABA800" -base0B: "00C918" -base0C: "1FAAAA" -base0D: "3777E6" -base0E: "AD00A1" -base0F: "CC6633" diff --git a/themes/tomorrow-night/backgroundsha256.txt b/themes/tomorrow-night/backgroundsha256.txt deleted file mode 100644 index 7d5aa52..0000000 --- a/themes/tomorrow-night/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-G8wLZitUlaquirgCtHCFu6dQHJophD8/c7INNMhh49M= diff --git a/themes/tomorrow-night/backgroundurl.txt b/themes/tomorrow-night/backgroundurl.txt deleted file mode 100644 index b98dfb5..0000000 --- a/themes/tomorrow-night/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/28/wallhaven-28867y.png diff --git a/themes/tomorrow-night/default.nix b/themes/tomorrow-night/default.nix new file mode 100644 index 0000000..3061523 --- /dev/null +++ b/themes/tomorrow-night/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Tomorrow Night"; + slug = "tomorrow-night"; + author = "Chris Kempson (https://chriskempson.com)"; + description = "A colourful theme with muted colours and sensible syntax highlighting"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/28/wallhaven-28867y.png"; + backgroundSha256 = "sha256-G8wLZitUlaquirgCtHCFu6dQHJophD8/c7INNMhh49M="; + base00 = "1d1f21"; + base01 = "282a2e"; + base02 = "373b41"; + base03 = "969896"; + base04 = "b4b7b4"; + base05 = "c5c8c6"; + base06 = "e0e0e0"; + base07 = "ffffff"; + base08 = "cc6666"; + base09 = "de935f"; + base0A = "f0c674"; + base0B = "b5bd68"; + base0C = "8abeb7"; + base0D = "81a2be"; + base0E = "b294bb"; + base0F = "a3685a"; +} diff --git a/themes/tomorrow-night/polarity.txt b/themes/tomorrow-night/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/tomorrow-night/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/tomorrow-night/tomorrow-night.yaml b/themes/tomorrow-night/tomorrow-night.yaml deleted file mode 100644 index 7577258..0000000 --- a/themes/tomorrow-night/tomorrow-night.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Tomorrow Night" -author: "Chris Kempson (http://chriskempson.com)" -base00: "1d1f21" -base01: "282a2e" -base02: "373b41" -base03: "969896" -base04: "b4b7b4" -base05: "c5c8c6" -base06: "e0e0e0" -base07: "ffffff" -base08: "cc6666" -base09: "de935f" -base0A: "f0c674" -base0B: "b5bd68" -base0C: "8abeb7" -base0D: "81a2be" -base0E: "b294bb" -base0F: "a3685a" \ No newline at end of file diff --git a/themes/twilight/backgroundsha256.txt b/themes/twilight/backgroundsha256.txt deleted file mode 100644 index b59ad54..0000000 --- a/themes/twilight/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-5s6cyM2rv/uFW1upqruYiqcofEakdHylAEy65OfArZ4= diff --git a/themes/twilight/backgroundurl.txt b/themes/twilight/backgroundurl.txt deleted file mode 100644 index 7e00252..0000000 --- a/themes/twilight/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/q6/wallhaven-q6m557.png diff --git a/themes/twilight/default.nix b/themes/twilight/default.nix new file mode 100644 index 0000000..1c34afb --- /dev/null +++ b/themes/twilight/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Twilight"; + slug = "twilight"; + author = "David Hart (https://github.com/hartbit)"; + description = "A dark desaturated color scheme (ported from TextMate)"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/q6/wallhaven-q6m557.png"; + backgroundSha256 = "sha256-5s6cyM2rv/uFW1upqruYiqcofEakdHylAEy65OfArZ4="; + base00 = "1e1e1e"; + base01 = "323537"; + base02 = "464b50"; + base03 = "5f5a60"; + base04 = "838184"; + base05 = "a7a7a7"; + base06 = "c3c3c3"; + base07 = "ffffff"; + base08 = "cf6a4c"; + base09 = "cda869"; + base0A = "f9ee98"; + base0B = "8f9d6a"; + base0C = "afc4db"; + base0D = "7587a6"; + base0E = "9b859d"; + base0F = "9b703f"; +} diff --git a/themes/twilight/polarity.txt b/themes/twilight/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/twilight/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/twilight/twilight.yaml b/themes/twilight/twilight.yaml deleted file mode 100644 index 2757b89..0000000 --- a/themes/twilight/twilight.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Twilight" -author: "David Hart (https://github.com/hartbit)" -base00: "1e1e1e" -base01: "323537" -base02: "464b50" -base03: "5f5a60" -base04: "838184" -base05: "a7a7a7" -base06: "c3c3c3" -base07: "ffffff" -base08: "cf6a4c" -base09: "cda869" -base0A: "f9ee98" -base0B: "8f9d6a" -base0C: "afc4db" -base0D: "7587a6" -base0E: "9b859d" -base0F: "9b703f" \ No newline at end of file diff --git a/themes/ubuntu/backgroundsha256.txt b/themes/ubuntu/backgroundsha256.txt deleted file mode 100644 index 8b4bf85..0000000 --- a/themes/ubuntu/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-5TPwZAQekK1Aq2YdomcJ0irGmIXVPUpgxRwuEetthYw= diff --git a/themes/ubuntu/backgroundurl.txt b/themes/ubuntu/backgroundurl.txt deleted file mode 100644 index 07e66fb..0000000 --- a/themes/ubuntu/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://images.hdqwalls.com/download/sea-of-dreamscape-r4-1920x1080.jpg diff --git a/themes/ubuntu/default.nix b/themes/ubuntu/default.nix new file mode 100644 index 0000000..190f701 --- /dev/null +++ b/themes/ubuntu/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Ubuntu"; + slug = "ubuntu"; + author = "Based on https://design.ubuntu.com/brand/colour-palette, adapted to base16 by librephoenix (https://github.com/librephoenix)";; + description = "Orange and purple color scheme based on the Ubuntu brand colors"; + polarity = "dark"; + backgroundUrl = "https://images.hdqwalls.com/download/sea-of-dreamscape-r4-1920x1080.jpg"; + backgroundSha256 = "sha256-5TPwZAQekK1Aq2YdomcJ0irGmIXVPUpgxRwuEetthYw="; + base00 = "2C001E"; + base01 = "411934"; + base02 = "56334B"; + base03 = "6B4C61"; + base04 = "806678"; + base05 = "957F8E"; + base06 = "DFE2E5"; + base07 = "A08C99"; + base08 = "E95420"; + base09 = "F7C3B1"; + base0A = "AEC795"; + base0B = "95C7A4"; + base0C = "95AEA1"; + base0D = "772953"; + base0E = "7E4770"; + base0F = "C79595"; +} diff --git a/themes/ubuntu/polarity.txt b/themes/ubuntu/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/ubuntu/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/ubuntu/ubuntu.yaml b/themes/ubuntu/ubuntu.yaml deleted file mode 100644 index 217109d..0000000 --- a/themes/ubuntu/ubuntu.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Ubuntu scheme -# (Made by emmet https://gitlab.com/librephoenix) -# Based on https://design.ubuntu.com/brand/colour-palette -scheme: "Ubuntu" -author: "librephoenix (https://gitlab.com/librephoenix)" -base00: "2C001E" # ---- -base01: "411934" # --- -base02: "56334B" # -- -base03: "6B4C61" # - -base04: "806678" # + -base05: "957F8E" # ++ -base06: "DFE2E5" # +++ -base07: "A08C99" # ++++ -base08: "E95420" -base09: "F7C3B1" -base0A: "AEC795" -base0B: "95C7A4" -base0C: "95AEA1" -base0D: "772953" -base0E: "7E4770" -base0F: "C79595" diff --git a/themes/uwunicorn/backgroundsha256.txt b/themes/uwunicorn/backgroundsha256.txt deleted file mode 100644 index 6796b9f..0000000 --- a/themes/uwunicorn/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-vNBappcgqa8O2aj+Zz4aBrSsD97v0dDXQDeyC4o0gpc= diff --git a/themes/uwunicorn/backgroundurl.txt b/themes/uwunicorn/backgroundurl.txt deleted file mode 100644 index 38cb635..0000000 --- a/themes/uwunicorn/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://r4.wallpaperflare.com/wallpaper/30/586/460/artwork-fantasy-art-digital-art-forest-wallpaper-3cdadbae5dd4b0ca4dd008fd72d13bf3.jpg diff --git a/themes/uwunicorn/default.nix b/themes/uwunicorn/default.nix new file mode 100644 index 0000000..6cec64e --- /dev/null +++ b/themes/uwunicorn/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "UwUnicorn"; + slug = "uwunicorn"; + author = "Fernando Marques (https://github.com/RakkiUwU) and Gabriel Fontes (https://github.com/Misterio77), modified by librephoenix (https://librephoenix.com)"; + description = "Purple unicorn-inspired theme"; + polarity = "dark"; + backgroundUrl = "https://r4.wallpaperflare.com/wallpaper/30/586/460/artwork-fantasy-art-digital-art-forest-wallpaper-3cdadbae5dd4b0ca4dd008fd72d13bf3.jpg"; + backgroundSha256 = "sha256-vNBappcgqa8O2aj+Zz4aBrSsD97v0dDXQDeyC4o0gpc="; + base00 = "241b26"; + base01 = "2f2a3f"; + base02 = "46354a"; + base03 = "6c3c62"; + base04 = "7e5f83"; + base05 = "eed5d9"; + base06 = "d9c2c6"; + base07 = "e4ccd0"; + base08 = "de5b44"; + base09 = "e39755"; + base0A = "a84a73"; + base0B = "c965bf"; + base0C = "9c5fce"; + base0D = "6a9eb5"; + base0E = "6ac38f"; + base0F = "a3ab5a"; +} diff --git a/themes/uwunicorn/polarity.txt b/themes/uwunicorn/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/uwunicorn/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/uwunicorn/uwunicorn.yaml b/themes/uwunicorn/uwunicorn.yaml deleted file mode 100644 index 725c4be..0000000 --- a/themes/uwunicorn/uwunicorn.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "UwUnicorn" -author: "Fernando Marques (https://github.com/RakkiUwU) and Gabriel Fontes (https://github.com/Misterio77), modified by me (https://librephoenix.com)" -base00: "241b26" -base01: "2f2a3f" -base02: "46354a" -base03: "6c3c62" -base04: "7e5f83" -base05: "eed5d9" -base06: "d9c2c6" -base07: "e4ccd0" -base08: "de5b44" -base09: "e39755" -base0A: "a84a73" -base0B: "c965bf" -base0C: "9c5fce" -base0D: "6a9eb5" -base0E: "6ac38f" -base0F: "a3ab5a" diff --git a/themes/windows-95/backgroundsha256.txt b/themes/windows-95/backgroundsha256.txt deleted file mode 100644 index 5a30da5..0000000 --- a/themes/windows-95/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-xgMi6fH3yMGk0txu0p5x01OY9qC4x597vEgSy/G9TBY= diff --git a/themes/windows-95/backgroundurl.txt b/themes/windows-95/backgroundurl.txt deleted file mode 100644 index 6649751..0000000 --- a/themes/windows-95/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/01/wallhaven-01e6xw.jpg diff --git a/themes/windows-95/default.nix b/themes/windows-95/default.nix new file mode 100644 index 0000000..96239b3 --- /dev/null +++ b/themes/windows-95/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Windows 95"; + slug = "windows-95"; + author = "Fergus Collins (https://github.com/C-Fergus)"; + description = "Color scheme reminiscent of a certain operating system from 1995..."; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/01/wallhaven-01e6xw.jpg"; + backgroundSha256 = "sha256-xgMi6fH3yMGk0txu0p5x01OY9qC4x597vEgSy/G9TBY="; + base00 = "000000"; + base01 = "1C1C1C"; + base02 = "383838"; + base03 = "545454"; + base04 = "7e7e7e"; + base05 = "a8a8a8"; + base06 = "d2d2d2"; + base07 = "fcfcfc"; + base08 = "fc5454"; + base09 = "a85400"; + base0A = "fcfc54"; + base0B = "54fc54"; + base0C = "54fcfc"; + base0D = "5454fc"; + base0E = "fc54fc"; + base0F = "00a800"; +} diff --git a/themes/windows-95/polarity.txt b/themes/windows-95/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/windows-95/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/windows-95/windows-95.yaml b/themes/windows-95/windows-95.yaml deleted file mode 100644 index 5559078..0000000 --- a/themes/windows-95/windows-95.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Windows 95" -author: "Fergus Collins (https://github.com/C-Fergus)" -base00: "000000" # black -base01: "1C1C1C" # darkish black -base02: "383838" # brightish black -base03: "545454" # bright black -base04: "7e7e7e" # darker white -base05: "a8a8a8" # white -base06: "d2d2d2" # middle white -base07: "fcfcfc" # bright white -base08: "fc5454" # bright red -base09: "a85400" # yellow -base0A: "fcfc54" # bright yellow -base0B: "54fc54" # bright green -base0C: "54fcfc" # bright cyan -base0D: "5454fc" # bright blue -base0E: "fc54fc" # bright magenta -base0F: "00a800" # green \ No newline at end of file diff --git a/themes/woodland/backgroundsha256.txt b/themes/woodland/backgroundsha256.txt deleted file mode 100644 index df3743f..0000000 --- a/themes/woodland/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-lbmtPDD0+PP7UXy6MO0UdFtQIwsnvNUczolqTZW7k88= diff --git a/themes/woodland/backgroundurl.txt b/themes/woodland/backgroundurl.txt deleted file mode 100644 index 0574e45..0000000 --- a/themes/woodland/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://images.hdqwalls.com/wallpapers/beyond-the-railroad-crossing-5k-5b.jpg diff --git a/themes/woodland/default.nix b/themes/woodland/default.nix new file mode 100644 index 0000000..d59b2e7 --- /dev/null +++ b/themes/woodland/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "Woodland"; + slug = "woodland"; + author = "Jay Cornwall (https://jcornwall.com)"; + description = "Forest inspired theme"; + polarity = "dark"; + backgroundUrl = "https://images.hdqwalls.com/wallpapers/beyond-the-railroad-crossing-5k-5b.jpg"; + backgroundSha256 = "sha256-lbmtPDD0+PP7UXy6MO0UdFtQIwsnvNUczolqTZW7k88="; + base00 = "231e18"; + base01 = "302b25"; + base02 = "48413a"; + base03 = "9d8b70"; + base04 = "b4a490"; + base05 = "cabcb1"; + base06 = "d7c8bc"; + base07 = "e4d4c8"; + base08 = "d35c5c"; + base09 = "ca7f32"; + base0A = "e0ac16"; + base0B = "b7ba53"; + base0C = "6eb958"; + base0D = "88a4d3"; + base0E = "bb90e2"; + base0F = "b49368"; +} diff --git a/themes/woodland/polarity.txt b/themes/woodland/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/woodland/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/woodland/woodland.yaml b/themes/woodland/woodland.yaml deleted file mode 100644 index 6d9f1a9..0000000 --- a/themes/woodland/woodland.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "Woodland" -author: "Jay Cornwall (https://jcornwall.com)" -base00: "231e18" -base01: "302b25" -base02: "48413a" -base03: "9d8b70" -base04: "b4a490" -base05: "cabcb1" -base06: "d7c8bc" -base07: "e4d4c8" -base08: "d35c5c" -base09: "ca7f32" -base0A: "e0ac16" -base0B: "b7ba53" -base0C: "6eb958" -base0D: "88a4d3" -base0E: "bb90e2" -base0F: "b49368" diff --git a/themes/xcode-dusk/backgroundsha256.txt b/themes/xcode-dusk/backgroundsha256.txt deleted file mode 100644 index 6f0f773..0000000 --- a/themes/xcode-dusk/backgroundsha256.txt +++ /dev/null @@ -1 +0,0 @@ -sha256-z/attvjcG1nReBjCVBY/JS2Eu2U44+Pd2OtIF1dPb1M= diff --git a/themes/xcode-dusk/backgroundurl.txt b/themes/xcode-dusk/backgroundurl.txt deleted file mode 100644 index 87adf1b..0000000 --- a/themes/xcode-dusk/backgroundurl.txt +++ /dev/null @@ -1 +0,0 @@ -https://w.wallhaven.cc/full/yx/wallhaven-yxe85x.jpg diff --git a/themes/xcode-dusk/default.nix b/themes/xcode-dusk/default.nix new file mode 100644 index 0000000..496239f --- /dev/null +++ b/themes/xcode-dusk/default.nix @@ -0,0 +1,25 @@ +{ + scheme = "XCode Dusk"; + slug = "xcode-dusk"; + author = "Elsa Gonsiorowski (https://github.com/gonsie)"; + description = "Port of the Dusk theme from XCode"; + polarity = "dark"; + backgroundUrl = "https://w.wallhaven.cc/full/yx/wallhaven-yxe85x.jpg"; + backgroundSha256 = "sha256-z/attvjcG1nReBjCVBY/JS2Eu2U44+Pd2OtIF1dPb1M="; + base00 = "282B35"; + base01 = "3D4048"; + base02 = "53555D"; + base03 = "686A71"; + base04 = "7E8086"; + base05 = "939599"; + base06 = "A9AAAE"; + base07 = "BEBFC2"; + base08 = "B21889"; + base09 = "786DC5"; + base0A = "438288"; + base0B = "DF0002"; + base0C = "00A0BE"; + base0D = "790EAD"; + base0E = "B21889"; + base0F = "C77C48"; +} diff --git a/themes/xcode-dusk/polarity.txt b/themes/xcode-dusk/polarity.txt deleted file mode 100644 index 4520e2f..0000000 --- a/themes/xcode-dusk/polarity.txt +++ /dev/null @@ -1 +0,0 @@ -dark diff --git a/themes/xcode-dusk/xcode-dusk.yaml b/themes/xcode-dusk/xcode-dusk.yaml deleted file mode 100644 index 7159038..0000000 --- a/themes/xcode-dusk/xcode-dusk.yaml +++ /dev/null @@ -1,18 +0,0 @@ -scheme: "XCode Dusk" -author: "Elsa Gonsiorowski (https://github.com/gonsie)" -base00: "282B35" -base01: "3D4048" -base02: "53555D" -base03: "686A71" -base04: "7E8086" -base05: "939599" -base06: "A9AAAE" -base07: "BEBFC2" -base08: "B21889" -base09: "786DC5" -base0A: "438288" -base0B: "DF0002" -base0C: "00A0BE" -base0D: "790EAD" -base0E: "B21889" -base0F: "C77C48" diff --git a/user/style/stylix.nix b/user/style/stylix.nix index 2b5d2a7..8559fa9 100644 --- a/user/style/stylix.nix +++ b/user/style/stylix.nix @@ -1,23 +1,19 @@ { config, lib, pkgs, inputs, userSettings, ... }: let - themePath = "../../../themes"+("/"+userSettings.theme+"/"+userSettings.theme)+".yaml"; - themePolarity = lib.removeSuffix "\n" (builtins.readFile (./. + "../../../themes"+("/"+userSettings.theme)+"/polarity.txt")); - backgroundUrl = builtins.readFile (./. + "../../../themes"+("/"+userSettings.theme)+"/backgroundurl.txt"); - backgroundSha256 = builtins.readFile (./. + "../../../themes/"+("/"+userSettings.theme)+"/backgroundsha256.txt"); + theme = import (./. + "../../../themes"+("/"+userSettings.theme)); in { - imports = [ inputs.stylix.homeManagerModules.stylix ]; home.file.".currenttheme".text = userSettings.theme; stylix.autoEnable = false; - stylix.polarity = themePolarity; + stylix.polarity = theme.polarity; stylix.image = pkgs.fetchurl { - url = backgroundUrl; - sha256 = backgroundSha256; + url = theme.backgroundUrl; + sha256 = theme.backgroundSha256; }; - stylix.base16Scheme = ./. + themePath; + stylix.base16Scheme = theme; stylix.fonts = { monospace = { From 9f8378b5862d16c33970c8b1de41032f43c9d9db Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 7 Jan 2025 14:34:58 -0600 Subject: [PATCH 079/317] Updated system --- flake.lock | 308 +++++++++++++++------------------- flake.nix | 6 - profiles/work/home.nix | 2 +- user/wm/hyprland/hyprland.nix | 4 +- 4 files changed, 140 insertions(+), 180 deletions(-) diff --git a/flake.lock b/flake.lock index e304de2..1284165 100644 --- a/flake.lock +++ b/flake.lock @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1734719418, - "narHash": "sha256-POs74yWI2f7F5XQmqM8FSbR20f+Nr6pJDLhSAIzYUAE=", + "lastModified": 1736198534, + "narHash": "sha256-WdqYgQB4MN1H3SH/Wn8yJIDXJToAcy49D3Rqd8/zj64=", "owner": "StevenBlack", "repo": "hosts", - "rev": "aec12830201056810883861de874e66060a911b1", + "rev": "c16d2e415d27066ef46507cf1b2592cfb736ff29", "type": "github" }, "original": { @@ -123,11 +123,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1734631939, - "narHash": "sha256-ZrvI+3uXL6Y9v1+xyNVPpMav0SYPi2ZwcmkaTyarN0E=", + "lastModified": 1736112920, + "narHash": "sha256-MME0HoMWJtk67vW4lop1eTK4//EXJB/hefo6+JbdHZs=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "5694778dcfd69cc5dab9bd83c9eeb147ed3537e4", + "rev": "aa7b9944e164d9284939b78d05b8cf8df319a5d5", "type": "github" }, "original": { @@ -145,11 +145,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1734772216, - "narHash": "sha256-9Hp6GMsXe46MA7zvZM9McO1TMjTzb1AdBNVsC+pkOs8=", + "lastModified": 1736183620, + "narHash": "sha256-t7WTZg2+Y+k/qTUs1jo3yJbriBNTmVCVCl9F7KzeK14=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "8521536b77195b89b7c6ed51fc8643ae65fff26f", + "rev": "6fbd3dabc666841af3240c1f3f3aa52c037eb80d", "type": "github" }, "original": { @@ -158,6 +158,22 @@ "type": "github" } }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1734969791, + "narHash": "sha256-A9PxLienMYJ/WUvqFie9qXrNC2MeRRYw7TG/q7DRjZg=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "92f4890bd150fc9d97b61b3583680c0524a8cafe", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -241,6 +257,37 @@ "type": "github" } }, + "git-hooks": { + "inputs": { + "flake-compat": [ + "stylix", + "flake-compat" + ], + "gitignore": "gitignore_2", + "nixpkgs": [ + "stylix", + "nixpkgs" + ], + "nixpkgs-stable": [ + "stylix", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1731363552, + "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -263,6 +310,28 @@ "type": "github" } }, + "gitignore_2": { + "inputs": { + "nixpkgs": [ + "stylix", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "gnome-shell": { "flake": false, "locked": { @@ -288,11 +357,11 @@ ] }, "locked": { - "lastModified": 1734622158, - "narHash": "sha256-h/fdzqlCqSa2ZCIqtDc9kshCJm6kQIoKuO0MSSmAX4A=", + "lastModified": 1736066484, + "narHash": "sha256-uTstP36WaFrw+TEHb8nLF14hFPzQBOhmIxzioHCDaL8=", "owner": "nix-community", "repo": "home-manager", - "rev": "832920a60833533eaabcc93ab729801bf586fa0c", + "rev": "5ad12b6ea06b84e48f6b677957c74f32d47bdee0", "type": "github" }, "original": { @@ -329,11 +398,11 @@ ] }, "locked": { - "lastModified": 1734622215, - "narHash": "sha256-OOfI0XhSJGHblfdNDhfnn8QnZxng63rWk9eeJ2tCbiI=", + "lastModified": 1736204492, + "narHash": "sha256-CoBPRgkUex9Iz6qGSzi/BFVUQjndB0PmME2B6eEyeCs=", "owner": "nix-community", "repo": "home-manager", - "rev": "1395379a7a36e40f2a76e7b9936cc52950baa1be", + "rev": "20665c6efa83d71020c8730f26706258ba5c6b2a", "type": "github" }, "original": { @@ -351,11 +420,11 @@ ] }, "locked": { - "lastModified": 1733085484, - "narHash": "sha256-dVmNuUajnU18oHzBQWZm1BQtANCHaqNuxTHZQ+GN0r8=", + "lastModified": 1735774425, + "narHash": "sha256-C73gLFnEh8ZI0uDijUgCDWCd21T6I6tsaWgIBHcfAXg=", "owner": "nix-community", "repo": "home-manager", - "rev": "c1fee8d4a60b89cae12b288ba9dbc608ff298163", + "rev": "5f6aa268e419d053c3d5025da740e390b12ac936", "type": "github" }, "original": { @@ -380,11 +449,11 @@ ] }, "locked": { - "lastModified": 1728669738, - "narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=", + "lastModified": 1734906540, + "narHash": "sha256-vQ/L9hZFezC0LquLo4TWXkyniWtYBlFHAKIsDc7PYJE=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "0264e698149fcb857a66a53018157b41f8d97bb0", + "rev": "69270ba8f057d55b0e6c2dca0e165d652856e613", "type": "github" }, "original": { @@ -393,35 +462,6 @@ "type": "github" } }, - "hyprgraphics": { - "inputs": { - "hyprutils": [ - "hyprlock", - "hyprutils" - ], - "nixpkgs": [ - "hyprlock", - "nixpkgs" - ], - "systems": [ - "hyprlock", - "systems" - ] - }, - "locked": { - "lastModified": 1732808127, - "narHash": "sha256-jwqYmLVfvoLPu8UScEzZgdbbiNU3ioYcrsthjEEnGqI=", - "owner": "hyprwm", - "repo": "hyprgraphics", - "rev": "4d927a52be7e15e0846456f2aa1b0ad76b5bf059", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprgraphics", - "type": "github" - } - }, "hyprland": { "inputs": { "aquamarine": "aquamarine", @@ -508,60 +548,6 @@ "type": "github" } }, - "hyprlang_2": { - "inputs": { - "hyprutils": [ - "hyprlock", - "hyprutils" - ], - "nixpkgs": [ - "hyprlock", - "nixpkgs" - ], - "systems": [ - "hyprlock", - "systems" - ] - }, - "locked": { - "lastModified": 1728168612, - "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprlock": { - "inputs": { - "hyprgraphics": "hyprgraphics", - "hyprlang": "hyprlang_2", - "hyprutils": "hyprutils_2", - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems_2" - }, - "locked": { - "lastModified": 1732812191, - "narHash": "sha256-/gYMXqhjvOcjhaYjzb1iqjpoCDqO5lkkqjG93oMMo60=", - "ref": "refs/heads/main", - "rev": "4667f721be47ff6f5cf2a7ee64513f818fb764a0", - "revCount": 277, - "type": "git", - "url": "https://code.hyprland.org/hyprwm/hyprlock.git" - }, - "original": { - "rev": "4667f721be47ff6f5cf2a7ee64513f818fb764a0", - "type": "git", - "url": "https://code.hyprland.org/hyprwm/hyprlock.git" - } - }, "hyprutils": { "inputs": { "nixpkgs": [ @@ -587,31 +573,6 @@ "type": "github" } }, - "hyprutils_2": { - "inputs": { - "nixpkgs": [ - "hyprlock", - "nixpkgs" - ], - "systems": [ - "hyprlock", - "systems" - ] - }, - "locked": { - "lastModified": 1727300645, - "narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprutils", - "type": "github" - } - }, "hyprwayland-scanner": { "inputs": { "nixpkgs": [ @@ -646,11 +607,11 @@ ] }, "locked": { - "lastModified": 1734591594, - "narHash": "sha256-7Q4hXE+b9A4DebZ5Q+q3WStuMiWR5bMW0ltpzbY/zMQ=", + "lastModified": 1735931035, + "narHash": "sha256-f3WRxasPYVKzrvAlLq+/3FRHQVfxVf5xxf0WWwnO99k=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "ce2abe494524cdb389a5d31c11c41834d4362ac5", + "rev": "7e530766a5fd9b7577296fedd655f3255f7495d8", "type": "github" }, "original": { @@ -738,11 +699,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1734424634, - "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", + "lastModified": 1735834308, + "narHash": "sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33", + "rev": "6df24922a1400241dae323af55f30e4318a6ca65", "type": "github" }, "original": { @@ -786,11 +747,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1734600368, - "narHash": "sha256-nbG9TijTMcfr+au7ZVbKpAhMJzzE2nQBYmRvSdXUD8g=", + "lastModified": 1736061677, + "narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b47fd6fa00c6afca88b8ee46cfdb00e104f50bca", + "rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36", "type": "github" }, "original": { @@ -818,11 +779,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1734737257, - "narHash": "sha256-GIMyMt1pkkoXdCq9un859bX6YQZ/iYtukb9R5luazLM=", + "lastModified": 1736061677, + "narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1c6e20d41d6a9c1d737945962160e8571df55daa", + "rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36", "type": "github" }, "original": { @@ -833,11 +794,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1734424634, - "narHash": "sha256-cHar1vqHOOyC7f1+tVycPoWTfKIaqkoe1Q6TnKzuti4=", + "lastModified": 1736012469, + "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d3c42f187194c26d9f0309a8ecc469d6c878ce33", + "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", "type": "github" }, "original": { @@ -864,16 +825,16 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1732238832, - "narHash": "sha256-sQxuJm8rHY20xq6Ah+GwIUkF95tWjGRd1X8xF+Pkk38=", + "lastModified": 1735648875, + "narHash": "sha256-fQ4k/hyQiH9RRPznztsA9kbcDajvwV1sRm01el6Sr3c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8edf06bea5bcbee082df1b7369ff973b91618b8d", + "rev": "47e29c20abef74c45322eca25ca1550cdf5c3b50", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -948,7 +909,6 @@ "home-manager-stable": "home-manager-stable", "home-manager-unstable": "home-manager-unstable", "hyprland": "hyprland", - "hyprlock": "hyprlock", "nix-on-droid": "nix-on-droid", "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_3", @@ -961,11 +921,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1734747996, - "narHash": "sha256-0DUuObdcPITVOMMymq2y6YlM++QEWXZO3cTm6RGYgL8=", + "lastModified": 1736130662, + "narHash": "sha256-z+WGez9oTR2OsiUWE5ZhIpETqM1ogrv6Xcd24WFi6KQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f9086701f5f3d36b8e5f4a3b9c93579ebc2581e6", + "rev": "2f5d4d9cd31cc02c36e51cb2e21c4b25c4f78c52", "type": "github" }, "original": { @@ -996,22 +956,25 @@ "base16-fish": "base16-fish", "base16-helix": "base16-helix", "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", "flake-compat": "flake-compat_2", "flake-utils": "flake-utils", + "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_2", "nixpkgs": "nixpkgs_4", - "systems": "systems_3", + "systems": "systems_2", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", - "tinted-tmux": "tinted-tmux" + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1734531336, - "narHash": "sha256-BWwJTAiWmZudUdUbyets7e3zQfjvZYtkU51blBnUBjw=", + "lastModified": 1736201929, + "narHash": "sha256-TC6nITVcD+qxjPOWGmLAshuOkILocvzxfHj0Vsu6FAI=", "owner": "danth", "repo": "stylix", - "rev": "a2d66f25478103ac9b4adc6d6713794f7005221e", + "rev": "1d7b70ed9ee4c3b24ed6b0c7c64a0ee5fcc4ae10", "type": "github" }, "original": { @@ -1036,21 +999,6 @@ } }, "systems_2": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1115,6 +1063,22 @@ "type": "github" } }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1725758778, + "narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "122c9e5c0e6f27211361a04fae92df97940eccf9", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ diff --git a/flake.nix b/flake.nix index c2c6211..633a3a6 100644 --- a/flake.nix +++ b/flake.nix @@ -217,12 +217,6 @@ rev = "3fb47372b79265ebdabeeefdad10359d5b18377a"; #v0.45.0 inputs.nixpkgs.follows = "nixpkgs"; }; - hyprlock = { - type = "git"; - url = "https://code.hyprland.org/hyprwm/hyprlock.git"; - rev = "4667f721be47ff6f5cf2a7ee64513f818fb764a0"; - inputs.nixpkgs.follows = "nixpkgs"; - }; stylix.url = "github:danth/stylix"; diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 53d8d8f..0d832db 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -185,7 +185,7 @@ audio-recorder cheese ardour - rosegarden + #rosegarden tenacity # Various dev packages diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index da2f399..3808781 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -48,6 +48,7 @@ in env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 env = CLUTTER_BACKEND,wayland env = GDK_PIXBUF_MODULE_FILE,${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache + env = GSK_RENDERER,gl exec-once = hyprprofile Default @@ -449,7 +450,8 @@ in wl-clipboard hyprland-protocols hyprpicker - inputs.hyprlock.packages.${pkgs.system}.default + #inputs.hyprlock.packages.${pkgs.system}.default + hyprlock hypridle hyprpaper fnott From c10f209a8b4a9b3384f16bcfc322ec033da66d59 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 7 Jan 2025 14:35:06 -0600 Subject: [PATCH 080/317] Fixed config pull script --- scripts/pull.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/pull.sh b/scripts/pull.sh index 5c27c5c..31b5c85 100755 --- a/scripts/pull.sh +++ b/scripts/pull.sh @@ -7,7 +7,7 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # Relax permissions temporarily so git can work -sudo $SCRIPT_DIR/scripts/soften.sh $SCRIPT_DIR; +sudo $SCRIPT_DIR/soften.sh $SCRIPT_DIR; # Stash local edits, pull changes, and re-apply local edits pushd $SCRIPT_DIR/.. &> /dev/null; From 0d757f8f6d01daf768127c4fe35e6ea0159b8efe Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 7 Jan 2025 14:35:27 -0600 Subject: [PATCH 081/317] Fixes an org-mode keybind --- user/app/emacs/init.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 994321c..8697471 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -237,7 +237,7 @@ (evil-define-key 'motion 'global (kbd "wl") 'evil-window-right) - (evil-define-key 'motion 'org-mode-map (kbd "mll") 'org-insert-link) + (evil-define-key 'motion org-mode-map (kbd "mll") 'org-insert-link) (define-key magit-mode-map (kbd "SPC") nil) (global-set-key (kbd "C-j") 'evil-window-down) @@ -265,6 +265,8 @@ :config (add-hook 'projectile-after-switch-project-hook 'treemacs-add-and-display-current-project-exclusively)) +(use-package treemacs-evil) + (use-package lsp-mode :init ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") From 194bf1f298b9a1835bd24a9f7ac53912a51805aa Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 7 Jan 2025 14:35:37 -0600 Subject: [PATCH 082/317] Forgot to commit treemacs-evil --- user/app/emacs/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 71db507..b2aae0e 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -13,9 +13,9 @@ dashboard doom-themes doom-modeline nerd-icons nerd-icons-dired nerd-icons-corfu nerd-icons-ibuffer nerd-icons-completion - treemacs-nerd-icons yasnippet shackle projectile treemacs treemacs-projectile + treemacs-evil treemacs-nerd-icons treesit-grammars.with-all-grammars magit magit-file-icons magit-todos undo-fu undo-fu-session From 38dd9e474aec0c75996eef869bf35741be5673ca Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 7 Jan 2025 14:35:48 -0600 Subject: [PATCH 083/317] Use brave in qutebrowser --- user/app/browser/qutebrowser.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/user/app/browser/qutebrowser.nix b/user/app/browser/qutebrowser.nix index d42cfcb..5fb056a 100644 --- a/user/app/browser/qutebrowser.nix +++ b/user/app/browser/qutebrowser.nix @@ -146,6 +146,8 @@ quickmarksHtmlFileText += '' quickmarksHtmlFile.write(quickmarksHtmlFileText) quickmarksHtmlFile.close() +config.set('content.blocking.method','both') + config.set('scrolling.smooth',True) config.set('qt.args',['ignore-gpu-blacklist','enable-gpu-rasterization','enable-accelerated-video-decode','enable-quic','enable-zero-copy','enable-native-gpu-memory-buffers','num-raster-threads=4','allow-file-access-from-files']) config.set('qt.workarounds.disable_accelerated_2d_canvas','never') @@ -197,7 +199,8 @@ c.colors.webpage.darkmode.policy.images = 'never' c.url.default_page = str(config.configdir)+'/qute-home.html' c.url.start_pages = str(config.configdir)+'/qute-home.html' -c.url.searchengines = {'DEFAULT': 'https://startpage.com/do/search?query={}', +c.url.searchengines = {'DEFAULT': 'https://search.brave.com/search?q={}&source=web', + 'sp': 'https://startpage.com/do/search?query={}', 'd' : 'https://duckduckgo.com/?q={}&ia=web', 'az' : 'https://www.amazon.com/s?k={}', 'aw' : 'https://wiki.archlinux.org/index.php?search={}&title=Special%3ASearch&wprov=acrw1', From 22669e1f6dee102bbf8c7657c5e5a25cc5b2cdd9 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 7 Jan 2025 14:51:33 -0600 Subject: [PATCH 084/317] Cleaned up some readme's and main config files --- README.org | 2 +- profiles/personal/configuration.nix | 9 --------- profiles/personal/home.nix | 1 - profiles/work/configuration.nix | 4 ---- profiles/wsl/README.org | 2 ++ profiles/wsl/configuration.nix | 4 ---- themes/README.org | 7 +------ 7 files changed, 4 insertions(+), 25 deletions(-) diff --git a/README.org b/README.org index efd52f6..b2ecbe4 100644 --- a/README.org +++ b/README.org @@ -16,7 +16,7 @@ Here is my main setup: ** My Themes [[https://github.com/danth/stylix#readme][Stylix]] (and [[https://github.com/SenchoPens/base16.nix#readme][base16.nix]], of course) is amazing, allowing you to theme your entire system with base16-themes. -Using this I have [[./themes][55+ themes]] (I add more sometimes) I can switch between on-the-fly. Visit the [[./themes][themes directory]] for more info and screenshots! +Using this I have [[./themes][59+ themes]] (I add more sometimes) I can switch between on-the-fly. Visit the [[./themes][themes directory]] for more info and screenshots! ** Install I wrote some reinstall notes for myself [[./install.org][here (install.org)]]. diff --git a/profiles/personal/configuration.nix b/profiles/personal/configuration.nix index 143bc7e..9aff188 100644 --- a/profiles/personal/configuration.nix +++ b/profiles/personal/configuration.nix @@ -1,18 +1,9 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - { ... }: { imports = [ ../work/configuration.nix # Personal is essentially work system + games ../../system/hardware-configuration.nix ../../system/app/gamemode.nix - #../../system/app/steam.nix ../../system/app/prismlauncher.nix - ../../system/security/doas.nix - ../../system/security/gpg.nix - ../../system/security/blocklist.nix - ../../system/security/firewall.nix ]; } diff --git a/profiles/personal/home.nix b/profiles/personal/home.nix index 3865a8c..cacd0db 100644 --- a/profiles/personal/home.nix +++ b/profiles/personal/home.nix @@ -20,7 +20,6 @@ brave git syncthing - ]; xdg.enable = true; diff --git a/profiles/work/configuration.nix b/profiles/work/configuration.nix index a6cd9cb..4fbe911 100644 --- a/profiles/work/configuration.nix +++ b/profiles/work/configuration.nix @@ -1,7 +1,3 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - { pkgs, lib, systemSettings, userSettings, ... }: { imports = diff --git a/profiles/wsl/README.org b/profiles/wsl/README.org index af200da..cce6367 100644 --- a/profiles/wsl/README.org +++ b/profiles/wsl/README.org @@ -1,5 +1,7 @@ #+title: Trying to use a computer without Linux is hard +WARNING: I haven't used Windows for a very long time, so this profile is unmaintained. + This is my =WSL= profile, which is a minimal installation I use on Windows underneath WSL. This (obviously) requires [[https://github.com/nix-community/NixOS-WSL][NixOS-WSL]] to be installed. I essentially just use this for Emacs, some useful CLI apps I can't live without (namely ranger), and LibreOffice, which runs strangely slow on Windows (hmm, I wonder why? It's not like Microsoft has a competing office suite or anything...) The [[./nixos-wsl][nixos-wsl]] directory is taken directly from [[https://github.com/nix-community/NixOS-WSL][NixOS-WSL]] and merely patched slightly to allow it to run with the unstable channel of nixpkgs. diff --git a/profiles/wsl/configuration.nix b/profiles/wsl/configuration.nix index 2c8db3f..f09bfea 100644 --- a/profiles/wsl/configuration.nix +++ b/profiles/wsl/configuration.nix @@ -1,7 +1,3 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - { lib, pkgs, systemSettings, userSettings, ... }: with lib; diff --git a/themes/README.org b/themes/README.org index d178a05..c78334b 100644 --- a/themes/README.org +++ b/themes/README.org @@ -3,11 +3,6 @@ Inside this directory are all of my themes! -Each theme directory stores a few relevant files: -- =${theme-name}.yaml= - This stores all 16 colors for the theme -- =backgroundurl.txt= - A direct link to the wallpaper associated with the theme -- =backgroundsha26.txt= - =sha256sum= of the wallpaper -- =polarity.txt= - Whether or not the background is =light= or =dark= -- =${theme-name}.png= - A screenshot of the theme for previewing purposes +Each theme directory stores =default.nix= which is an attribute set containing all the necessary information including both colors and a background image link (which is automatically downloaded by my config). Look at any of the directories here for more info! From 228f6026911f8e52c9f65e16c6de349754358a8e Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 11 Jan 2025 09:58:16 -0600 Subject: [PATCH 085/317] Rearranged user-dirs --- profiles/work/home.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 0d832db..1d23c7a 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -219,10 +219,11 @@ extraConfig = { XDG_DOTFILES_DIR = "${config.home.homeDirectory}/.dotfiles"; XDG_ARCHIVE_DIR = "${config.home.homeDirectory}/Archive"; - XDG_VM_DIR = "${config.home.homeDirectory}/Machines"; - XDG_ORG_DIR = "${config.home.homeDirectory}/Org"; - XDG_PODCAST_DIR = "${config.home.homeDirectory}/Media/Podcasts"; + XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects"; + XDG_CLOUD_DIR = "${config.home.homeDirectory}/Drive"; XDG_BOOK_DIR = "${config.home.homeDirectory}/Media/Books"; + XDG_VM_DIR = "${config.home.homeDirectory}/Machines"; + XDG_NOTES_DIR = "${config.home.homeDirectory}/Notes"; }; }; xdg.mime.enable = true; From 69486ace886ec6be8e260704f18a910a389dcab4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 11 Jan 2025 09:58:38 -0600 Subject: [PATCH 086/317] Simplified qutebrowser containers --- user/app/browser/qutebrowser.nix | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/user/app/browser/qutebrowser.nix b/user/app/browser/qutebrowser.nix index 5fb056a..bab1634 100644 --- a/user/app/browser/qutebrowser.nix +++ b/user/app/browser/qutebrowser.nix @@ -386,23 +386,18 @@ c.fonts.web.family.cursive = font ''; home.file.".config/qutebrowser/containers".text = '' -Teaching -Tech Gamedev -Bard +Teaching +Youtube ''; home.file.".config/qutebrowser/qute-home.html".text = generateHomepage "Default" userSettings.font config; home.file.".config/qutebrowser/logo.png".source = ./qutebrowser-logo.png; - home.file.".browser/Teaching/config/qute-home.html".text = generateHomepage "Teaching" userSettings.font config; - home.file.".browser/Teaching/config/logo.png".source = ./qutebrowser-logo.png; - home.file.".browser/Tech/config/qute-home.html".text = generateHomepage "Tech" userSettings.font config; - home.file.".browser/Tech/config/logo.png".source = ./qutebrowser-logo.png; - home.file.".browser/Gaming/config/qute-home.html".text = generateHomepage "Gaming" userSettings.font config; - home.file.".browser/Gaming/config/logo.png".source = ./qutebrowser-logo.png; home.file.".browser/Gamedev/config/qute-home.html".text = generateHomepage "Gamedev" userSettings.font config; home.file.".browser/Gamedev/config/logo.png".source = ./qutebrowser-logo.png; - home.file.".browser/Bard/config/qute-home.html".text = generateHomepage "Bard" userSettings.font config; - home.file.".browser/Bard/config/logo.png".source = ./qutebrowser-logo.png; + home.file.".browser/Teaching/config/qute-home.html".text = generateHomepage "Teaching" userSettings.font config; + home.file.".browser/Teaching/config/logo.png".source = ./qutebrowser-logo.png; + home.file.".browser/Youtube/config/qute-home.html".text = generateHomepage "Youtube" userSettings.font config; + home.file.".browser/Youtube/config/logo.png".source = ./qutebrowser-logo.png; } From 174dd50e1675b459f6f6370a340830011df7de93 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 11 Jan 2025 09:58:51 -0600 Subject: [PATCH 087/317] Updated system --- flake.lock | 78 +++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/flake.lock b/flake.lock index 1284165..0b083e6 100644 --- a/flake.lock +++ b/flake.lock @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1736198534, - "narHash": "sha256-WdqYgQB4MN1H3SH/Wn8yJIDXJToAcy49D3Rqd8/zj64=", + "lastModified": 1736438898, + "narHash": "sha256-T8973P0Tr7kUTSkGSF/071Tsbsx4p7tg8+PflN8lydE=", "owner": "StevenBlack", "repo": "hosts", - "rev": "c16d2e415d27066ef46507cf1b2592cfb736ff29", + "rev": "6c9e54b5c9ef96c7697440520d3fb081139413c2", "type": "github" }, "original": { @@ -123,11 +123,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1736112920, - "narHash": "sha256-MME0HoMWJtk67vW4lop1eTK4//EXJB/hefo6+JbdHZs=", + "lastModified": 1736524793, + "narHash": "sha256-UEbNwGorRiNLtzhshxe/2J2BmwGI1cDCDhSYtY8qREU=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "aa7b9944e164d9284939b78d05b8cf8df319a5d5", + "rev": "38844e9b3e17948a66b0dea0ce0bcc0355d6d876", "type": "github" }, "original": { @@ -145,11 +145,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1736183620, - "narHash": "sha256-t7WTZg2+Y+k/qTUs1jo3yJbriBNTmVCVCl9F7KzeK14=", + "lastModified": 1736586776, + "narHash": "sha256-UAt225bI+EmplGmmiWQHzXN18ZxaK2l3PfF/SV/Zldo=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "6fbd3dabc666841af3240c1f3f3aa52c037eb80d", + "rev": "8e1fd211d50232c3227a6e7a555515e5b3d3e333", "type": "github" }, "original": { @@ -357,11 +357,11 @@ ] }, "locked": { - "lastModified": 1736066484, - "narHash": "sha256-uTstP36WaFrw+TEHb8nLF14hFPzQBOhmIxzioHCDaL8=", + "lastModified": 1736421950, + "narHash": "sha256-RyrX0WFXxFrYvzHNLTIyuk3NcNl3UBykuYru/P0zW5E=", "owner": "nix-community", "repo": "home-manager", - "rev": "5ad12b6ea06b84e48f6b677957c74f32d47bdee0", + "rev": "d4aebb947a301b8da8654a804979a738c5c5da50", "type": "github" }, "original": { @@ -398,11 +398,11 @@ ] }, "locked": { - "lastModified": 1736204492, - "narHash": "sha256-CoBPRgkUex9Iz6qGSzi/BFVUQjndB0PmME2B6eEyeCs=", + "lastModified": 1736508663, + "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", "owner": "nix-community", "repo": "home-manager", - "rev": "20665c6efa83d71020c8730f26706258ba5c6b2a", + "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", "type": "github" }, "original": { @@ -607,11 +607,11 @@ ] }, "locked": { - "lastModified": 1735931035, - "narHash": "sha256-f3WRxasPYVKzrvAlLq+/3FRHQVfxVf5xxf0WWwnO99k=", + "lastModified": 1736409493, + "narHash": "sha256-XezBEaGENmXgndx2gsVxQ0JoHUeQs9OSUZvVx/GDqyQ=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "7e530766a5fd9b7577296fedd655f3255f7495d8", + "rev": "9a958cc0aa5241ea3badf44a063a4b0389dc0110", "type": "github" }, "original": { @@ -699,11 +699,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1735834308, - "narHash": "sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk=", + "lastModified": 1736344531, + "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6df24922a1400241dae323af55f30e4318a6ca65", + "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", "type": "github" }, "original": { @@ -747,11 +747,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1736061677, - "narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=", + "lastModified": 1736200483, + "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36", + "rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751", "type": "github" }, "original": { @@ -779,11 +779,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1736061677, - "narHash": "sha256-DjkQPnkAfd7eB522PwnkGhOMuT9QVCZspDpJJYyOj60=", + "lastModified": 1736200483, + "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cbd8ec4de4469333c82ff40d057350c30e9f7d36", + "rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751", "type": "github" }, "original": { @@ -794,11 +794,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1736012469, - "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", + "lastModified": 1736344531, + "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", + "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", "type": "github" }, "original": { @@ -809,11 +809,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1728538411, - "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", + "lastModified": 1736320768, + "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", + "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", "type": "github" }, "original": { @@ -921,11 +921,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1736130662, - "narHash": "sha256-z+WGez9oTR2OsiUWE5ZhIpETqM1ogrv6Xcd24WFi6KQ=", + "lastModified": 1736572187, + "narHash": "sha256-it8mU8UkbaeVup7GpCI6n2cWPJ/O4U980CxKAMKUGF0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "2f5d4d9cd31cc02c36e51cb2e21c4b25c4f78c52", + "rev": "06871d5c5f78b0ae846c5758702531b4cabfab9b", "type": "github" }, "original": { @@ -970,11 +970,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1736201929, - "narHash": "sha256-TC6nITVcD+qxjPOWGmLAshuOkILocvzxfHj0Vsu6FAI=", + "lastModified": 1736530113, + "narHash": "sha256-a+IUtGdzESNSQEZkW99TXf5js8o4Oy9M4H2am+2ECp4=", "owner": "danth", "repo": "stylix", - "rev": "1d7b70ed9ee4c3b24ed6b0c7c64a0ee5fcc4ae10", + "rev": "f1e003194cb528bbd4eda50b781d1f703611782d", "type": "github" }, "original": { From b0f5968acd106db04b49b3b5c0b4ebbe717f3644 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 11 Jan 2025 13:43:02 -0600 Subject: [PATCH 088/317] New SSD --- system/hardware-configuration.nix | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/system/hardware-configuration.nix b/system/hardware-configuration.nix index 276cd24..45d46f5 100644 --- a/system/hardware-configuration.nix +++ b/system/hardware-configuration.nix @@ -87,24 +87,19 @@ "vm.dirty_ratio" = 8; }; - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - }; - fileSystems."/" = - { device = "/dev/disk/by-uuid/637d8261-0650-4ece-a35b-59d97baf64a7"; - fsType = "btrfs"; - options = [ "noatime,compress-force=zstd:2,discard=async,commit=120,clear_cache,space_cache=v2,subvol=@" ]; + { device = "/dev/disk/by-uuid/88f5f921-0a64-4711-9d74-e0f8a3a1b3af"; + fsType = "ext4"; }; - boot.initrd.luks.devices."luks-385106b5-71f7-460e-9a2b-2416f3b54cb6".device = "/dev/disk/by-uuid/385106b5-71f7-460e-9a2b-2416f3b54cb6"; + boot.initrd.luks.devices."luks-09f429eb-1add-48da-b3b8-1a811c0d1472".device = "/dev/disk/by-uuid/09f429eb-1add-48da-b3b8-1a811c0d1472"; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/F09D-73C9"; + { device = "/dev/disk/by-uuid/4695-0F2E"; fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; }; - + swapDevices = [ ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking From 6affffc1c816a5887b4b63316e50b71a43a33d8b Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 15 Jan 2025 21:17:05 -0600 Subject: [PATCH 089/317] ultra-scroll is amazing!! --- user/app/emacs/default.nix | 1 + user/app/emacs/init.el | 5 ++++- user/app/emacs/ultra-scroll.nix | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 user/app/emacs/ultra-scroll.nix diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index b2aae0e..1ebcd78 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -26,6 +26,7 @@ nix-mode python python-mode lsp-mode flycheck lsp-ui lsp-treemacs + (epkgs.callPackage ./ultra-scroll.nix {}) ]; }) fira-code diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 8697471..a11083c 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -114,12 +114,15 @@ ;; Mouse & Smooth Scroll (setq scroll-step 1 - scroll-margin 1 + scroll-margin 0 scroll-conservatively 101 scroll-preserve-screen-position nil redisplay-skip-fontification-on-input t) (pixel-scroll-precision-mode 1) + (require 'ultra-scroll) + (ultra-scroll-mode 1) + ;; Line numbers (setq display-line-numbers-type t line-move-visual t) diff --git a/user/app/emacs/ultra-scroll.nix b/user/app/emacs/ultra-scroll.nix new file mode 100644 index 0000000..113351d --- /dev/null +++ b/user/app/emacs/ultra-scroll.nix @@ -0,0 +1,19 @@ +{ lib, fetchurl, trivialBuild }: + +trivialBuild { + pname = "ultra-scroll"; + version = "0.2.0"; + + src = fetchGit { + url = "https://github.com/jdtsmith/ultra-scroll.git"; + rev = "64ad7be02e11317576498dabb15c92cf31e2c04c"; + ref = "main"; + }; + + meta = with lib; { + description = "scroll Emacs like lightning"; + homepage = "https://github.com/jdtsmith/ultra-scroll"; + license = licenses.gpl3; + platforms = platforms.all; + }; +} From 2ad56359fb12d9d3d9f76d7279f98b2359a164c9 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 15 Jan 2025 21:18:06 -0600 Subject: [PATCH 090/317] org-node fix --- user/app/emacs/init.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index a11083c..ebd9145 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -497,8 +497,10 @@ All my (performant) foldings needs are met between this and `org-show-subtree' (use-package org-node :ensure t :after org - :config (org-node-cache-mode) + :config (setq org-node-extra-id-dirs '("~/Notes/")) + (setq org-id-locations-file "~/Notes/.org-id-locations") + (org-node-cache-mode) (org-node-complete-at-point-mode) (setq org-roam-completion-everywhere nil) (evil-define-key 'motion 'global (kbd "Ni") 'org-node-insert-link) From 26287e6627a1e7ca0309183d3981dcb03f3adf61 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 15 Jan 2025 21:18:12 -0600 Subject: [PATCH 091/317] Doom theme daemon bug workaround (don't use daemon) --- user/wm/hyprland/hyprland.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 3808781..be38283 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -59,7 +59,7 @@ in exec-once = GOMAXPROCS=1 syncthing --no-browser exec-once = protonmail-bridge --noninteractive exec-once = waybar - exec-once = emacs --daemon + #exec-once = emacs --daemon exec-once = hypridle exec-once = sleep 5 && libinput-gestures From f43d8ed821d2a184d937f98df8a367d2edbc2e33 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 18 Jan 2025 11:21:45 -0600 Subject: [PATCH 092/317] Updated system --- flake.lock | 327 ++++++++++++++++++++++++++-------- flake.nix | 16 ++ user/wm/hyprland/hyprland.nix | 3 +- 3 files changed, 269 insertions(+), 77 deletions(-) diff --git a/flake.lock b/flake.lock index 0b083e6..55f33de 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ "base16-helix": { "flake": false, "locked": { - "lastModified": 1725860795, - "narHash": "sha256-Z2o8VBPW3I+KKTSfe25kskz0EUj7MpUh8u355Z1nVsU=", + "lastModified": 1736852337, + "narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "7f795bf75d38e0eea9fed287264067ca187b88a9", + "rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5", "type": "github" }, "original": { @@ -86,11 +86,11 @@ "base16-vim": { "flake": false, "locked": { - "lastModified": 1731949548, - "narHash": "sha256-XIDexXM66sSh5j/x70e054BnUsviibUShW7XhbDGhYo=", + "lastModified": 1735953590, + "narHash": "sha256-YbQwaApLFJobn/0lbpMKcJ8N5axKlW2QIGkDS5+xoSU=", "owner": "tinted-theming", "repo": "base16-vim", - "rev": "61165b1632409bd55e530f3dbdd4477f011cadc6", + "rev": "c2a1232aa2c0ed27dcbf005779bcfe0e0ab5e85d", "type": "github" }, "original": { @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1736438898, - "narHash": "sha256-T8973P0Tr7kUTSkGSF/071Tsbsx4p7tg8+PflN8lydE=", + "lastModified": 1736978230, + "narHash": "sha256-f5SH4qQzRWYKwIjpzOuhI9mPwlyNcBWjr2mrCKLgml4=", "owner": "StevenBlack", "repo": "hosts", - "rev": "6c9e54b5c9ef96c7697440520d3fb081139413c2", + "rev": "1b19054c880e1ea75c73dfbeb3fb071c2bf08e1f", "type": "github" }, "original": { @@ -117,17 +117,18 @@ }, "chaotic": { "inputs": { + "fenix": "fenix", "flake-schemas": "flake-schemas", "home-manager": "home-manager", "jovian": "jovian", "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1736524793, - "narHash": "sha256-UEbNwGorRiNLtzhshxe/2J2BmwGI1cDCDhSYtY8qREU=", + "lastModified": 1737055309, + "narHash": "sha256-nRkk3vB5B5ITfWsCxDU+aOVZ4bMqDVIPB1TLWc5zbWE=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "38844e9b3e17948a66b0dea0ce0bcc0355d6d876", + "rev": "b0e6aee3b90fd6506e0164bc180ae1e1f6be22a8", "type": "github" }, "original": { @@ -145,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1736586776, - "narHash": "sha256-UAt225bI+EmplGmmiWQHzXN18ZxaK2l3PfF/SV/Zldo=", + "lastModified": 1737105550, + "narHash": "sha256-BagwQS3VHSPgZ9xwmwaMGShSkdghAv7ZD1xE5Wb9678=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "8e1fd211d50232c3227a6e7a555515e5b3d3e333", + "rev": "c7efde709bbcd3a207abe763c11922fda4358a6d", "type": "github" }, "original": { @@ -158,14 +159,36 @@ "type": "github" } }, + "fenix": { + "inputs": { + "nixpkgs": [ + "chaotic", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1737009074, + "narHash": "sha256-BF+OxooVz4KeSIJyLXCnX2VTMsyfGrpEsay76hGRyrI=", + "owner": "nix-community", + "repo": "fenix", + "rev": "fe17a42e2c306d1a8a4fb3f977b12048d8cf7471", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1734969791, - "narHash": "sha256-A9PxLienMYJ/WUvqFie9qXrNC2MeRRYw7TG/q7DRjZg=", + "lastModified": 1736899990, + "narHash": "sha256-S79Hqn2EtSxU4kp99t8tRschSifWD4p/51++0xNWUxw=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "92f4890bd150fc9d97b61b3583680c0524a8cafe", + "rev": "91ca1f82d717b02ceb03a3f423cbe8082ebbb26d", "type": "github" }, "original": { @@ -193,11 +216,11 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -267,19 +290,14 @@ "nixpkgs": [ "stylix", "nixpkgs" - ], - "nixpkgs-stable": [ - "stylix", - "git-hooks", - "nixpkgs" ] }, "locked": { - "lastModified": 1731363552, - "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", + "lastModified": 1735882644, + "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", + "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", "type": "github" }, "original": { @@ -357,11 +375,11 @@ ] }, "locked": { - "lastModified": 1736421950, - "narHash": "sha256-RyrX0WFXxFrYvzHNLTIyuk3NcNl3UBykuYru/P0zW5E=", + "lastModified": 1736883540, + "narHash": "sha256-dgPgoPUSg8cGAMqbhQRkww665sZtgzpWXxWjlyqhv94=", "owner": "nix-community", "repo": "home-manager", - "rev": "d4aebb947a301b8da8654a804979a738c5c5da50", + "rev": "0dfec9deb275854a56c97c356c40ef72e3a2e632", "type": "github" }, "original": { @@ -398,11 +416,11 @@ ] }, "locked": { - "lastModified": 1736508663, - "narHash": "sha256-ZOaGwa+WnB7Zn3YXimqjmIugAnHePdXCmNu+AHkq808=", + "lastModified": 1737120639, + "narHash": "sha256-p5e/45V41YD3tMELuiNIoVCa25/w4nhOTm0B9MtdHFI=", "owner": "nix-community", "repo": "home-manager", - "rev": "2532b500c3ed2b8940e831039dcec5a5ea093afc", + "rev": "a0046af169ce7b1da503974e1b22c48ef4d71887", "type": "github" }, "original": { @@ -420,11 +438,11 @@ ] }, "locked": { - "lastModified": 1735774425, - "narHash": "sha256-C73gLFnEh8ZI0uDijUgCDWCd21T6I6tsaWgIBHcfAXg=", + "lastModified": 1736785676, + "narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=", "owner": "nix-community", "repo": "home-manager", - "rev": "5f6aa268e419d053c3d5025da740e390b12ac936", + "rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d", "type": "github" }, "original": { @@ -462,13 +480,44 @@ "type": "github" } }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprlock", + "hyprutils" + ], + "nixpkgs": [ + "hyprlock", + "nixpkgs" + ], + "systems": [ + "hyprlock", + "systems" + ] + }, + "locked": { + "lastModified": 1732808127, + "narHash": "sha256-jwqYmLVfvoLPu8UScEzZgdbbiNU3ioYcrsthjEEnGqI=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "4d927a52be7e15e0846456f2aa1b0ad76b5bf059", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, "hyprland": { "inputs": { "aquamarine": "aquamarine", "hyprcursor": "hyprcursor", "hyprland-protocols": "hyprland-protocols", "hyprlang": "hyprlang", - "hyprutils": "hyprutils", + "hyprutils": [ + "hyprutils" + ], "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": [ "nixpkgs" @@ -548,31 +597,85 @@ "type": "github" } }, - "hyprutils": { + "hyprlang_2": { "inputs": { + "hyprutils": [ + "hyprlock", + "hyprutils" + ], "nixpkgs": [ - "hyprland", + "hyprlock", "nixpkgs" ], "systems": [ - "hyprland", + "hyprlock", "systems" ] }, "locked": { - "lastModified": 1731518387, - "narHash": "sha256-aZZw1ZvTMLkcA6udlvkA3hrCkuipoWLy8s/JNnIclxY=", + "lastModified": 1728168612, + "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", "owner": "hyprwm", - "repo": "hyprutils", - "rev": "315fba5d21d87ddb756d4bebdb49f99d86b0ffe8", + "repo": "hyprlang", + "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", "type": "github" }, "original": { "owner": "hyprwm", - "repo": "hyprutils", + "repo": "hyprlang", "type": "github" } }, + "hyprlock": { + "inputs": { + "hyprgraphics": "hyprgraphics", + "hyprlang": "hyprlang_2", + "hyprutils": [ + "hyprutils" + ], + "hyprwayland-scanner": "hyprwayland-scanner_2", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_2" + }, + "locked": { + "lastModified": 1735497496, + "narHash": "sha256-lT6f/5NB73xj9cVesi2SNsL5jVciwZJp8QRohiv+3Hk=", + "ref": "02639c27599b03c81dc1d0e031628224f5ad8d50", + "rev": "3d63d9b129d5def270bc8a2471347e6f97274e2b", + "revCount": 301, + "type": "git", + "url": "https://code.hyprland.org/hyprwm/hyprlock.git" + }, + "original": { + "rev": "3d63d9b129d5def270bc8a2471347e6f97274e2b", + "type": "git", + "url": "https://code.hyprland.org/hyprwm/hyprlock.git" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_3" + }, + "locked": { + "lastModified": 1736164519, + "narHash": "sha256-1LimBKvDpBbeX+qW7T240WEyw+DBVpDotZB4JYm8Aps=", + "ref": "refs/heads/main", + "rev": "3c895da64b0eb19870142196fa48c07090b441c4", + "revCount": 70, + "type": "git", + "url": "https://code.hyprland.org/hyprwm/hyprutils.git" + }, + "original": { + "rev": "3c895da64b0eb19870142196fa48c07090b441c4", + "type": "git", + "url": "https://code.hyprland.org/hyprwm/hyprutils.git" + } + }, "hyprwayland-scanner": { "inputs": { "nixpkgs": [ @@ -598,6 +701,31 @@ "type": "github" } }, + "hyprwayland-scanner_2": { + "inputs": { + "nixpkgs": [ + "hyprlock", + "nixpkgs" + ], + "systems": [ + "hyprlock", + "systems" + ] + }, + "locked": { + "lastModified": 1735493474, + "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "jovian": { "inputs": { "nix-github-actions": "nix-github-actions", @@ -607,11 +735,11 @@ ] }, "locked": { - "lastModified": 1736409493, - "narHash": "sha256-XezBEaGENmXgndx2gsVxQ0JoHUeQs9OSUZvVx/GDqyQ=", + "lastModified": 1737007397, + "narHash": "sha256-uJ7Lk0moWSn8Tr0QkUbOCWR7WrhiLeha4E00rckhl8I=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "9a958cc0aa5241ea3badf44a063a4b0389dc0110", + "rev": "6bbb19666e753c18ef8af35f590cbc3ba42dd0ca", "type": "github" }, "original": { @@ -699,11 +827,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736344531, - "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", + "lastModified": 1736883708, + "narHash": "sha256-uQ+NQ0/xYU0N1CnXsa2zghgNaOPxWpMJXSUJJ9W7140=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", + "rev": "eb62e6aa39ea67e0b8018ba8ea077efe65807dc8", "type": "github" }, "original": { @@ -747,11 +875,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1736200483, - "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=", + "lastModified": 1736916166, + "narHash": "sha256-puPDoVKxkuNmYIGMpMQiK8bEjaACcCksolsG36gdaNQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751", + "rev": "e24b4c09e963677b1beea49d411cd315a024ad3a", "type": "github" }, "original": { @@ -779,11 +907,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1736200483, - "narHash": "sha256-JO+lFN2HsCwSLMUWXHeOad6QUxOuwe9UOAF/iSl1J4I=", + "lastModified": 1736916166, + "narHash": "sha256-puPDoVKxkuNmYIGMpMQiK8bEjaACcCksolsG36gdaNQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3f0a8ac25fb674611b98089ca3a5dd6480175751", + "rev": "e24b4c09e963677b1beea49d411cd315a024ad3a", "type": "github" }, "original": { @@ -794,11 +922,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1736344531, - "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", + "lastModified": 1737062831, + "narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", + "rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c", "type": "github" }, "original": { @@ -825,11 +953,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1735648875, - "narHash": "sha256-fQ4k/hyQiH9RRPznztsA9kbcDajvwV1sRm01el6Sr3c=", + "lastModified": 1736798957, + "narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "47e29c20abef74c45322eca25ca1550cdf5c3b50", + "rev": "9abb87b552b7f55ac8916b6fc9e5cb486656a2f3", "type": "github" }, "original": { @@ -909,6 +1037,8 @@ "home-manager-stable": "home-manager-stable", "home-manager-unstable": "home-manager-unstable", "hyprland": "hyprland", + "hyprlock": "hyprlock", + "hyprutils": "hyprutils", "nix-on-droid": "nix-on-droid", "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_3", @@ -916,16 +1046,33 @@ "stylix": "stylix" } }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1736970696, + "narHash": "sha256-WP5yBCVkidEf5y3kCaUSjRd0udpAE6nmY3MMx3Q2aNo=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "7d337c7f350a163ac3a9bd4ce0c4dae2df20579b", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, "rust-overlay": { "inputs": { "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1736572187, - "narHash": "sha256-it8mU8UkbaeVup7GpCI6n2cWPJ/O4U980CxKAMKUGF0=", + "lastModified": 1737080704, + "narHash": "sha256-n+J2h9GM9ZpFOQUmtZoCr1+DFF/iO5UlmLJeHIxbZGY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "06871d5c5f78b0ae846c5758702531b4cabfab9b", + "rev": "f9953fe89f8b65401fc4d4a288940bc2cb072949", "type": "github" }, "original": { @@ -963,18 +1110,18 @@ "gnome-shell": "gnome-shell", "home-manager": "home-manager_2", "nixpkgs": "nixpkgs_4", - "systems": "systems_2", + "systems": "systems_4", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-tmux": "tinted-tmux", "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1736530113, - "narHash": "sha256-a+IUtGdzESNSQEZkW99TXf5js8o4Oy9M4H2am+2ECp4=", + "lastModified": 1736993991, + "narHash": "sha256-kPDt3QgeIsct9f375LIGmSoZKl7Z4AVzXX+9U0VV5PI=", "owner": "danth", "repo": "stylix", - "rev": "f1e003194cb528bbd4eda50b781d1f703611782d", + "rev": "a88c4d264a4379b7fe5a9e75ed51bea96f8dd407", "type": "github" }, "original": { @@ -999,6 +1146,36 @@ } }, "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_4": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1050,11 +1227,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1729501581, - "narHash": "sha256-1ohEFMC23elnl39kxWnjzH1l2DFWWx4DhFNNYDTYt54=", + "lastModified": 1735737224, + "narHash": "sha256-FO2hRBkZsjlIRqzNHCPc/52yxg11kHGA8MEtSun9RwE=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "f0e7f7974a6441033eb0a172a0342e96722b4f14", + "rev": "aead506a9930c717ebf81cc83a2126e9ca08fa64", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 633a3a6..5586488 100644 --- a/flake.nix +++ b/flake.nix @@ -216,6 +216,22 @@ submodules = true; rev = "3fb47372b79265ebdabeeefdad10359d5b18377a"; #v0.45.0 inputs.nixpkgs.follows = "nixpkgs"; + inputs.hyprutils.follows = "hyprutils"; + }; + + hyprutils = { + type = "git"; + url = "https://code.hyprland.org/hyprwm/hyprutils.git"; + rev = "3c895da64b0eb19870142196fa48c07090b441c4"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + hyprlock = { + type = "git"; + url = "https://code.hyprland.org/hyprwm/hyprlock.git"; + rev = "3d63d9b129d5def270bc8a2471347e6f97274e2b"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.hyprutils.follows = "hyprutils"; }; stylix.url = "github:danth/stylix"; diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index be38283..913c6f8 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -450,8 +450,7 @@ in wl-clipboard hyprland-protocols hyprpicker - #inputs.hyprlock.packages.${pkgs.system}.default - hyprlock + inputs.hyprlock.packages.${pkgs.system}.default hypridle hyprpaper fnott From bd8132c5cebbe67279f26202e0ebb75423633e06 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 18 Jan 2025 11:23:30 -0600 Subject: [PATCH 093/317] Emacs daemon is fixed now --- user/wm/hyprland/hyprland.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 913c6f8..9f39fc9 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -59,7 +59,7 @@ in exec-once = GOMAXPROCS=1 syncthing --no-browser exec-once = protonmail-bridge --noninteractive exec-once = waybar - #exec-once = emacs --daemon + exec-once = emacs --daemon exec-once = hypridle exec-once = sleep 5 && libinput-gestures From e1d290775f7445d432dbbf3c08d09552e6a6bcc7 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 18 Jan 2025 11:37:24 -0600 Subject: [PATCH 094/317] No longer use logseq --- profiles/work/configuration.nix | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/profiles/work/configuration.nix b/profiles/work/configuration.nix index 4fbe911..383eda1 100644 --- a/profiles/work/configuration.nix +++ b/profiles/work/configuration.nix @@ -48,28 +48,6 @@ ]; }; - nixpkgs.overlays = [ - ( - final: prev: { - logseq = prev.logseq.overrideAttrs (oldAttrs: { - postFixup = '' - makeWrapper ${prev.electron_27}/bin/electron $out/bin/${oldAttrs.pname} \ - --set "LOCAL_GIT_DIRECTORY" ${prev.git} \ - --add-flags $out/share/${oldAttrs.pname}/resources/app \ - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \ - --prefix LD_LIBRARY_PATH : "${prev.lib.makeLibraryPath [ prev.stdenv.cc.cc.lib ]}" - ''; - }); - } - ) - ]; - - - # logseq - nixpkgs.config.permittedInsecurePackages = [ - "electron-27.3.11" - ]; - # wheel group gets trusted access to nix daemon nix.settings.trusted-users = [ "@wheel" ]; @@ -138,7 +116,6 @@ # System packages environment.systemPackages = with pkgs; [ vim - logseq wget zsh git From ab494a2590f2370a3eea8e48519e25d24ba3e851 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 18 Jan 2025 13:39:29 -0600 Subject: [PATCH 095/317] nix lsp server --- user/app/emacs/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 1ebcd78..a8cae2b 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -31,6 +31,7 @@ }) fira-code nerd-fonts.fira-code + nil ]; home.file.".config/emacs/init.el".source = ./init.el; home.file.".config/emacs/themes/doom-stylix-theme.el".source = config.lib.stylix.colors { From 4f957088296cfd086dca99ce86bc287e100309e1 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 18 Jan 2025 13:39:38 -0600 Subject: [PATCH 096/317] Trying to fix usb hub lag --- system/hardware-configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/hardware-configuration.nix b/system/hardware-configuration.nix index 45d46f5..60dac6f 100644 --- a/system/hardware-configuration.nix +++ b/system/hardware-configuration.nix @@ -14,7 +14,7 @@ boot.initrd.kernelModules = [ "radeon" ]; boot.kernelModules = [ "kvm-amd" "radeon" "zenpower" "8812au" ]; boot.blacklistedKernelModules = [ "k10temp" ]; - boot.kernelParams = [ "amd_pstate=active" ]; + boot.kernelParams = [ "amd_pstate=active" "acpi_osi=Linux" "acpi_wake=USB0" ]; boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower rtl8812au ]; hardware.opengl.extraPackages = [ pkgs.rocmPackages.clr.icd ]; hardware.opengl.extraPackages32 = [ ]; From 99f32b0d1dd39ffb3d622a5f1cac1a9527144eb2 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 18 Jan 2025 22:59:30 -0600 Subject: [PATCH 097/317] overhaul of emacs config with only use-package --- user/app/emacs/default.nix | 3 +- user/app/emacs/init.el | 644 +++++++++--------- .../emacs/lib/line-wrapping-and-numbers.el | 55 ++ 3 files changed, 376 insertions(+), 326 deletions(-) create mode 100644 user/app/emacs/lib/line-wrapping-and-numbers.el diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index a8cae2b..7ab3167 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -4,7 +4,7 @@ (pkgs.emacsWithPackagesFromUsePackage { config = ./init.el; package = pkgs.emacs-pgtk; - alwaysEnsure = true; + alwaysEnsure = false; extraEmacsPackages = epkgs: with epkgs; [ org-modern olivetti command-log-mode @@ -17,6 +17,7 @@ projectile treemacs treemacs-projectile treemacs-evil treemacs-nerd-icons treesit-grammars.with-all-grammars + git-timemachine wgrep magit magit-file-icons magit-todos undo-fu undo-fu-session org-roam org-node org-node-fakeroam diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index ebd9145..4b9a22d 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -2,7 +2,9 @@ ;; ;; Author: Emmet K ;; Maintainer: Emmet K -;; Source: https://github.com/doomemacs/themes +;; Source: https://github.com/librephoenix/nixos-config +;; Source: https://gitlab.com/librephoenix/nixos-config +;; Source: https://codeberg.org/librephoenix/nixos-config ;; ;;; Commentary: ;; @@ -10,130 +12,146 @@ ;; ;;; Code: -;; Startup hook for mainly gui related things -(add-hook 'emacs-startup-hook #'(lambda () - ;; No startup screen - (setq inhibit-startup-message t) +;; organize everything with use-package +(require 'use-package) - ;; Transparent background - (set-frame-parameter nil 'alpha-background 85) - (add-to-list 'default-frame-alist '(alpha-background . 85)) - (add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) +;; use-package-ception +(use-package use-package + :demand t + :custom + (use-package-always-ensure nil) + (usepackage-always-defer t)) - ;; I want declarative config, no custom - (setq custom-file "/dev/null") +(use-package emacs + :config + ;; No startup screen + (setq inhibit-startup-message t) + + ;; Transparent background + (set-frame-parameter nil 'alpha-background 85) + (add-to-list 'default-frame-alist '(alpha-background . 85)) + (add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) + + ;; I want declarative config, no custom + (setq custom-file "/dev/null") + + ;; Disable the menu bar + (menu-bar-mode -1) + + ;; Disable visible scrollbar + (scroll-bar-mode -1) + + ;; Disable the toolbar + (tool-bar-mode -1) + + ;; Disable tooltips + (tooltip-mode -1) + + ;; Breathing room + (set-fringe-mode 10) + + ;; No blinking + (blink-cursor-mode 0) + + ;; Highlight current line + (global-hl-line-mode) + + ;; Bigger text + (set-face-attribute 'default nil :height 150) - ;; Disable the menu bar - (menu-bar-mode -1) + ;; Add frame borders and window dividers + (modify-all-frames-parameters + '((right-divider-width . 20) + (left-divider-width . 20) + (internal-border-width . 20))) + (set-face-background 'fringe (face-attribute 'default :background)) + + ;; Fira and glyphs + (when (window-system) + (set-frame-font "FiraCode Nerd Font")) + (let ((alist '((33 . ".\\(?:\\(?:==\\|!!\\)\\|[!=]\\)") + (35 . ".\\(?:###\\|##\\|_(\\|[#(?[_{]\\)") + (36 . ".\\(?:>\\)") + (37 . ".\\(?:\\(?:%%\\)\\|%\\)") + (38 . ".\\(?:\\(?:&&\\)\\|&\\)") + (42 . ".\\(?:\\(?:\\*\\*/\\)\\|\\(?:\\*[*/]\\)\\|[*/>]\\)") + (43 . ".\\(?:\\(?:\\+\\+\\)\\|[+>]\\)") + (45 . ".\\(?:\\(?:-[>-]\\|<<\\|>>\\)\\|[<>}~-]\\)") + (46 . ".\\(?:\\(?:\\.[.<]\\)\\|[.=-]\\)") + (47 . ".\\(?:\\(?:\\*\\*\\|//\\|==\\)\\|[*/=>]\\)") + (48 . ".\\(?:x[a-zA-Z]\\)") + (58 . ".\\(?:::\\|[:=]\\)") + (59 . ".\\(?:;;\\|;\\)") + (60 . ".\\(?:\\(?:!--\\)\\|\\(?:~~\\|->\\|\\$>\\|\\*>\\|\\+>\\|--\\|<[<=-]\\|=[<=>]\\||>\\)\\|[*$+~/<=>|-]\\)") + (61 . ".\\(?:\\(?:/=\\|:=\\|<<\\|=[=>]\\|>>\\)\\|[<=>~]\\)") + (62 . ".\\(?:\\(?:=>\\|>[=>-]\\)\\|[=>-]\\)") + (63 . ".\\(?:\\(\\?\\?\\)\\|[:=?]\\)") + (91 . ".\\(?:]\\)") + (92 . ".\\(?:\\(?:\\\\\\\\\\)\\|\\\\\\)") + (94 . ".\\(?:=\\)") + (119 . ".\\(?:ww\\)") + (123 . ".\\(?:-\\)") + (124 . ".\\(?:\\(?:|[=|]\\)\\|[=>|]\\)") + (126 . ".\\(?:~>\\|~~\\|[>=@~-]\\)") + ))) + (dolist (char-regexp alist) + (set-char-table-range composition-function-table (car char-regexp) + `([,(cdr char-regexp) 0 font-shape-gstring])))) - ;; Disable visible scrollbar - (scroll-bar-mode -1) + (dashboard-setup-startup-hook) - ;; Disable the toolbar - (tool-bar-mode -1) - - ;; Disable tooltips - (tooltip-mode -1) - - ;; Breathing room - (set-fringe-mode 10) - - ;; No blinking - (blink-cursor-mode 0) - - ;; Highlight current line - (global-hl-line-mode) - - ;; Bigger text - (set-face-attribute 'default nil :height 150) - - ;; Fira and glyphs - (when (window-system) - (set-frame-font "FiraCode Nerd Font")) - (let ((alist '((33 . ".\\(?:\\(?:==\\|!!\\)\\|[!=]\\)") - (35 . ".\\(?:###\\|##\\|_(\\|[#(?[_{]\\)") - (36 . ".\\(?:>\\)") - (37 . ".\\(?:\\(?:%%\\)\\|%\\)") - (38 . ".\\(?:\\(?:&&\\)\\|&\\)") - (42 . ".\\(?:\\(?:\\*\\*/\\)\\|\\(?:\\*[*/]\\)\\|[*/>]\\)") - (43 . ".\\(?:\\(?:\\+\\+\\)\\|[+>]\\)") - (45 . ".\\(?:\\(?:-[>-]\\|<<\\|>>\\)\\|[<>}~-]\\)") - (46 . ".\\(?:\\(?:\\.[.<]\\)\\|[.=-]\\)") - (47 . ".\\(?:\\(?:\\*\\*\\|//\\|==\\)\\|[*/=>]\\)") - (48 . ".\\(?:x[a-zA-Z]\\)") - (58 . ".\\(?:::\\|[:=]\\)") - (59 . ".\\(?:;;\\|;\\)") - (60 . ".\\(?:\\(?:!--\\)\\|\\(?:~~\\|->\\|\\$>\\|\\*>\\|\\+>\\|--\\|<[<=-]\\|=[<=>]\\||>\\)\\|[*$+~/<=>|-]\\)") - (61 . ".\\(?:\\(?:/=\\|:=\\|<<\\|=[=>]\\|>>\\)\\|[<=>~]\\)") - (62 . ".\\(?:\\(?:=>\\|>[=>-]\\)\\|[=>-]\\)") - (63 . ".\\(?:\\(\\?\\?\\)\\|[:=?]\\)") - (91 . ".\\(?:]\\)") - (92 . ".\\(?:\\(?:\\\\\\\\\\)\\|\\\\\\)") - (94 . ".\\(?:=\\)") - (119 . ".\\(?:ww\\)") - (123 . ".\\(?:-\\)") - (124 . ".\\(?:\\(?:|[=|]\\)\\|[=>|]\\)") - (126 . ".\\(?:~>\\|~~\\|[>=@~-]\\)") - ))) - (dolist (char-regexp alist) - (set-char-table-range composition-function-table (car char-regexp) - `([,(cdr char-regexp) 0 font-shape-gstring]))) - - (dashboard-setup-startup-hook)) - - - - )) - - -(add-hook 'after-init-hook #'(lambda () - ;; Garbage collection threshold - (setq gc-cons-threshold 120000) - (add-hook 'focus-out-hook 'garbage-collect) - - ;; Auto revert - (global-auto-revert-mode 1) - (setq auto-revert-use-notify t - revert-without-query t) - - ;; camelCase and PascalCase - (global-subword-mode 1) - - ;; ripgrep as grep - (setq grep-command "rg -nS --no-heading " - grep-use-null-device nil) - - ;; "y" or "n" instead of "yes" or "no" - (setq use-short-answers t) - - ;; Enable indentation+completion using TAB - (setq tab-always-indent 'complete) - - ;; Make ESC quit prompts - (global-set-key (kbd "") 'keyboard-escape-quit) - - ;; Mouse & Smooth Scroll - (setq scroll-step 1 - scroll-margin 0 - scroll-conservatively 101 - scroll-preserve-screen-position nil - redisplay-skip-fontification-on-input t) - (pixel-scroll-precision-mode 1) - - (require 'ultra-scroll) - (ultra-scroll-mode 1) - - ;; Line numbers - (setq display-line-numbers-type t - line-move-visual t) - (add-hook 'prog-mode-hook 'display-line-numbers-mode) - - ;; Fix stupid backup confirmations - (setq backup-directory-alist '("." "~/.emacs.d/cache/backups")) - (setq tramp-auto-save-directory "/dev/null"))) + ;; Garbage collection threshold + (setq gc-cons-threshold 120000) + (add-hook 'focus-out-hook 'garbage-collect) + + ;; Auto revert + (global-auto-revert-mode 1) + (setq auto-revert-use-notify t + revert-without-query t) + + ;; camelCase and PascalCase + (global-subword-mode 1) + + ;; ripgrep as grep + (setq grep-command "rg -nS --no-heading " + grep-use-null-device nil) + + ;; "y" or "n" instead of "yes" or "no" + (setq use-short-answers t) + + ;; Enable indentation+completion using TAB + (setq tab-always-indent 'complete) + + ;; Make ESC quit prompts + (global-set-key (kbd "") 'keyboard-escape-quit) + + ;; Line numbers + (setq display-line-numbers-type t + line-move-visual t) + (add-hook 'prog-mode-hook 'display-line-numbers-mode) + + ;; Fix stupid backup confirmations + (setq backup-directory-alist '("." "~/.emacs.d/cache/backups")) + (setq tramp-auto-save-directory "/dev/null")) ;; Packages +(use-package line-wrapping-and-numbers + :load-path "./lib" + :after (org markdown git-timemachine)) + +(use-package ultra-scroll + :init + ;; Mouse & Smooth Scroll + (setq scroll-step 1 + scroll-margin 0 + scroll-conservatively 101 + scroll-preserve-screen-position nil + redisplay-skip-fontification-on-input t) + (pixel-scroll-precision-mode 1) + :config + (ultra-scroll-mode 1)) + ;; Magit (use-package magit :config @@ -141,25 +159,44 @@ (setq magit-bury-buffer-function 'magit-restore-window-configuration) (add-hook 'git-commit-mode-hook 'evil-insert-state)) +(use-package git-timemachine) + +(use-package magit-file-icons + :after (magit nerd-icons) + :init + (magit-file-icons-mode 1) + :custom + (magit-file-icons-enable-diff-file-section-icons t) + (magit-file-icons-enable-untracked-icons t) + (magit-file-icons-enable-diffstat-icons t)) + +(use-package magit-todos + :after (magit) + :config + (setq magit-todos-keywords-list '("TODO" "FIXME" "HACK" "REVIEW" "DEPRECATED" "BUG")) + (setq magit-todos-keyword-suffix "\\(?:[([][^])]+[])]\\)?.") + (magit-todos-mode 1)) + ;; Projectile (use-package projectile :init (projectile-mode +1)) -;; Enable vim -(setq evil-want-keybinding nil) - -(use-package undo-fu - :ensure t) +;; Being able to undo is nice... +(use-package undo-fu) (use-package undo-fu-session - :ensure t + :after undo-fu :config (global-undo-fu-session-mode)) +;; Muahahahahaha.. (use-package evil - :init - (setq evil-want-keybinding nil) + :after (undo-fu undo-fu-session) + :custom + (evil-want-keybinding nil) + (evil-respect-visual-line-mode t) + (evil-undo-system 'undo-fu) :config (evil-set-leader nil (kbd "C-SPC")) (evil-set-leader 'normal (kbd "SPC")) @@ -167,31 +204,27 @@ (setq evil-respect-visual-line-mode t) (setq evil-undo-system 'undo-fu) (setq evil-redo-function 'undo-fu-only-redo) + (define-key evil-motion-state-map (kbd "RET") nil) (evil-mode 1)) -(with-eval-after-load 'evil-maps - (define-key evil-motion-state-map (kbd "RET") nil)) - -(with-eval-after-load 'org - (setq org-return-follows-link t) - (setf (cdr (assoc 'file org-link-frame-setup)) 'find-file)) - (use-package evil-collection - :init - (setq evil-want-keybinding nil) + :after (evil) + :custom + (evil-want-keybinding nil) :config (evil-collection-init) - ;; Visual mode keybinds + ;; Visual mode keybinds (evil-define-key 'motion 'global (kbd "j") 'evil-next-visual-line) (evil-define-key 'motion 'global (kbd "k") 'evil-previous-visual-line) - ;; File and buffer keybinds + ;; File and buffer keybinds (evil-define-key 'motion 'global (kbd ".") 'find-file) (evil-define-key 'motion 'global (kbd "bi") 'ibuffer) (evil-define-key 'motion 'global (kbd "bd") 'evil-delete-buffer) (evil-define-key 'motion 'global (kbd "bn") 'next-buffer) (evil-define-key 'motion 'global (kbd "bp") 'previous-buffer) + ;; based on http://emacsredux.com/blog/2013/04/03/delete-file-and-buffer/ (defun delete-file-and-buffer () "Kill the current buffer and deletes the file it is visiting." @@ -206,20 +239,21 @@ (message "Not a file visiting buffer!")))) (evil-define-key 'motion 'global (kbd "fd") 'delete-file-and-buffer) - ;; Project keybinds + ;; Project keybinds (evil-define-key 'motion 'global (kbd "pp") 'projectile-switch-project) (evil-define-key 'motion 'global (kbd "pf") 'projectile-find-file) (evil-define-key 'motion 'global (kbd "pa") 'projectile-add-known-project) (evil-define-key 'motion 'global (kbd "/") 'projectile-grep) (evil-define-key 'motion 'global (kbd "gg") 'magit-status) + (evil-define-key 'motion 'global (kbd "gt") 'git-timemachine-toggle) - ;; Describe keybinds + ;; Describe keybinds (evil-define-key 'motion 'global (kbd "hv") 'describe-variable) (evil-define-key 'motion 'global (kbd "hf") 'describe-function) (evil-define-key 'motion 'global (kbd "hk") 'describe-key) (evil-define-key 'motion 'global (kbd "hF") 'describe-face) - ;; Window keybinds + ;; Window keybinds (evil-define-key 'motion 'global (kbd "ws") 'evil-window-split) (evil-define-key 'motion 'global (kbd "wv") 'evil-window-vsplit) (defun evil-window-split-follow () @@ -239,7 +273,8 @@ (evil-define-key 'motion 'global (kbd "wh") 'evil-window-left) (evil-define-key 'motion 'global (kbd "wl") 'evil-window-right) - + (evil-define-key 'insert org-mode-map (kbd "") 'org-demote-subtree) + (evil-define-key 'insert org-mode-map (kbd "") 'org-promote-subtree) (evil-define-key 'motion org-mode-map (kbd "mll") 'org-insert-link) (define-key magit-mode-map (kbd "SPC") nil) @@ -248,17 +283,16 @@ (global-set-key (kbd "C-h") 'evil-window-left) (global-set-key (kbd "C-l") 'evil-window-right)) -(require 'sudo-edit) -(setq sudo-edit-local-method "doas") -(setq auth-sources '("~/.authinfo.gpg")) -(setq auth-source-save-behavior "ask") -(sudo-edit-indicator-mode) -(evil-define-key 'normal 'global (kbd "fU") 'sudo-edit) -(evil-define-key 'normal 'global (kbd "fu") 'sudo-edit-find-file) - -(require 'lsp-mode) -(add-hook 'gdscript-ts-mode-hook #'lsp-deferred) -(setq lsp-completion-provider :none) +(use-package sudo-edit + :after (evil) + :custom + (sudo-edit-local-method "doas") + (auth-sources '("~/.authinfo.gpg")) + (auth-source-save-behavior "ask") + :config + (sudo-edit-indicator-mode) + (evil-define-key 'normal 'global (kbd "fU") 'sudo-edit) + (evil-define-key 'normal 'global (kbd "fu") 'sudo-edit-find-file)) (use-package flycheck :init @@ -266,22 +300,40 @@ (use-package treemacs :config - (add-hook 'projectile-after-switch-project-hook 'treemacs-add-and-display-current-project-exclusively)) + (defun treemacs-display-current-project-exclusively-silently () + "Display current project exclusively in treemacs without switching to treemacs buffer." + (let ((buffer (current-buffer))) + (treemacs-add-and-display-current-project-exclusively) + (switch-to-buffer buffer))) + (add-hook 'projectile-after-switch-project-hook 'treemacs-display-current-project-exclusively-silently)) -(use-package treemacs-evil) +(use-package treemacs-evil + :after (treemacs)) (use-package lsp-mode - :init - ;; set prefix for lsp-command-keymap (few alternatives - "C-l", "C-c l") - (setq lsp-keymap-prefix (kbd "SPC l")) - :hook (;; replace XXX-mode with concrete major-mode(e. g. python-mode) - (gdscript-mode . lsp) - (gdscript-ts-mode . lsp)) + :custom + (lsp-keymap-prefix (kbd "SPC l")) + (setq lsp-completion-provider :none) + :hook ((gdscript-mode . lsp-deferred) + (gdscript-ts-mode . lsp-deferred)) :commands lsp-deferred) (use-package lsp-ui :commands lsp-ui-mode) (use-package lsp-treemacs :commands lsp-treemacs-errors-list) +(use-package treesit + :config + (treesit-major-mode-setup)) + +;; direnv +(use-package direnv + :init + (direnv-mode)) + +;; command-log-mode +(use-package command-log-mode) + +;; Enable corfu (use-package corfu :custom (corfu-cycle t) ;; Enable cycling for `corfu-next/previous' @@ -299,54 +351,63 @@ :init (global-corfu-mode 1)) -;; I am a nerd -(use-package nerd-icons - :ensure t - :config - (require 'treemacs-nerd-icons) - (treemacs-load-theme "nerd-icons") - (require 'nerd-icons-dired) - (add-hook 'dired-mode-hook #'nerd-icons-dired-mode) - (require 'nerd-icons-completion) - (nerd-icons-completion-mode) - (require 'nerd-icons-corfu) - (add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter)) - -(use-package magit-file-icons - :ensure t - :after magit - :init - (magit-file-icons-mode 1) +;; Enable vertico +(use-package vertico :custom - ;; These are the default values: - (magit-file-icons-enable-diff-file-section-icons t) - (magit-file-icons-enable-untracked-icons t) - (magit-file-icons-enable-diffstat-icons t)) + (vertico-scroll-margin 0) ;; Different scroll margin + (vertico-count 20) ;; Show more candidates + (vertico-resize nil) ;; Grow and shrink the Vertico minibuffer + (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' + :init + (vertico-mode)) -(use-package magit-todos - :ensure t +;; I am a nerd +(use-package nerd-icons) + +(use-package treemacs-nerd-icons + :after (nerd-icons treemacs) :config - (setq magit-todos-keywords-list '("TODO" "FIXME" "HACK" "REVIEW" "DEPRECATED" "BUG")) - (setq magit-todos-keyword-suffix "\\(?:[([][^])]+[])]\\)?.") - (magit-todos-mode 1)) + (treemacs-load-theme "nerd-icons")) + +(use-package nerd-icons-dired + :after (nerd-icons dired) + :config + (add-hook 'dired-mode-hook #'nerd-icons-dired-mode)) + +(use-package nerd-icons-completion + :after (nerd-icons) + :config + (nerd-icons-completion-mode)) + +(use-package nerd-icons-corfu + :after (nerd-icons corfu) + :config + (add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter)) ;; Theme and modeline (use-package doom-themes - :ensure t :config (setq doom-themes-enable-bold t doom-themes-enable-italic t custom-theme-directory "~/.config/emacs/themes") - (load-theme 'doom-stylix t)) + (load-theme 'doom-stylix t) + ;; Heading styles + (set-face-attribute 'outline-1 nil :height 195 :foreground (nth 1 (nth 14 doom-themes--colors))) + (set-face-attribute 'outline-2 nil :height 188 :foreground (nth 1 (nth 15 doom-themes--colors))) + (set-face-attribute 'outline-3 nil :height 180 :foreground (nth 1 (nth 19 doom-themes--colors))) + (set-face-attribute 'outline-4 nil :height 173 :foreground (nth 1 (nth 23 doom-themes--colors))) + (set-face-attribute 'outline-5 nil :height 173 :foreground (nth 1 (nth 24 doom-themes--colors))) + (set-face-attribute 'outline-6 nil :height 165 :foreground (nth 1 (nth 16 doom-themes--colors))) + (set-face-attribute 'outline-7 nil :height 160 :foreground (nth 1 (nth 18 doom-themes--colors))) + (set-face-attribute 'outline-8 nil :height 155 :foreground (nth 1 (nth 11 doom-themes--colors)))) (use-package doom-modeline - :ensure t :init (doom-modeline-mode 1) :custom ((doom-modeline-height 15))) ;; Dashboard (use-package dashboard - :ensure t + :after (nerd-icons) :config (setq dashboard-banner-logo-title "Welcome to Nix Emacs") (setq dashboard-startup-banner 2) @@ -373,33 +434,7 @@ :face 'font-lock-keyword-face)) (setq initial-buffer-choice (lambda () (get-buffer-create dashboard-buffer-name)))) -;; Setup treesitter -(require 'treesit) -(treesit-major-mode-setup) - -;; use-package -(require 'use-package) -(setq use-package-always-ensure t) - -;; direnv -(use-package direnv - :config - (direnv-mode)) - -;; command-log-mode -(use-package command-log-mode) - -;; Enable vertico -(use-package vertico - :custom - (vertico-scroll-margin 0) ;; Different scroll margin - (vertico-count 20) ;; Show more candidates - (vertico-resize nil) ;; Grow and shrink the Vertico minibuffer - (vertico-cycle t) ;; Enable cycling for `vertico-next/previous' - :init - (vertico-mode)) - -;; Shackle +;; Window management with shackle ;; https://github.com/wasamasa/shackle (use-package shackle :config @@ -417,7 +452,7 @@ ("*Shell Command Output*" :select nil ) ("\\*Async Shell.*\\*" :regexp t :ignore t ) (occur-mode :select nil :align t ) - ("*Help*" :select t :inhibit-window-quit t :size 0.3 :align below ) + ("*Help*" :select t :inhibit-window-quit nil :size 0.3 :align below ) ("*Completions*" :size 0.3 :align t ) ("*Messages*" :select nil :inhibit-window-quit t :other t ) ("\\*[Wo]*Man.*\\*" :regexp t :select t :inhibit-window-quit t :other t ) @@ -435,50 +470,50 @@ (use-package orderless) (setq completion-styles '(orderless flex hotfuzz)) -;; Org mode config -(require 'org) - -;; Better cycling -;; https://github.com/doomemacs/doomemacs/blob/master/modules/lang/org/autoload/org.el -(defun +org-cycle-only-current-subtree-h (&optional arg) - "Toggle the local fold at the point, and no deeper. -`org-cycle's standard behavior is to cycle between three levels: collapsed, -subtree and whole document. This is slow, especially in larger org buffer. Most -of the time I just want to peek into the current subtree -- at most, expand -*only* the current subtree. - -All my (performant) foldings needs are met between this and `org-show-subtree' -(on zO for evil users), and `org-cycle' on shift-TAB if I need it." - (interactive "P") - (unless (or (eq this-command 'org-shifttab) - (and (bound-and-true-p org-cdlatex-mode) - (or (org-inside-LaTeX-fragment-p) - (org-inside-latex-macro-p)))) - (save-excursion - (org-beginning-of-line) - (let (invisible-p) - (when (and (org-at-heading-p) - (or org-cycle-open-archived-trees - (not (member org-archive-tag (org-get-tags)))) - (or (not arg) - (setq invisible-p - (memq (get-char-property (line-end-position) - 'invisible) - '(outline org-fold-outline))))) - (unless invisible-p - (setq org-cycle-subtree-status 'subtree)) - (org-cycle-internal-local) - t))))) -(defalias #'+org/toggle-fold #'+org-cycle-only-current-subtree-h) -(add-hook 'org-tab-first-hook - ;; Only fold the current tree, rather than recursively - #'+org-cycle-only-current-subtree-h) - -(evil-define-key 'insert 'org-mode-map (kbd "") 'org-demote-subtree) -(evil-define-key 'insert 'org-mode-map (kbd "") 'org-promote-subtree) +(use-package org + :config + ;; Better cycling + ;; https://github.com/doomemacs/doomemacs/blob/master/modules/lang/org/autoload/org.el + (defun +org-cycle-only-current-subtree-h (&optional arg) + "Toggle the local fold at the point, and no deeper. + `org-cycle's standard behavior is to cycle between three levels: collapsed, + subtree and whole document. This is slow, especially in larger org buffer. Most + of the time I just want to peek into the current subtree -- at most, expand + *only* the current subtree. + + All my (performant) foldings needs are met between this and `org-show-subtree' + (on zO for evil users), and `org-cycle' on shift-TAB if I need it." + (interactive "P") + (unless (or (eq this-command 'org-shifttab) + (and (bound-and-true-p org-cdlatex-mode) + (or (org-inside-LaTeX-fragment-p) + (org-inside-latex-macro-p)))) + (save-excursion + (org-beginning-of-line) + (let (invisible-p) + (when (and (org-at-heading-p) + (or org-cycle-open-archived-trees + (not (member org-archive-tag (org-get-tags)))) + (or (not arg) + (setq invisible-p + (memq (get-char-property (line-end-position) + 'invisible) + '(outline org-fold-outline))))) + (unless invisible-p + (setq org-cycle-subtree-status 'subtree)) + (org-cycle-internal-local) + t))))) + (defalias #'+org/toggle-fold #'+org-cycle-only-current-subtree-h) + (add-hook 'org-mode-hook 'org-indent-mode) + (add-hook 'org-tab-first-hook + ;; Only fold the current tree, rather than recursively + #'+org-cycle-only-current-subtree-h) + + (setq org-return-follows-link t) + (setf (cdr (assoc 'file org-link-frame-setup)) 'find-file))) (use-package org-roam - :ensure t + :after (org) :config (setq org-roam-directory (file-truename "~/Notes")) (setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag))) @@ -495,9 +530,8 @@ All my (performant) foldings needs are met between this and `org-show-subtree' ) (use-package org-node - :ensure t - :after org - :config + :after (org org-roam) + :config (setq org-node-extra-id-dirs '("~/Notes/")) (setq org-id-locations-file "~/Notes/.org-id-locations") (org-node-cache-mode) @@ -508,7 +542,7 @@ All my (performant) foldings needs are met between this and `org-show-subtree' ) (use-package org-node-fakeroam - :ensure t + :after (org org-node org-roam) :defer :config (setq org-node-creation-fn #'org-node-fakeroam-new-via-roam-capture) @@ -524,72 +558,32 @@ All my (performant) foldings needs are met between this and `org-show-subtree' ) (use-package wgrep - :ensure t - :after org-node) + :after (org-node)) -;; Line wrapping management -(defun truncate-lines-off () - (interactive) - (toggle-truncate-lines 0)) -(defun truncate-lines-on () - (interactive) - (toggle-truncate-lines 1)) -(defun visual-line-mode-off () - (interactive) - (visual-line-mode 0)) -(add-hook 'org-mode-hook 'org-indent-mode) -(add-hook 'org-mode-hook 'truncate-lines-off) -(add-hook 'markdown-mode-hook 'truncate-lines-off) -(add-hook 'org-mode-hook 'visual-line-mode) -(add-hook 'markdown-mode-hook 'visual-line-mode) -(add-hook 'prog-mode-hook 'truncate-lines-on) -(add-hook 'prog-mode-hook 'visual-line-mode-off) - -;; Heading styles -(set-face-attribute 'outline-1 nil :height 195 :foreground (nth 1 (nth 14 doom-themes--colors))) -(set-face-attribute 'outline-2 nil :height 188 :foreground (nth 1 (nth 15 doom-themes--colors))) -(set-face-attribute 'outline-3 nil :height 180 :foreground (nth 1 (nth 19 doom-themes--colors))) -(set-face-attribute 'outline-4 nil :height 173 :foreground (nth 1 (nth 23 doom-themes--colors))) -(set-face-attribute 'outline-5 nil :height 173 :foreground (nth 1 (nth 24 doom-themes--colors))) -(set-face-attribute 'outline-6 nil :height 165 :foreground (nth 1 (nth 16 doom-themes--colors))) -(set-face-attribute 'outline-7 nil :height 160 :foreground (nth 1 (nth 18 doom-themes--colors))) -(set-face-attribute 'outline-8 nil :height 155 :foreground (nth 1 (nth 11 doom-themes--colors))) - -(require 'org-modern) - -;; Add frame borders and window dividers -(modify-all-frames-parameters - '((right-divider-width . 20) - (left-divider-width . 20) - (internal-border-width . 20))) -(set-face-background 'fringe (face-attribute 'default :background)) - -(setq - ;; Edit settings - org-auto-align-tags nil - org-tags-column 0 - org-catch-invisible-edits 'show-and-error - org-special-ctrl-a/e t - org-insert-heading-respect-content t - - ;; Org styling, hide markup etc. - org-hide-emphasis-markers t - org-pretty-entities t) - -;; Ellipsis styling -(setq org-ellipsis "…") -(set-face-attribute 'org-ellipsis nil :inherit 'default :box nil) - -;; Star styling -(setq org-modern-star 'replace) - -(global-org-modern-mode) +(use-package org-modern + :mode ("\\.org\\'" . org-mode) + :custom + (org-auto-align-tags nil) + (org-tags-column 0) + (org-catch-invisible-edits 'show-and-error) + (org-special-ctrl-a/e t) + (org-insert-heading-respect-content t) + (org-hide-emphasis-markers t) + (org-pretty-entities t) + (org-ellipsis "...") + (org-modern-star 'replace) + :config + (set-face-attribute 'org-ellipsis nil :inherit 'default :box nil) + :init + (global-org-modern-mode)) ;; Olivetti (use-package olivetti + :commands (org-mode markdown-mode) + :custom + (olivetti-style 'fancy) + (olivetti-margin-width 100) :config - (setq olivetti-style 'fancy - olivetti-margin-width 100) (setq-default olivetti-body-width 100) (add-hook 'org-mode-hook 'olivetti-mode)) diff --git a/user/app/emacs/lib/line-wrapping-and-numbers.el b/user/app/emacs/lib/line-wrapping-and-numbers.el new file mode 100644 index 0000000..20b4c5c --- /dev/null +++ b/user/app/emacs/lib/line-wrapping-and-numbers.el @@ -0,0 +1,55 @@ +;;; line-wrapping-and-numbers.el --- basic line wrapping management library -*- lexical-binding: t; no-byte-compile: t; -*- +;; +;; Author: Emmet K +;; Maintainer: Emmet K +;; Source: https://github.com/librephoenix/nixos-config +;; Source: https://gitlab.com/librephoenix/nixos-config +;; Source: https://codeberg.org/librephoenix/nixos-config +;; +;;; Commentary: +;; +;; A basic line wrapping management library. +;; Turns on line wrapping for programming modes, +;; and turns it off for thinks like markdown and org. +;; +;;; Code: + +;; Line wrapping management +(defun truncate-lines-off () + "Stop truncating lines in current buffer." + (interactive) + (toggle-truncate-lines 0)) +(defun truncate-lines-on () + "Truncate lines in current buffer." + (interactive) + (toggle-truncate-lines 1)) +(defun visual-line-mode-off () + "Disable `visual-line-mode` in current buffer." + (interactive) + (visual-line-mode 0)) +(add-hook 'org-mode-hook 'truncate-lines-off) +(add-hook 'markdown-mode-hook 'truncate-lines-off) +(add-hook 'org-mode-hook 'visual-line-mode) +(add-hook 'markdown-mode-hook 'visual-line-mode) +(add-hook 'prog-mode-hook 'truncate-lines-on) +(add-hook 'prog-mode-hook 'visual-line-mode-off) +(defun apply-proper-line-wrapping () + "Apply proper line wrapping and visual line mode settings according to whether or not the current mode derives from `prog-mode`." + (if (derived-mode-p 'prog-mode) + (progn + (display-line-numbers-mode) + (truncate-lines-on) + (visual-line-mode-off) + (display-line-numbers-mode 1)) + (progn + (truncate-lines-off) + (visual-line-mode) + (display-line-numbers-mode 0)))) +(add-hook 'prog-mode-hook 'apply-proper-line-wrapping) +(add-hook 'org-mode-hook 'apply-proper-line-wrapping) +(if (featurep 'markdown-mode) + (add-hook 'markdown-mode-hook 'apply-proper-line-wrapping)) +(if (featurep 'git-timemachine) + (add-hook 'git-timemachine-mode-hook 'apply-proper-line-wrapping)) + +;;; line-wrapping.el ends here From ea1d540f8424ce93c2c7c886c8681fd468cca6ae Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 18 Jan 2025 23:01:24 -0600 Subject: [PATCH 098/317] unfinished work on making non-declarative configs more declarative :| --- profiles/work/home.nix | 1 + user/app/blender/applyprefs.py | 28 ++++++++++++++++++++++++++++ user/app/blender/default.nix | 13 +++++++++++++ user/wm/input/nihongo.nix | 24 ++++++++++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 user/app/blender/applyprefs.py create mode 100644 user/app/blender/default.nix diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 1d23c7a..3e7e085 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -15,6 +15,7 @@ ../../user/app/emacs # Emacs config that I'm currently rebuilding ../../user/app/ranger/ranger.nix # My ranger file manager config ../../user/app/git/git.nix # My git config + ../../user/app/blender # My blender config ../../user/app/keepass/keepass.nix # My password manager (./. + "../../../user/app/browser"+("/"+userSettings.browser)+".nix") # My default browser selected from flake ../../user/app/virtualization/virtualization.nix # Virtual machines diff --git a/user/app/blender/applyprefs.py b/user/app/blender/applyprefs.py new file mode 100644 index 0000000..f7405d0 --- /dev/null +++ b/user/app/blender/applyprefs.py @@ -0,0 +1,28 @@ +import os +import bpy + +# load prefs +prefs = bpy.context.preferences + +# ui +prefs.view.ui_scale = 1.2 +prefs.view.show_tooltips_python = True +prefs.view.render_display_type = 'SCREEN' +prefs.view.filebrowser_display_type = 'SCREEN' +prefs.view.gizmo_size_navigate_v3d = 50 + +# status bar +prefs.view.show_statusbar_stats = True +prefs.view.show_statusbar_scene_duration = True +prefs.view.show_statusbar_memory = True +prefs.view.show_statusbar_vram = True +prefs.view.color_picker_type = 'SQUARE_SV' + +# performance +prefs.system.viewport_aa = 'FXAA' + +# addons +bpy.ops.preferences.addon_enable(module="node_wrangler") +bpy.ops.preferences.addon_enable(module="rigify") +bpy.ops.preferences.addon_install(filepath=os.path.expanduser("~/.config/blender/extensions/node_pie.zip"),enable_on_install=True) +bpy.ops.extensions.package_install_files(filepath=os.path.expanduser("~/.config/blender/extensions/bool_tool.zip"),repo="user_default",enable_on_install=True) diff --git a/user/app/blender/default.nix b/user/app/blender/default.nix new file mode 100644 index 0000000..23fe930 --- /dev/null +++ b/user/app/blender/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + home.file.".config/blender/extensions/node_pie.zip".source = builtins.fetchurl { + url = "https://github.com/strike-digital/node_pie/releases/download/1.2.38/node_pie_1_2_38.zip"; + sha256 = "sha256:00kscj7dkl80kc482jg3kcw9vhr1n64n44ld2xncr6gxil679fk2"; + }; + home.file.".config/blender/extensions/bool_tool.zip".source = builtins.fetchurl { + name = "bool_tool"; + url = "https://extensions.blender.org/download/sha256:74ecd752ec3eda67153c74ea5a6b22709da2669a6da43264bfa291fc784306b3/add-on-bool-tool-v1.1.2.zip?repository=%2Fapi%2Fv1%2Fextensions%2F&blender_version_min=4.2.0"; + sha256 = "sha256:1cq68dwgr4d2pxj3593dk9ka57bh49mmmskl7hangniyxi9dgv3l"; + }; +} diff --git a/user/wm/input/nihongo.nix b/user/wm/input/nihongo.nix index 9c6c017..b496532 100644 --- a/user/wm/input/nihongo.nix +++ b/user/wm/input/nihongo.nix @@ -84,4 +84,28 @@ # Interval of saving user data in minutes AutoSavePeriod=30 ''; +# home.file.".config/fcitx5/profile".text = '' +# [Groups/0] +# # Group Name +# Name=Default +# # Layout +# Default Layout=us +# # Default Input Method +# DefaultIM=mozc +# +# [Groups/0/Items/0] +# # Name +# Name=keyboard-us +# # Layout +# Layout= +# +# [Groups/0/Items/1] +# # Name +# Name=mozc +# # Layout +# Layout= +# +# [GroupOrder] +# 0=Default +# ''; } From 7a285da892ad7a653d71123820a7a82e56c428d7 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 19 Jan 2025 12:02:57 -0600 Subject: [PATCH 099/317] file management fixes in emacs --- user/app/emacs/init.el | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 4b9a22d..f284c64 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -207,10 +207,22 @@ (define-key evil-motion-state-map (kbd "RET") nil) (evil-mode 1)) +(use-package dired + :commands (dired dired-jump) + :custom + (dired-listing-switches "-agho --group-directories-first") + (dired-kill-when-opening-new-dired-buffer t) + :config + (evil-collection-define-key 'normal 'dired-mode-map + "h" 'dired-up-directory + "l" 'dired-find-file + " " 'nil)) + (use-package evil-collection :after (evil) :custom (evil-want-keybinding nil) + (evil-collection-key-blacklist (append (list (kbd "SPC")) evil-collection-key-blacklist)) :config (evil-collection-init) @@ -238,6 +250,8 @@ (kill-buffer))) (message "Not a file visiting buffer!")))) (evil-define-key 'motion 'global (kbd "fd") 'delete-file-and-buffer) + (evil-define-key 'motion 'global (kbd "fr") 'rename-visited-file) + (evil-define-key 'motion 'global (kbd "od") 'dired-jump) ;; Project keybinds (evil-define-key 'motion 'global (kbd "pp") 'projectile-switch-project) From 085076048668ed64d84eb840311f0d8361e9e521 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 19 Jan 2025 16:42:05 -0600 Subject: [PATCH 100/317] some startup optimizations + better dired --- user/app/emacs/init.el | 77 +++++++++++++++++++++++++----------------- 1 file changed, 46 insertions(+), 31 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index f284c64..f187012 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -17,12 +17,13 @@ ;; use-package-ception (use-package use-package - :demand t + :defer t :custom (use-package-always-ensure nil) (usepackage-always-defer t)) (use-package emacs + :defer t :config ;; No startup screen (setq inhibit-startup-message t) @@ -141,8 +142,8 @@ :after (org markdown git-timemachine)) (use-package ultra-scroll + :defer t :init - ;; Mouse & Smooth Scroll (setq scroll-step 1 scroll-margin 0 scroll-conservatively 101 @@ -154,9 +155,11 @@ ;; Magit (use-package magit + :commands (magit magit-status) :config (setq magit-display-buffer-function 'magit-display-buffer-fullframe-status-v1) (setq magit-bury-buffer-function 'magit-restore-window-configuration) + (define-key magit-mode-map (kbd "SPC") nil) (add-hook 'git-commit-mode-hook 'evil-insert-state)) (use-package git-timemachine) @@ -183,16 +186,31 @@ (projectile-mode +1)) ;; Being able to undo is nice... -(use-package undo-fu) +(use-package undo-fu + :commands (evil-undo evil-redo)) (use-package undo-fu-session :after undo-fu :config (global-undo-fu-session-mode)) +(use-package dired + :custom + (dired-listing-switches "-aBhl --group-directories-first") + (dired-kill-when-opening-new-dired-buffer t)) + +(use-package dired-x + :after (dired) + :config + (setq dired-omit-files (rx (seq bol "."))) + (setq dired-show-dotfiles nil) + (defun apply-dired-omit () + (if (not dired-show-dotfiles) + (dired-omit-mode 1))) + (add-hook 'dired-mode-hook 'apply-dired-omit)) + ;; Muahahahahaha.. (use-package evil - :after (undo-fu undo-fu-session) :custom (evil-want-keybinding nil) (evil-respect-visual-line-mode t) @@ -207,22 +225,10 @@ (define-key evil-motion-state-map (kbd "RET") nil) (evil-mode 1)) -(use-package dired - :commands (dired dired-jump) - :custom - (dired-listing-switches "-agho --group-directories-first") - (dired-kill-when-opening-new-dired-buffer t) - :config - (evil-collection-define-key 'normal 'dired-mode-map - "h" 'dired-up-directory - "l" 'dired-find-file - " " 'nil)) - (use-package evil-collection :after (evil) :custom - (evil-want-keybinding nil) - (evil-collection-key-blacklist (append (list (kbd "SPC")) evil-collection-key-blacklist)) + (evil-want-keybinding t) :config (evil-collection-init) @@ -252,6 +258,13 @@ (evil-define-key 'motion 'global (kbd "fd") 'delete-file-and-buffer) (evil-define-key 'motion 'global (kbd "fr") 'rename-visited-file) (evil-define-key 'motion 'global (kbd "od") 'dired-jump) + (defun toggle-dired-omit-mode () + "Toggle dired-omit-mode." + (interactive) + (if dired-omit-mode + (progn (dired-omit-mode 0) (setq dired-show-dotfiles t)) + (progn (dired-omit-mode 1) (setq dired-show-dotfiles nil)))) + (evil-define-key 'normal dired-mode-map (kbd "H") 'toggle-dired-omit-mode) ;; Project keybinds (evil-define-key 'motion 'global (kbd "pp") 'projectile-switch-project) @@ -290,7 +303,6 @@ (evil-define-key 'insert org-mode-map (kbd "") 'org-demote-subtree) (evil-define-key 'insert org-mode-map (kbd "") 'org-promote-subtree) (evil-define-key 'motion org-mode-map (kbd "mll") 'org-insert-link) - (define-key magit-mode-map (kbd "SPC") nil) (global-set-key (kbd "C-j") 'evil-window-down) (global-set-key (kbd "C-k") 'evil-window-up) @@ -400,6 +412,7 @@ ;; Theme and modeline (use-package doom-themes + :after (org) :config (setq doom-themes-enable-bold t doom-themes-enable-italic t @@ -524,7 +537,7 @@ #'+org-cycle-only-current-subtree-h) (setq org-return-follows-link t) - (setf (cdr (assoc 'file org-link-frame-setup)) 'find-file))) + (setf (cdr (assoc 'file org-link-frame-setup)) 'find-file)) (use-package org-roam :after (org) @@ -540,8 +553,7 @@ (evil-define-key 'motion 'global (kbd "nrdd") 'org-roam-dailies-goto-date) (evil-define-key 'motion 'global (kbd "nrdt") 'org-roam-dailies-goto-today) (evil-define-key 'motion 'global (kbd "nrdn") 'org-roam-dailies-goto-next-note) - (evil-define-key 'motion 'global (kbd "nrdp") 'org-roam-dailies-goto-previous-note) - ) + (evil-define-key 'motion 'global (kbd "nrdp") 'org-roam-dailies-goto-previous-note)) (use-package org-node :after (org org-roam) @@ -552,24 +564,22 @@ (org-node-complete-at-point-mode) (setq org-roam-completion-everywhere nil) (evil-define-key 'motion 'global (kbd "Ni") 'org-node-insert-link) - (evil-define-key 'motion 'global (kbd "NR") 'org-node-rewrite-links-ask) - ) + (evil-define-key 'motion 'global (kbd "NR") 'org-node-rewrite-links-ask)) (use-package org-node-fakeroam :after (org org-node org-roam) - :defer + :defer t :config (setq org-node-creation-fn #'org-node-fakeroam-new-via-roam-capture) (setq org-node-slug-fn #'org-node-fakeroam-slugify-via-roam) (setq org-node-datestamp-format "%Y%m%d%H%M%S-") - (setq org-roam-db-update-on-save nil) ;; don't update DB on save, not needed - (setq org-roam-link-auto-replace nil) ;; don't look for "roam:" links on save - (org-node-fakeroam-fast-render-mode) ;; build the Roam buffer faster + (setq org-roam-db-update-on-save nil) + (setq org-roam-link-auto-replace nil) + (org-node-fakeroam-fast-render-mode) (setq org-node-fakeroam-fast-render-persist t) - (org-node-fakeroam-redisplay-mode) ;; autorefresh the Roam buffer - (org-node-fakeroam-jit-backlinks-mode) ;; skip DB for Roam buffer - (org-node-fakeroam-db-feed-mode) ;; keep Roam DB up to date - ) + (org-node-fakeroam-redisplay-mode) + (org-node-fakeroam-jit-backlinks-mode) + (org-node-fakeroam-db-feed-mode)) (use-package wgrep :after (org-node)) @@ -601,5 +611,10 @@ (setq-default olivetti-body-width 100) (add-hook 'org-mode-hook 'olivetti-mode)) +(evil-collection-define-key 'normal 'dired-mode-map + "h" 'dired-up-directory + "l" 'dired-find-file + " " 'nil) + (provide 'init) ;;; init.el ends here From 238b1987c1ba0911855d3bb34b000578fa3865e4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 23 Jan 2025 22:34:11 -0600 Subject: [PATCH 101/317] my org mode is getting closer to doom emacs --- user/app/emacs/init.el | 262 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 261 insertions(+), 1 deletion(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index f187012..1549303 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -300,6 +300,8 @@ (evil-define-key 'motion 'global (kbd "wh") 'evil-window-left) (evil-define-key 'motion 'global (kbd "wl") 'evil-window-right) + (evil-define-key 'insert org-mode-map (kbd "") '+org/insert-item-below) + (evil-define-key 'insert org-mode-map (kbd "") '+org/insert-item-above) (evil-define-key 'insert org-mode-map (kbd "") 'org-demote-subtree) (evil-define-key 'insert org-mode-map (kbd "") 'org-promote-subtree) (evil-define-key 'motion org-mode-map (kbd "mll") 'org-insert-link) @@ -537,7 +539,265 @@ #'+org-cycle-only-current-subtree-h) (setq org-return-follows-link t) - (setf (cdr (assoc 'file org-link-frame-setup)) 'find-file)) + (setf (cdr (assoc 'file org-link-frame-setup)) 'find-file) +(setq org-todo-keywords '((sequence "TODO(t)" "WAITING(w)" "|" "DONE(d)" "CANCELED(c)" "NO(n)"))) + (setq org-use-fast-todo-selection 'prefix) + (setq org-M-RET-may-split-line nil + ;; insert new headings after current subtree rather than inside it + org-insert-heading-respect-content t) + + (defun +org--insert-item (direction) + (let ((context (org-element-lineage + (org-element-context) + '(table table-row headline inlinetask item plain-list) + t))) + (pcase (org-element-type context) + ;; Add a new list item (carrying over checkboxes if necessary) + ((or `item `plain-list) + (let ((orig-point (point))) + ;; Position determines where org-insert-todo-heading and `org-insert-item' + ;; insert the new list item. + (if (eq direction 'above) + (org-beginning-of-item) + (end-of-line)) + (let* ((ctx-item? (eq 'item (org-element-type context))) + (ctx-cb (org-element-property :contents-begin context)) + ;; Hack to handle edge case where the point is at the + ;; beginning of the first item + (beginning-of-list? (and (not ctx-item?) + (= ctx-cb orig-point))) + (item-context (if beginning-of-list? + (org-element-context) + context)) + ;; Horrible hack to handle edge case where the + ;; line of the bullet is empty + (ictx-cb (org-element-property :contents-begin item-context)) + (empty? (and (eq direction 'below) + ;; in case contents-begin is nil, or contents-begin + ;; equals the position end of the line, the item is + ;; empty + (or (not ictx-cb) + (= ictx-cb + (1+ (point)))))) + (pre-insert-point (point))) + ;; Insert dummy content, so that `org-insert-item' + ;; inserts content below this item + (when empty? + (insert "�")) + (org-insert-item (org-element-property :checkbox context)) + ;; Remove dummy content + (when empty? + (delete-region pre-insert-point (1+ pre-insert-point)))))) + ;; Add a new table row + ((or `table `table-row) + (pcase direction + ('below (save-excursion (org-table-insert-row t)) + (org-table-next-row)) + ('above (save-excursion (org-shiftmetadown)) + (+org/table-previous-row)))) + + ;; Otherwise, add a new heading, carrying over any todo state, if + ;; necessary. + (_ + (let ((level (or (org-current-level) 1))) + ;; I intentionally avoid `org-insert-heading' and the like because they + ;; impose unpredictable whitespace rules depending on the cursor + ;; position. It's simpler to express this command's responsibility at a + ;; lower level than work around all the quirks in org's API. + (pcase direction + (`below + (let (org-insert-heading-respect-content) + (goto-char (line-end-position)) + (org-end-of-subtree) + (insert "\n" (make-string level ?*) " "))) + (`above + (org-back-to-heading) + (insert (make-string level ?*) " ") + (save-excursion (insert "\n")))) + (run-hooks 'org-insert-heading-hook) + (when-let* ((todo-keyword (org-element-property :todo-keyword context)) + (todo-type (org-element-property :todo-type context))) + (org-todo + (cond ((eq todo-type 'done) + ;; Doesn't make sense to create more "DONE" headings + (car (+org-get-todo-keywords-for todo-keyword))) + (todo-keyword) + ('todo))))))) + + (when (org-invisible-p) + (org-show-hidden-entry)) + (when (and (bound-and-true-p evil-local-mode) + (not (evil-emacs-state-p))) + (evil-insert 1)))) + + ;;; Commands + + ;;;###autoload + (defun +org/return () + "Call `org-return' then indent (if `electric-indent-mode' is on)." + (interactive) + (org-return electric-indent-mode)) + + ;;;###autoload + (defun +org/dwim-at-point (&optional arg) + "Do-what-I-mean at point. + + If on a: + - checkbox list item or todo heading: toggle it. + - citation: follow it + - headline: cycle ARCHIVE subtrees, toggle latex fragments and inline images in + subtree; update statistics cookies/checkboxes and ToCs. + - clock: update its time. + - footnote reference: jump to the footnote's definition + - footnote definition: jump to the first reference of this footnote + - timestamp: open an agenda view for the time-stamp date/range at point. + - table-row or a TBLFM: recalculate the table's formulas + - table-cell: clear it and go into insert mode. If this is a formula cell, + recaluclate it instead. + - babel-call: execute the source block + - statistics-cookie: update it. + - src block: execute it + - latex fragment: toggle it. + - link: follow it + - otherwise, refresh all inline images in current tree." + (interactive "P") + (if (button-at (point)) + (call-interactively #'push-button) + (let* ((context (org-element-context)) + (type (org-element-type context))) + ;; skip over unimportant contexts + (while (and context (memq type '(verbatim code bold italic underline strike-through subscript superscript))) + (setq context (org-element-property :parent context) + type (org-element-type context))) + (pcase type + ((or `citation `citation-reference) + (org-cite-follow context arg)) + + (`headline + (cond ((memq (bound-and-true-p org-goto-map) + (current-active-maps)) + (org-goto-ret)) + ((and (fboundp 'toc-org-insert-toc) + (member "TOC" (org-get-tags))) + (toc-org-insert-toc) + (message "Updating table of contents")) + ((string= "ARCHIVE" (car-safe (org-get-tags))) + (org-force-cycle-archived)) + ((or (org-element-property :todo-type context) + (org-element-property :scheduled context)) + (org-todo + (if (eq (org-element-property :todo-type context) 'done) + (or (car (+org-get-todo-keywords-for (org-element-property :todo-keyword context))) + 'todo) + 'done)))) + ;; Update any metadata or inline previews in this subtree + (org-update-checkbox-count) + (org-update-parent-todo-statistics) + (when (and (fboundp 'toc-org-insert-toc) + (member "TOC" (org-get-tags))) + (toc-org-insert-toc) + (message "Updating table of contents")) + (let* ((beg (if (org-before-first-heading-p) + (line-beginning-position) + (save-excursion (org-back-to-heading) (point)))) + (end (if (org-before-first-heading-p) + (line-end-position) + (save-excursion (org-end-of-subtree) (point)))) + (overlays (ignore-errors (overlays-in beg end))) + (latex-overlays + (cl-find-if (lambda (o) (eq (overlay-get o 'org-overlay-type) 'org-latex-overlay)) + overlays)) + (image-overlays + (cl-find-if (lambda (o) (overlay-get o 'org-image-overlay)) + overlays))) + (+org--toggle-inline-images-in-subtree beg end) + (if (or image-overlays latex-overlays) + (org-clear-latex-preview beg end) + (org--latex-preview-region beg end)))) + + (`clock (org-clock-update-time-maybe)) + + (`footnote-reference + (org-footnote-goto-definition (org-element-property :label context))) + + (`footnote-definition + (org-footnote-goto-previous-reference (org-element-property :label context))) + + ((or `planning `timestamp) + (org-follow-timestamp-link)) + + ((or `table `table-row) + (if (org-at-TBLFM-p) + (org-table-calc-current-TBLFM) + (ignore-errors + (save-excursion + (goto-char (org-element-property :contents-begin context)) + (org-call-with-arg 'org-table-recalculate (or arg t)))))) + + (`table-cell + (org-table-blank-field) + (org-table-recalculate arg) + (when (and (string-empty-p (string-trim (org-table-get-field))) + (bound-and-true-p evil-local-mode)) + (evil-change-state 'insert))) + + (`babel-call + (org-babel-lob-execute-maybe)) + + (`statistics-cookie + (save-excursion (org-update-statistics-cookies arg))) + + ((or `src-block `inline-src-block) + (org-babel-execute-src-block arg)) + + ((or `latex-fragment `latex-environment) + (org-latex-preview arg)) + + (`link + (let* ((lineage (org-element-lineage context '(link) t)) + (path (org-element-property :path lineage))) + (if (or (equal (org-element-property :type lineage) "img") + (and path (image-type-from-file-name path))) + (+org--toggle-inline-images-in-subtree + (org-element-property :begin lineage) + (org-element-property :end lineage)) + (org-open-at-point arg)))) + + ((guard (org-element-property :checkbox (org-element-lineage context '(item) t))) + (org-toggle-checkbox)) + + (`paragraph + (+org--toggle-inline-images-in-subtree)) + + (_ + (if (or (org-in-regexp org-ts-regexp-both nil t) + (org-in-regexp org-tsr-regexp-both nil t) + (org-in-regexp org-link-any-re nil t)) + (call-interactively #'org-open-at-point) + (+org--toggle-inline-images-in-subtree + (org-element-property :begin context) + (org-element-property :end context)))))))) + + ;;;###autoload + (defun +org/shift-return (&optional arg) + "Insert a literal newline, or dwim in tables. + Executes `org-table-copy-down' if in table." + (interactive "p") + (if (org-at-table-p) + (org-table-copy-down arg) + (org-return nil arg))) + + ;;;###autoload + (defun +org/insert-item-below (count) + "Inserts a new heading, table cell or item below the current one." + (interactive "p") + (dotimes (_ count) (+org--insert-item 'below))) + + ;;;###autoload + (defun +org/insert-item-above (count) + "Inserts a new heading, table cell or item above the current one." + (interactive "p") + (dotimes (_ count) (+org--insert-item 'above)))) (use-package org-roam :after (org) From 2b5c68a6c62d01150989a61154e729ee5c30e5f2 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 25 Jan 2025 17:54:53 -0600 Subject: [PATCH 102/317] Replacing waybar with eww --- user/wm/hyprland/eww/eww.scss.mustache | 78 ++++++++++++++++++++++++++ user/wm/hyprland/eww/eww.yuck | 72 ++++++++++++++++++++++++ user/wm/hyprland/hyprland.nix | 32 +++++++++-- 3 files changed, 178 insertions(+), 4 deletions(-) create mode 100644 user/wm/hyprland/eww/eww.scss.mustache create mode 100644 user/wm/hyprland/eww/eww.yuck diff --git a/user/wm/hyprland/eww/eww.scss.mustache b/user/wm/hyprland/eww/eww.scss.mustache new file mode 100644 index 0000000..e00e0ba --- /dev/null +++ b/user/wm/hyprland/eww/eww.scss.mustache @@ -0,0 +1,78 @@ +.bar { + border-radius: 10px; + background: rgba({{base00-rgb-r}},{{base00-rgb-g}},{{base00-rgb-b}},0.35); + font-size: 18px; +} + +.button { + background: rgba(0,0,0,0.0); +} + +.active-workspace { + color: #{{base07-hex}}; + background: rgba(0,0,0,0.0); + margin-right: -30px; + margin-left: -30px; +} + +.inactive-workspace { + color: #{{base03-hex}}; + background: rgba(0,0,0,0.0); +} + +.inactive-workspace:hover { + color: #{{base0A-hex}}; +} + +.calendar_window { + background: rgba({{base01-rgb-r}},{{base01-rgb-g}},{{base01-rgb-b}},0.65); + font-size: 1.2em; + padding: 12px; + border-radius: 10px; + border-width: 0px; +} + +.calendar_window:selected { + background: #{{base08-hex}}; +} + +.calendar_window.header { + background: rgba(0,0,0,0.0); +} + +.time-box { + background: rgba(0,0,0,0.0); + margin-right: 5px; +} + +.time-box:hover { +} + +progressbar trough { + min-width: 30px; + background: #{{base05-hex}}; +} + +progressbar trough progress { + background: #{{base07-hex}}; +} + +.battery-text-normal { + color: #{{base07-hex}}; + font-size: 10px; +} + +.battery-text-danger { + color: #{{base08-hex}}; + font-size: 10px; +} + +.battery-icon-normal { + color: #{{base07-hex}}; + font-size: 20px; +} + +.battery-icon-danger { + color: #{{base08-hex}}; + font-size: 20px; +} diff --git a/user/wm/hyprland/eww/eww.yuck b/user/wm/hyprland/eww/eww.yuck new file mode 100644 index 0000000..0e1c67e --- /dev/null +++ b/user/wm/hyprland/eww/eww.yuck @@ -0,0 +1,72 @@ +(defwindow bar [?monitor] + :monitor monitor + :geometry (geometry :x "0%" + :y "1%" + :width "99%" + :height "30px" + :anchor "top center") + :stacking "fg" + :reserve (struts :distance "5px" :side "top") + :windowtype "dock" + :wm-ignore false + :exclusive true + (bar-widget :monitor monitor)) + +(defvar workspaces "[1, 2, 3, 4, 5, 6, 7, 8, 9]") +(defvar workspacesreplace "[\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"]") +(defpoll workspaces-monitor-0 :interval "1s" "workspace-on-monitor 0") +(defpoll workspaces-monitor-1 :interval "1s" "workspace-on-monitor 1") +(defpoll workspaces-monitor-2 :interval "1s" "workspace-on-monitor 2") +(defvar maxbattery 80) +(defvar batteryicons "[\"\", \"\", \"\", \"\", \"\"]") + +(defwidget bar-widget [?monitor] + (box :halign "expand" + (box :orientation "horizontal" + :halign "start" + :class "center-box" + (box :orientation "horizontal" + :spacing "10" + :halign "center" + :valign "center" + (label :text "") + (label :halign "center" :valign "center" :text {EWW_BATTERY.total_avg / maxbattery > 0.8 ? batteryicons[4] : EWW_BATTERY.total_avg / maxbattery > 0.6 ? batteryicons[3] : EWW_BATTERY.total_avg / maxbattery > 0.4 ? batteryicons[2] : EWW_BATTERY.total_avg / maxbattery > 0.2 ? batteryicons[1] : batteryicons[0]} :class {EWW_BATTERY.total_avg / maxbattery > 0.2 ? "battery-icon-normal" : "battery-icon-danger"}) + (label :halign "center" :valign "center" :text "${round(EWW_BATTERY.total_avg,0)}%" :class {EWW_BATTERY.total_avg / maxbattery > 0.2 ? "battery-text-normal" : "battery-text-danger"}) + ) + ) + (box :orientation "horizontal" + :spacing "-8" + :halign "center" + :class "center-box" + (for workspace in workspaces + (box :orientation "horizontal" + :halign "center" + :class "center-box" + (button :class { + monitor == 0 ? workspace == workspaces-monitor-0 ? "active-workspace" : "inactive-workspace" : + monitor == 1 ? workspace == workspaces-monitor-1 ? "active-workspace" : "inactive-workspace" : monitor == 2 ? workspace == workspaces-monitor-2 ? "active-workspace" : "inactive-workspace" : "inactive-workspace"} :onclick "hyprctl dispatch focusworkspaceoncurrentmonitor ${workspace}" {workspacesreplace[workspace - 1]}) + ))) + (box :orientation "horizontal" + :halign "end" + :class "center-box" + :spacing "5" + (button :onclick "eww open --toggle calendar_window --arg monitor=${monitor}" :class "time-box" :halign "end" time) + (systray :class "time-box" :icon-size "20" :spacing "2" :halign "end") + ))) + +(defvar time-visible false) +(defpoll time :interval "1s" + :initial "initial-value" + :run-while time-visible + `date +%H:%M:%S`) + +(defwindow calendar_window [?monitor] + :monitor monitor + :geometry (geometry :width "500px" :height "500px" :x "1410" :y "1%") + :stacking "overlay" + :focusable false + :hexpand true + :vexpand true + :namespace "eww" + (calendar :show-details true)) + diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 9f39fc9..2cc3544 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -58,7 +58,8 @@ in exec-once = blueman-applet exec-once = GOMAXPROCS=1 syncthing --no-browser exec-once = protonmail-bridge --noninteractive - exec-once = waybar + #exec-once = waybar + exec-once = eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2 exec-once = emacs --daemon exec-once = hypridle @@ -333,12 +334,19 @@ in windowrulev2 = opacity 0.85,initialTitle:^(Notes)$,initialClass:^(Brave-browser)$ layerrule = blur,waybar - layerrule = xray,waybar + layerrule = xray 1,waybar blurls = waybar + layerrule = ignorezero, eww + layerrule = xray 1,eww layerrule = blur,launcher # fuzzel blurls = launcher # fuzzel layerrule = blur,gtk-layer-shell - layerrule = xray,gtk-layer-shell + layerrule = xray 1,gtk-layer-shell + layerrule = ignorezero, gtk-layer-shell + layerrule = blur,eww + layerrule = xray 1,eww + layerrule = ignorezero, eww + layerrule = animation popin 80%, eww blurls = gtk-layer-shell layerrule = blur,~nwggrid layerrule = xray 1,~nwggrid @@ -420,6 +428,7 @@ in feh killall polkit_gnome + eww nwg-launchers papirus-icon-theme (pkgs.writeScriptBin "nwggrid-wrapper" '' @@ -469,6 +478,10 @@ in pavucontrol pamixer tesseract4 + (pkgs.writeScriptBin "workspace-on-monitor" '' + #!/bin/sh + hyprctl monitors -j | jq ".[$1] | .activeWorkspace.id" + '') (pkgs.writeScriptBin "screenshot-ocr" '' #!/bin/sh imgname="/tmp/screenshot-ocr-$(date +%Y%m%d%H%M%S).png" @@ -619,8 +632,19 @@ in ''; services.swayosd.enable = true; services.swayosd.topMargin = 0.5; - programs.waybar = { + services.cbatticon = { enable = true; + iconType = "symbolic"; + }; + home.file.".config/eww/eww.yuck".source = ./eww/eww.yuck; + home.file = { + ".config/eww/eww.scss".source = config.lib.stylix.colors { + template = builtins.readFile ./eww/eww.scss.mustache; + extension = ".scss"; + }; + }; + programs.waybar = { + enable = false; package = pkgs.waybar.overrideAttrs (oldAttrs: { postPatch = '' # use hyprctl to switch workspaces From 6aafa4a6afc9a52b68c1bc5e5ea1ca38cc178170 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 25 Jan 2025 21:10:05 -0600 Subject: [PATCH 103/317] Updated system (& temp remove stuff that doesn't build) --- flake.lock | 104 +++++++++++++++--------------- flake.nix | 2 +- profiles/work/home.nix | 2 +- system/hardware-configuration.nix | 7 +- user/wm/hyprland/hyprland.nix | 3 + 5 files changed, 61 insertions(+), 57 deletions(-) diff --git a/flake.lock b/flake.lock index 55f33de..0a6394e 100644 --- a/flake.lock +++ b/flake.lock @@ -102,11 +102,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1736978230, - "narHash": "sha256-f5SH4qQzRWYKwIjpzOuhI9mPwlyNcBWjr2mrCKLgml4=", + "lastModified": 1737822304, + "narHash": "sha256-FBq7yonwKPh57ZYI4XUqYZZyxTWON3Ox5i45qYELkSs=", "owner": "StevenBlack", "repo": "hosts", - "rev": "1b19054c880e1ea75c73dfbeb3fb071c2bf08e1f", + "rev": "55a9a74a5f40502ec61c56bcb4a39f851270d300", "type": "github" }, "original": { @@ -124,11 +124,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1737055309, - "narHash": "sha256-nRkk3vB5B5ITfWsCxDU+aOVZ4bMqDVIPB1TLWc5zbWE=", + "lastModified": 1737811239, + "narHash": "sha256-X0C4HEcw3AdSgEH6YDHwC6w8xBxK0pVKyUYMoXU2f1w=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "b0e6aee3b90fd6506e0164bc180ae1e1f6be22a8", + "rev": "be39fe2f8f4e922fc5f2402377531191f96f6b02", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1737105550, - "narHash": "sha256-BagwQS3VHSPgZ9xwmwaMGShSkdghAv7ZD1xE5Wb9678=", + "lastModified": 1737825153, + "narHash": "sha256-R1p2ZXOydII+MT/SpeOXBjo/dgfD/gIArge2YAgSw38=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "c7efde709bbcd3a207abe763c11922fda4358a6d", + "rev": "4ebe4c890e7c8662ae31192359a56b0505cf10ba", "type": "github" }, "original": { @@ -168,11 +168,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1737009074, - "narHash": "sha256-BF+OxooVz4KeSIJyLXCnX2VTMsyfGrpEsay76hGRyrI=", + "lastModified": 1737268357, + "narHash": "sha256-J3At8JDKpQGDeDUcz1eh0h5yFwNH7fPfm+N95TxiOq4=", "owner": "nix-community", "repo": "fenix", - "rev": "fe17a42e2c306d1a8a4fb3f977b12048d8cf7471", + "rev": "f9662e6ea6020671e1e17102bd20d6692bb38aba", "type": "github" }, "original": { @@ -375,11 +375,11 @@ ] }, "locked": { - "lastModified": 1736883540, - "narHash": "sha256-dgPgoPUSg8cGAMqbhQRkww665sZtgzpWXxWjlyqhv94=", + "lastModified": 1737221749, + "narHash": "sha256-igllW0yG+UbetvhT11jnt9RppSHXYgMykYhZJeqfHs0=", "owner": "nix-community", "repo": "home-manager", - "rev": "0dfec9deb275854a56c97c356c40ef72e3a2e632", + "rev": "97d7946b5e107dd03cc82f21165251d4e0159655", "type": "github" }, "original": { @@ -416,11 +416,11 @@ ] }, "locked": { - "lastModified": 1737120639, - "narHash": "sha256-p5e/45V41YD3tMELuiNIoVCa25/w4nhOTm0B9MtdHFI=", + "lastModified": 1737762889, + "narHash": "sha256-5HGG09bh/Yx0JA8wtBMAzt0HMCL1bYZ93x4IqzVExio=", "owner": "nix-community", "repo": "home-manager", - "rev": "a0046af169ce7b1da503974e1b22c48ef4d71887", + "rev": "daf04c5950b676f47a794300657f1d3d14c1a120", "type": "github" }, "original": { @@ -467,11 +467,11 @@ ] }, "locked": { - "lastModified": 1734906540, - "narHash": "sha256-vQ/L9hZFezC0LquLo4TWXkyniWtYBlFHAKIsDc7PYJE=", + "lastModified": 1737634937, + "narHash": "sha256-Ffw4ujFpi++6pPHe+gCBOfDgAoNlzVPZN6MReC1beu8=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "69270ba8f057d55b0e6c2dca0e165d652856e613", + "rev": "9c5dd1f7c825ee47f72727ad0a4e16ca46a2688e", "type": "github" }, "original": { @@ -496,11 +496,11 @@ ] }, "locked": { - "lastModified": 1732808127, - "narHash": "sha256-jwqYmLVfvoLPu8UScEzZgdbbiNU3ioYcrsthjEEnGqI=", + "lastModified": 1734906236, + "narHash": "sha256-vH/ysV2ONGQgYZPtcJKwc8jJivzyVxru2aaOxC20ZOE=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "4d927a52be7e15e0846456f2aa1b0ad76b5bf059", + "rev": "6dea3fba08fd704dd624b6d4b261638fb4003c9c", "type": "github" }, "original": { @@ -613,11 +613,11 @@ ] }, "locked": { - "lastModified": 1728168612, - "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", + "lastModified": 1735393019, + "narHash": "sha256-NPpqA8rtmDLsEmZOmz+qR67zsB6Y503Jnv+nSFLKJZ8=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", + "rev": "55608efdaa387af7bfdc0eddb404c409958efa43", "type": "github" }, "original": { @@ -642,7 +642,7 @@ "locked": { "lastModified": 1735497496, "narHash": "sha256-lT6f/5NB73xj9cVesi2SNsL5jVciwZJp8QRohiv+3Hk=", - "ref": "02639c27599b03c81dc1d0e031628224f5ad8d50", + "ref": "refs/heads/main", "rev": "3d63d9b129d5def270bc8a2471347e6f97274e2b", "revCount": 301, "type": "git", @@ -735,11 +735,11 @@ ] }, "locked": { - "lastModified": 1737007397, - "narHash": "sha256-uJ7Lk0moWSn8Tr0QkUbOCWR7WrhiLeha4E00rckhl8I=", + "lastModified": 1737126697, + "narHash": "sha256-k1YhjONkiKBHzbjNy4ZsjysBac5UJSolCVq9cTKLeKM=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "6bbb19666e753c18ef8af35f590cbc3ba42dd0ca", + "rev": "27a0ddac1a14e10ba98530f59db728951495f2ce", "type": "github" }, "original": { @@ -827,11 +827,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736883708, - "narHash": "sha256-uQ+NQ0/xYU0N1CnXsa2zghgNaOPxWpMJXSUJJ9W7140=", + "lastModified": 1737632463, + "narHash": "sha256-38J9QfeGSej341ouwzqf77WIHAScihAKCt8PQJ+NH28=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eb62e6aa39ea67e0b8018ba8ea077efe65807dc8", + "rev": "0aa475546ed21629c4f5bbf90e38c846a99ec9e9", "type": "github" }, "original": { @@ -875,11 +875,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1736916166, - "narHash": "sha256-puPDoVKxkuNmYIGMpMQiK8bEjaACcCksolsG36gdaNQ=", + "lastModified": 1737672001, + "narHash": "sha256-YnHJJ19wqmibLQdUeq9xzE6CjrMA568KN/lFPuSVs4I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e24b4c09e963677b1beea49d411cd315a024ad3a", + "rev": "035f8c0853c2977b24ffc4d0a42c74f00b182cd8", "type": "github" }, "original": { @@ -907,11 +907,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1736916166, - "narHash": "sha256-puPDoVKxkuNmYIGMpMQiK8bEjaACcCksolsG36gdaNQ=", + "lastModified": 1737672001, + "narHash": "sha256-YnHJJ19wqmibLQdUeq9xzE6CjrMA568KN/lFPuSVs4I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e24b4c09e963677b1beea49d411cd315a024ad3a", + "rev": "035f8c0853c2977b24ffc4d0a42c74f00b182cd8", "type": "github" }, "original": { @@ -922,11 +922,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1737062831, - "narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=", + "lastModified": 1737746512, + "narHash": "sha256-nU6AezEX4EuahTO1YopzueAXfjFfmCHylYEFCagduHU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c", + "rev": "825479c345a7f806485b7f00dbe3abb50641b083", "type": "github" }, "original": { @@ -1049,11 +1049,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1736970696, - "narHash": "sha256-WP5yBCVkidEf5y3kCaUSjRd0udpAE6nmY3MMx3Q2aNo=", + "lastModified": 1737215993, + "narHash": "sha256-W8xioeq+h9dzGvtXPlQAn2nXtgNDN6C8uA1/9F2JP5I=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "7d337c7f350a163ac3a9bd4ce0c4dae2df20579b", + "rev": "248bd511aee2c1c1cb2d5314649521d6d93b854a", "type": "github" }, "original": { @@ -1068,11 +1068,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1737080704, - "narHash": "sha256-n+J2h9GM9ZpFOQUmtZoCr1+DFF/iO5UlmLJeHIxbZGY=", + "lastModified": 1737771740, + "narHash": "sha256-lWIdF4qke63TdCHnJ0QaUHfG8YvsDrBqzL4jiHYQd+Y=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f9953fe89f8b65401fc4d4a288940bc2cb072949", + "rev": "cfaaa1dddd280af09aca84af84612fbccd986ae2", "type": "github" }, "original": { @@ -1117,11 +1117,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1736993991, - "narHash": "sha256-kPDt3QgeIsct9f375LIGmSoZKl7Z4AVzXX+9U0VV5PI=", + "lastModified": 1737833281, + "narHash": "sha256-+hCZqNMvcjGinYinsITX+kJvqkEqcWheaNX5WGGcRow=", "owner": "danth", "repo": "stylix", - "rev": "a88c4d264a4379b7fe5a9e75ed51bea96f8dd407", + "rev": "7c1c3259283f2da9c3d15c9096e7b8864f82bd4c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 5586488..7eab8e2 100644 --- a/flake.nix +++ b/flake.nix @@ -53,7 +53,7 @@ # create patched nixpkgs nixpkgs-patched = - (import inputs.nixpkgs { system = systemSettings.system; rocmSupport = (if systemSettings.gpu == "amd" then true else false); }).applyPatches { + (import inputs.nixpkgs { system = systemSettings.system; }).applyPatches { name = "nixpkgs-patched"; src = inputs.nixpkgs; patches = [ ]; diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 3e7e085..2bee9f6 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -185,7 +185,7 @@ libmediainfo audio-recorder cheese - ardour + #ardour #rosegarden tenacity diff --git a/system/hardware-configuration.nix b/system/hardware-configuration.nix index 60dac6f..e990e02 100644 --- a/system/hardware-configuration.nix +++ b/system/hardware-configuration.nix @@ -19,7 +19,8 @@ hardware.opengl.extraPackages = [ pkgs.rocmPackages.clr.icd ]; hardware.opengl.extraPackages32 = [ ]; - environment.systemPackages = with pkgs.rocmPackages; [ hipcc hip-common hiprand hipblas hipfft hipcub hipify ]; + #environment.systemPackages = with pkgs.rocmPackages; [ hipcc hip-common hiprand hipblas hipfft hipcub hipify ]; + environment.systemPackages = with pkgs.rocmPackages; [ hipcc hip-common hiprand hipfft hipcub hipify ]; services.xserver.videoDrivers = lib.mkDefault [ "modesetting" ]; @@ -42,8 +43,8 @@ rocmEnv = pkgs.symlinkJoin { name = "rocm-combined"; paths = with pkgs.rocmPackages; [ - rocblas - hipblas + #rocblas + #hipblas clr ]; }; diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 2cc3544..8552b13 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -35,6 +35,7 @@ in exec-once = dbus-update-activation-environment --systemd DISPLAY XAUTHORITY WAYLAND_DISPLAY XDG_SESSION_DESKTOP=Hyprland XDG_CURRENT_DESKTOP=Hyprland XDG_SESSION_TYPE=wayland exec-once = hyprctl setcursor '' + config.gtk.cursorTheme.name + " " + builtins.toString config.gtk.cursorTheme.size + '' + exec-once = sleep 10 && nextcloud exec-once = iio-hyprland env = NIXOS_OZONE_WL,1 env = XDG_CURRENT_DESKTOP,Hyprland @@ -53,6 +54,7 @@ in exec-once = hyprprofile Default exec-once = ydotoold + exec-once = sleep 10 && caffeine #exec-once = STEAM_FRAME_FORCE_CLOSE=1 steam -silent exec-once = nm-applet exec-once = blueman-applet @@ -423,6 +425,7 @@ in }; home.packages = (with pkgs; [ + caffeine-ng alacritty kitty feh From 19487cb432e714b19aa1c1dd1a3ca0b149b1f1f5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 25 Jan 2025 22:31:43 -0600 Subject: [PATCH 104/317] open in workspace underneath ranger scratch term by default --- user/app/ranger/rifle.conf | 112 +++++++++++++++++----------------- user/wm/hyprland/hyprland.nix | 15 +++++ 2 files changed, 70 insertions(+), 57 deletions(-) diff --git a/user/app/ranger/rifle.conf b/user/app/ranger/rifle.conf index f149862..092ab3d 100644 --- a/user/app/ranger/rifle.conf +++ b/user/app/ranger/rifle.conf @@ -54,20 +54,20 @@ # Rarely installed browsers get higher priority; It is assumed that if you # install a rare browser, you probably use it. Firefox/konqueror/w3m on the # other hand are often only installed as fallback browsers. -ext x?html?, has librewolf, X, flag f = librewolf -- "$@" -ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@" -ext x?html?, has firefox, X, flag f = firefox -- "$@" -ext x?html?, has chromium-browser, X, flag f = chromium-browser -- "$@" -ext x?html?, has chromium, X, flag f = chromium -- "$@" +ext x?html?, has librewolf, X, flag f = open-under-ranger librewolf "$@" +ext x?html?, has qutebrowser, X, flag f = open-under-ranger qutebrowser "$@" +ext x?html?, has firefox, X, flag f = open-under-ranger firefox "$@" +ext x?html?, has chromium-browser, X, flag f = open-under-ranger chromium-browser "$@" +ext x?html?, has chromium, X, flag f = open-under-ranger chromium "$@" ext x?html?, has w3m, terminal = w3m "$@" #------------------------------------------- # Misc #------------------------------------------- # Define the "editor" for text files as first action -mime ^text, has neovide, X, flag f = neovide "$@" -ext org, has emacsclient, X, flag f = emacsclient -c "$@" -mime ^text, has emacsclient, X, flag f = emacsclient -c "$@" +mime ^text, has neovide, X, flag f = open-under-ranger neovide "$@" +ext org, has emacsclient, X, flag f = open-under-ranger "emacsclient -c" "$@" +mime ^text, has emacsclient, X, flag f = open-under-ranger "emacsclient -c" "$@" ext 1 = man "$1" ext s[wmf]c, has zsnes, X = zsnes "$1" @@ -79,17 +79,18 @@ name ^[mM]akefile$ = make #------------------------------------------ # My applications #------------------------------------------ -ext kra, has krita, X, flag f = krita "$@" &>/dev/null -ext kra~, has krita, X, flag f = krita "$@" &>/dev/null -ext blend, has blender, X, flag f = blender "$@" &>/dev/null -ext blend~, has blender, X, flag f = blender "$@" &>/dev/null -ext xopp, has xournalpp, X, flag f = xournalpp "$@" &>/dev/null -ext xopp~, has blender, X, flag f = xournalpp "$@" &>/dev/null -ext helio, has helio, X, flag f = helio "$@" &>/dev/null -ext kdenlive, has kdenlive-accel, X, flag f = kdenlive-accel "$@" &>/dev/null -ext flp, has flstudio, X, flag f = flstudio "$@" &>/dev/null -ext 3mf, has curax, X, flag f = curax "$@" &>/dev/null -ext 3mf, has cura, X flag f = cura "$@" &>/dev/null +ext kra, has krita, X, flag f = open-under-ranger krita "$@" &>/dev/null +ext kra~, has krita, X, flag f = open-under-ranger krita "$@" &>/dev/null +ext blend, has blender, X, flag f = open-under-ranger blender "$@" &>/dev/null +ext blend~, has blender, X, flag f = open-under-ranger blender "$@" &>/dev/null +ext xopp, has xournalpp, X, flag f = open-under-ranger xournalpp "$@" &>/dev/null +ext xopp~, has blender, X, flag f = open-under-ranger xournalpp "$@" &>/dev/null +ext helio, has helio, X, flag f = open-under-ranger helio "$@" &>/dev/null +ext kdenlive, has kdenlive-accel, X, flag f = open-under-ranger kdenlive-accel "$@" &>/dev/null +ext flp, has flstudio, X, flag f = open-under-ranger flstudio "$@" &>/dev/null +ext 3mf, has Cura, X, flag f = open-under-ranger Cura "$@" &>/dev/null +ext 3mf, has curax, X, flag f = open-under-ranger curax "$@" &>/dev/null +ext 3mf, has cura, X flag f = open-under-ranger cura "$@" &>/dev/null #-------------------------------------------- # Scripts @@ -112,13 +113,10 @@ ext midi?, terminal, has wildmidi = wildmidi -- "$@" #-------------------------------------------- # Video/Audio with a GUI #------------------------------------------- -mime ^video, has mpv, X, flag f = mpv -- "$@" -mime ^video, has mpv, X, flag f = mpv --fs -- "$@" -mime ^video, has mplayer2, X, flag f = mplayer2 -- "$@" -mime ^video, has mplayer2, X, flag f = mplayer2 -fs -- "$@" -mime ^video, has mplayer, X, flag f = mplayer -- "$@" -mime ^video, has mplayer, X, flag f = mplayer -fs -- "$@" -mime ^video|audio, has vlc, X, flag f = vlc -- "$@" +mime ^video, has mpv, X, flag f = open-under-ranger mpv "$@" +mime ^video, has mplayer2, X, flag f = open-under-ranger mplayer2 "$@" +mime ^video, has mplayer, X, flag f = open-under-ranger mplayer "$@" +mime ^video|audio, has vlc, X, flag f = open-under-ranger vlc "$@" #-------------------------------------------- # Video without X @@ -130,22 +128,22 @@ mime ^video, terminal, !X, has mplayer = mplayer -- "$@" #------------------------------------------- # Documents #------------------------------------------- -ext pdf, has atril, X, flag f = atril "$@" -ext djvu, has atril, X, flag f = atril "$@" -ext epub, has foliate, X, flag f = foliate "$@" +ext pdf, has atril, X, flag f = open-under-ranger atril "$@" +ext djvu, has atril, X, flag f = open-under-ranger atril "$@" +ext epub, has foliate, X, flag f = open-under-ranger foliate "$@" ext pptx?|od[dfgpst]|docx?|sxc|xlsx?|xlt|xlw|gnm|gnumeric, has libreoffice, X, flag f = soffice "$@" -ext cbr, has zathura, X, flag f = zathura -- "$@" -ext cbz, has zathura, X, flag f = zathura -- "$@" +ext cbr, has zathura, X, flag f = open-under-ranger zathura "$@" +ext cbz, has zathura, X, flag f = open-under-ranger zathura "$@" #------------------------------------------- # Images #------------------------------------------- -mime ^image/svg, has inkscape, X, flag f = inkscape "$@" -mime ^image, has pinta, X, flag f = pinta "$@" -mime ^image, has krita, X, flag f = krita "$@" +mime ^image/svg, has inkscape, X, flag f = open-under-ranger inkscape "$@" +mime ^image, has pinta, X, flag f = open-under-ranger pinta "$@" +mime ^image, has krita, X, flag f = open-under-ranger krita "$@" #------------------------------------------- # Archives @@ -173,7 +171,7 @@ ext rar, has unrar = for file in "$@"; do unrar x "$file"; done #------------------------------------------- # Fonts #------------------------------------------- -mime ^font, has fontforge, X, flag f = fontforge "$@" +mime ^font, has fontforge, X, flag f = open-under-ranger fontforge "$@" #------------------------------------------- # Flag t fallback terminals @@ -182,38 +180,38 @@ mime ^font, has fontforge, X, flag f = fontforge "$@" # if you install a rare terminal emulator, you probably use it. # gnome-terminal/konsole/xterm on the other hand are often installed as part of # a desktop environment or as fallback terminal emulators. -mime ^ranger/x-terminal-emulator, has alacritty = alacritty -e "$@" -mime ^ranger/x-terminal-emulator, has sakura = sakura -e "$@" -mime ^ranger/x-terminal-emulator, has lilyterm = lilyterm -e "$@" +mime ^ranger/x-terminal-emulator, has alacritty = open-under-ranger alacritty -e "$@" +mime ^ranger/x-terminal-emulator, has sakura = open-under-ranger sakura -e "$@" +mime ^ranger/x-terminal-emulator, has lilyterm = open-under-ranger lilyterm -e "$@" #mime ^ranger/x-terminal-emulator, has cool-retro-term = cool-retro-term -e "$@" -mime ^ranger/x-terminal-emulator, has termite = termite -x '"$@"' +mime ^ranger/x-terminal-emulator, has termite = open-under-ranger termite -x '"$@"' #mime ^ranger/x-terminal-emulator, has yakuake = yakuake -e "$@" -mime ^ranger/x-terminal-emulator, has guake = guake -ne "$@" -mime ^ranger/x-terminal-emulator, has tilda = tilda -c "$@" -mime ^ranger/x-terminal-emulator, has st = st -e "$@" -mime ^ranger/x-terminal-emulator, has terminator = terminator -x "$@" -mime ^ranger/x-terminal-emulator, has urxvt = urxvt -e "$@" -mime ^ranger/x-terminal-emulator, has pantheon-terminal = pantheon-terminal -e "$@" -mime ^ranger/x-terminal-emulator, has lxterminal = lxterminal -e "$@" -mime ^ranger/x-terminal-emulator, has mate-terminal = mate-terminal -x "$@" -mime ^ranger/x-terminal-emulator, has xfce4-terminal = xfce4-terminal -x "$@" -mime ^ranger/x-terminal-emulator, has konsole = konsole -e "$@" -mime ^ranger/x-terminal-emulator, has gnome-terminal = gnome-terminal -- "$@" -mime ^ranger/x-terminal-emulator, has xterm = xterm -e "$@" +mime ^ranger/x-terminal-emulator, has guake = open-under-ranger guake -ne "$@" +mime ^ranger/x-terminal-emulator, has tilda = open-under-ranger tilda -c "$@" +mime ^ranger/x-terminal-emulator, has st = open-under-ranger st -e "$@" +mime ^ranger/x-terminal-emulator, has terminator = open-under-ranger terminator -x "$@" +mime ^ranger/x-terminal-emulator, has urxvt = open-under-ranger urxvt -e "$@" +mime ^ranger/x-terminal-emulator, has pantheon-terminal = open-under-ranger pantheon-terminal -e "$@" +mime ^ranger/x-terminal-emulator, has lxterminal = open-under-ranger lxterminal -e "$@" +mime ^ranger/x-terminal-emulator, has mate-terminal = open-under-ranger mate-terminal -x "$@" +mime ^ranger/x-terminal-emulator, has xfce4-terminal = open-under-ranger xfce4-terminal -x "$@" +mime ^ranger/x-terminal-emulator, has konsole = open-under-ranger konsole -e "$@" +mime ^ranger/x-terminal-emulator, has gnome-terminal = open-under-ranger gnome-terminal -- "$@" +mime ^ranger/x-terminal-emulator, has xterm = open-under-ranger xterm -e "$@" #------------------------------------------- # Misc #------------------------------------------- -label wallpaper, number 11, mime ^image, has feh, X = feh --bg-scale "$1" -label wallpaper, number 12, mime ^image, has feh, X = feh --bg-tile "$1" -label wallpaper, number 13, mime ^image, has feh, X = feh --bg-center "$1" -label wallpaper, number 14, mime ^image, has feh, X = feh --bg-fill "$1" +label wallpaper, number 11, mime ^image, has feh, X = open-under-ranger feh --bg-scale "$1" +label wallpaper, number 12, mime ^image, has feh, X = open-under-ranger feh --bg-tile "$1" +label wallpaper, number 13, mime ^image, has feh, X = open-under-ranger feh --bg-center "$1" +label wallpaper, number 14, mime ^image, has feh, X = open-under-ranger feh --bg-fill "$1" #------------------------------------------- # Generic file openers #------------------------------------------- -label open, has xdg-open = xdg-open -- "$@" -label open, has open = open -- "$@" +label open, has xdg-open = open-under-ranger xdg-open -- "$@" +label open, has open = open-under-ranger open -- "$@" # Define the editor for non-text files + pager as last action !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 8552b13..0a81103 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -485,6 +485,21 @@ in #!/bin/sh hyprctl monitors -j | jq ".[$1] | .activeWorkspace.id" '') + (pkgs.writeScriptBin "open-under-ranger" '' + #!/bin/sh + command="$1" + echo $command + file="''${*:2}" + file=''${file// /\\ } + echo $file + workspace=$(hyprctl monitors -j | jq ".[] | select(.specialWorkspace.name == \"special:scratch_ranger\") | .activeWorkspace.id") + if [ -z "''${workspace}" ]; then + hyprctl dispatch exec -- "$command"; + else + hyprctl dispatch exec "[workspace $workspace]" -- "$command" "$file"; + fi + hyprctl dispatch togglespecialworkspace scratch_ranger + '') (pkgs.writeScriptBin "screenshot-ocr" '' #!/bin/sh imgname="/tmp/screenshot-ocr-$(date +%Y%m%d%H%M%S).png" From b5f864ace98c8096b4d54190a214bb590ad47f54 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 28 Jan 2025 21:26:53 -0600 Subject: [PATCH 105/317] org-todo --- user/app/emacs/init.el | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index 1549303..d7ed751 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -305,6 +305,7 @@ (evil-define-key 'insert org-mode-map (kbd "") 'org-demote-subtree) (evil-define-key 'insert org-mode-map (kbd "") 'org-promote-subtree) (evil-define-key 'motion org-mode-map (kbd "mll") 'org-insert-link) + (evil-define-key 'motion org-mode-map (kbd "mt") 'org-todo) (global-set-key (kbd "C-j") 'evil-window-down) (global-set-key (kbd "C-k") 'evil-window-up) @@ -488,11 +489,18 @@ ("\\*poporg.*\\*" :regexp t :select t :other t ) ("\\`\\*helm.*?\\*\\'" :regexp t :size 0.3 :align t ) ("*Calendar*" :select t :size 0.3 :align below) - ("*info*" :select t :inhibit-window-quit t :same t) + ("*info*" :select t :inhibit-window-quit t :popup t) + ("*Org todo*" :select t :inhibit-window-quit t :same t :popup t) (magit-status-mode :select t :inhibit-window-quit t :same t) (magit-log-mode :select t :inhibit-window-quit t :same t) )) - (shackle-mode 1))) + (shackle-mode 1)) + (add-to-list 'display-buffer-alist '("\\*Org todo\\*" + (display-buffer-at-bottom) + (side . bottom) + (slot . 4) + (window-height . shrink-window-if-larger-than-buffer) + (dedicated . t)))) ;; Completion (use-package hotfuzz) From b2ea20d730fc1fb996e5368e906562782c8a9a0b Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 28 Jan 2025 21:42:00 -0600 Subject: [PATCH 106/317] Respawn eww bars when monitor connected --- user/wm/hyprland/hyprland.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index 0a81103..ad23546 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -62,6 +62,7 @@ in exec-once = protonmail-bridge --noninteractive #exec-once = waybar exec-once = eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2 + exec-once = hyprland-monitor-attached ~/.local/bin/eww-reload-bars exec-once = emacs --daemon exec-once = hypridle @@ -425,6 +426,7 @@ in }; home.packages = (with pkgs; [ + hyprland-monitor-attached caffeine-ng alacritty kitty @@ -537,7 +539,12 @@ in if pgrep -x nixos-rebuild > /dev/null || pgrep -x home-manager > /dev/null || pgrep -x kdenlive > /dev/null || pgrep -x FL64.exe > /dev/null || pgrep -x blender > /dev/null || pgrep -x flatpak > /dev/null; then echo "Shouldn't suspend"; sleep 10; else echo "Should suspend"; systemctl suspend; fi '') - ]); + ]); + home.file.".local/bin/eww-reload-bars.sh" = { + text = ''#!/bin/sh + eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2;''; + executable = true; + }; home.file.".config/hypr/hypridle.conf".text = '' general { lock_cmd = pgrep hyprlock || hyprlock From 0f95aa9305f248f3e3640462fbd445ff07255fb2 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 28 Jan 2025 21:47:51 -0600 Subject: [PATCH 107/317] insert items in motion state org mode --- user/app/emacs/init.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index d7ed751..bbacebf 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -302,6 +302,8 @@ (evil-define-key 'insert org-mode-map (kbd "") '+org/insert-item-below) (evil-define-key 'insert org-mode-map (kbd "") '+org/insert-item-above) + (evil-define-key 'motion org-mode-map (kbd "") '+org/insert-item-below) + (evil-define-key 'motion org-mode-map (kbd "") '+org/insert-item-above) (evil-define-key 'insert org-mode-map (kbd "") 'org-demote-subtree) (evil-define-key 'insert org-mode-map (kbd "") 'org-promote-subtree) (evil-define-key 'motion org-mode-map (kbd "mll") 'org-insert-link) From 2c56a2e3bbd6dd04ced9a1f22261d77ed76f233b Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 28 Jan 2025 22:10:37 -0600 Subject: [PATCH 108/317] +vterm --- user/app/emacs/default.nix | 2 +- user/app/emacs/init.el | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix index 7ab3167..b330d83 100644 --- a/user/app/emacs/default.nix +++ b/user/app/emacs/default.nix @@ -21,7 +21,7 @@ magit magit-file-icons magit-todos undo-fu undo-fu-session org-roam org-node org-node-fakeroam - vterm sudo-edit + vterm vterm-toggle sudo-edit direnv gdscript-mode nix-mode diff --git a/user/app/emacs/init.el b/user/app/emacs/init.el index bbacebf..4813f44 100644 --- a/user/app/emacs/init.el +++ b/user/app/emacs/init.el @@ -886,5 +886,37 @@ "l" 'dired-find-file " " 'nil) +(use-package vterm + :after evil) + +(use-package vterm-toggle + :after vterm + :config + (setq vterm-toggle-fullscreen-p nil) + (setq vterm-toggle-cd-auto-create-buffer nil) + (add-to-list 'display-buffer-alist + '((lambda (buffer-or-name _) + (let ((buffer (get-buffer buffer-or-name))) + (with-current-buffer buffer + (or (equal major-mode 'vterm-mode) + (string-prefix-p vterm-buffer-name (buffer-name buffer)))))) + (display-buffer-reuse-window display-buffer-at-bottom) + ;;(display-buffer-reuse-window display-buffer-in-direction) + ;;display-buffer-in-direction/direction/dedicated is added in emacs27 + ;;(direction . bottom) + ;;(dedicated . t) ;dedicated is supported in emacs27 + (reusable-frames . visible) + (window-height . 0.4))) + (defun vterm-toggle-cd-force () + (interactive) + (vterm-toggle-cd-show) + (vterm-toggle-insert-cd) + ) + (evil-define-key 'motion 'global (kbd "M-z") 'vterm-toggle-cd-force) + (evil-define-key 'insert 'global (kbd "M-z") 'vterm-toggle-cd-force) + (evil-define-key 'motion vterm-mode-map (kbd "M-z") 'vterm-toggle-hide) + (evil-define-key 'insert vterm-mode-map (kbd "M-z") 'vterm-toggle-hide) +) + (provide 'init) ;;; init.el ends here From c48136641c8f5c85052180f74c15092432477c7d Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 30 Jan 2025 17:53:31 -0600 Subject: [PATCH 109/317] fix script reference --- user/wm/hyprland/hyprland.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index ad23546..cbba667 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -62,7 +62,7 @@ in exec-once = protonmail-bridge --noninteractive #exec-once = waybar exec-once = eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2 - exec-once = hyprland-monitor-attached ~/.local/bin/eww-reload-bars + exec-once = hyprland-monitor-attached ~/.local/bin/eww-reload-bars.sh exec-once = emacs --daemon exec-once = hypridle From 99d4736759d870eef92c7645fa292ee0736e8b8f Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 31 Jan 2025 05:39:00 -0600 Subject: [PATCH 110/317] lollypop -> mpd --- user/wm/hyprland/hyprland.nix | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index cbba667..d108cea 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -121,12 +121,12 @@ in bind=CTRLALT,Delete,exec,hyprctl kill bind=SUPERSHIFT,K,exec,hyprctl kill - bind=,code:172,exec,lollypop -t - bind=,code:208,exec,lollypop -t - bind=,code:209,exec,lollypop -t - bind=,code:174,exec,lollypop -s - bind=,code:171,exec,lollypop -n - bind=,code:173,exec,lollypop -p + bind=,code:172,exec,mpc toggle + bind=,code:208,exec,mpc toggle + bind=,code:209,exec,mpc toggle + bind=,code:174,exec,mpc stop + bind=,code:171,exec,mpc next + bind=,code:173,exec,mpc prev bind = SUPER,R,pass,^(com\.obsproject\.Studio)$ bind = SUPERSHIFT,R,pass,^(com\.obsproject\.Studio)$ @@ -215,7 +215,7 @@ in exec-once = alacritty --class scratch_term exec-once = kitty --class scratch_ranger -e ranger exec-once = alacritty --class scratch_numbat -e numbat - exec-once = lollypop + exec-once = kitty --class scratch_music -e ncmpcpp exec-once = alacritty --class scratch_btm -e btm exec-once = element-desktop exec-once = pavucontrol @@ -226,7 +226,7 @@ in bind=SUPER,F,togglespecialworkspace,scratch_ranger bind=SUPER,N,exec,if hyprctl clients | grep scratch_numbat; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_numbat -e numbat; fi bind=SUPER,N,togglespecialworkspace,scratch_numbat - bind=SUPER,M,exec,if hyprctl clients | grep lollypop; then echo "scratch_ranger respawn not needed"; else lollypop; fi + bind=SUPER,M,exec,if hyprctl clients | grep scratch_music; then echo "scratch_music respawn not needed"; else kitty --class scratch_music -e ncmpcpp; fi bind=SUPER,M,togglespecialworkspace,scratch_music bind=SUPER,B,exec,if hyprctl clients | grep scratch_btm; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_btm -e btm; fi bind=SUPER,B,togglespecialworkspace,scratch_btm @@ -240,7 +240,7 @@ in $scratch_term = class:^(scratch_term)$ windowrulev2 = float,$scratch_term windowrulev2 = $scratchpadsize,$scratch_term - windowrulev2 = workspace special:scratch_term ,$scratch_term + windowrulev2 = workspace special:scratch_term silent ,$scratch_term windowrulev2 = center,$scratch_term $float_term = class:^(float_term)$ @@ -270,10 +270,11 @@ in windowrulev2 = workspace special:scratch_element silent,class:^(Element)$ windowrulev2 = center,class:^(Element)$ - windowrulev2 = float,class:^(lollypop)$ - windowrulev2 = size 85% 90%,class:^(lollypop)$ - windowrulev2 = workspace special:scratch_music silent,class:^(lollypop)$ - windowrulev2 = center,class:^(lollypop)$ + $scratch_music = class:^(scratch_music)$ + windowrulev2 = float,$scratch_music + windowrulev2 = $scratchpadsize,$scratch_music + windowrulev2 = workspace special:scratch_music silent,$scratch_music + windowrulev2 = center,$scratch_music $savetodisk = title:^(Save to Disk)$ windowrulev2 = float,$savetodisk @@ -325,7 +326,6 @@ in windowrulev2 = opacity 1.0,class:^(org.qutebrowser.qutebrowser),fullscreen:1 windowrulev2 = opacity 0.85,class:^(Element)$ windowrulev2 = opacity 0.85,class:^(Logseq)$ - windowrulev2 = opacity 0.85,class:^(lollypop)$ windowrulev2 = opacity 1.0,class:^(Brave-browser),fullscreen:1 windowrulev2 = opacity 1.0,class:^(librewolf),fullscreen:1 windowrulev2 = opacity 0.85,title:^(My Local Dashboard Awesome Homepage - qutebrowser)$ From 19fb076abd593cc0cd6dcc39d8e417d7befe39f1 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 31 Jan 2025 22:09:09 -0600 Subject: [PATCH 111/317] Updated system --- flake.lock | 81 ++++++++++++++++++----------------- flake.nix | 2 +- profiles/work/home.nix | 2 +- system/wm/hyprland.nix | 2 +- user/wm/hyprland/hyprland.nix | 3 -- 5 files changed, 44 insertions(+), 46 deletions(-) diff --git a/flake.lock b/flake.lock index 0a6394e..d67915c 100644 --- a/flake.lock +++ b/flake.lock @@ -86,27 +86,28 @@ "base16-vim": { "flake": false, "locked": { - "lastModified": 1735953590, - "narHash": "sha256-YbQwaApLFJobn/0lbpMKcJ8N5axKlW2QIGkDS5+xoSU=", + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", "owner": "tinted-theming", "repo": "base16-vim", - "rev": "c2a1232aa2c0ed27dcbf005779bcfe0e0ab5e85d", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", "type": "github" }, "original": { "owner": "tinted-theming", "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", "type": "github" } }, "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1737822304, - "narHash": "sha256-FBq7yonwKPh57ZYI4XUqYZZyxTWON3Ox5i45qYELkSs=", + "lastModified": 1737949234, + "narHash": "sha256-rkOIzVI0ND7775hWR+N4RxnI31ajYrsqkXVStB+Qf+8=", "owner": "StevenBlack", "repo": "hosts", - "rev": "55a9a74a5f40502ec61c56bcb4a39f851270d300", + "rev": "a0af3d5cb1b0fb88c8e6f2037331758f8fcb6109", "type": "github" }, "original": { @@ -124,17 +125,17 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1737811239, - "narHash": "sha256-X0C4HEcw3AdSgEH6YDHwC6w8xBxK0pVKyUYMoXU2f1w=", + "lastModified": 1737929355, + "narHash": "sha256-3HXBHEx9U229gLBrz2A8vrPbUikfaFsR3XOo8I2fGp8=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "be39fe2f8f4e922fc5f2402377531191f96f6b02", + "rev": "5071a4037c634d41a57926521fef2e179abe3bd9", "type": "github" }, "original": { "owner": "chaotic-cx", - "ref": "nyxpkgs-unstable", "repo": "nyx", + "rev": "5071a4037c634d41a57926521fef2e179abe3bd9", "type": "github" } }, @@ -146,11 +147,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1737825153, - "narHash": "sha256-R1p2ZXOydII+MT/SpeOXBjo/dgfD/gIArge2YAgSw38=", + "lastModified": 1738314889, + "narHash": "sha256-3qr0n2iMYeNedleoR9rHkFtiCfQKcVI9Ou7a9LKkt4w=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "4ebe4c890e7c8662ae31192359a56b0505cf10ba", + "rev": "393224b463dab363543ac2b6c96f41777516221c", "type": "github" }, "original": { @@ -416,11 +417,11 @@ ] }, "locked": { - "lastModified": 1737762889, - "narHash": "sha256-5HGG09bh/Yx0JA8wtBMAzt0HMCL1bYZ93x4IqzVExio=", + "lastModified": 1738275749, + "narHash": "sha256-PM+cGduJ05EZ+YXulqAwUFjvfKpPmW080mcuN6R1POw=", "owner": "nix-community", "repo": "home-manager", - "rev": "daf04c5950b676f47a794300657f1d3d14c1a120", + "rev": "a8159195bfaef3c64df75d3b1e6a68d49d392be9", "type": "github" }, "original": { @@ -467,11 +468,11 @@ ] }, "locked": { - "lastModified": 1737634937, - "narHash": "sha256-Ffw4ujFpi++6pPHe+gCBOfDgAoNlzVPZN6MReC1beu8=", + "lastModified": 1738178255, + "narHash": "sha256-+D6Nu2ewXbMTFzx/Q4jDOo+LAOUPr0cxQJg5k33daIE=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "9c5dd1f7c825ee47f72727ad0a4e16ca46a2688e", + "rev": "dcadd3398abe146d60c67e0d9ee6e27b301cae82", "type": "github" }, "original": { @@ -827,16 +828,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737632463, - "narHash": "sha256-38J9QfeGSej341ouwzqf77WIHAScihAKCt8PQJ+NH28=", - "owner": "NixOS", + "lastModified": 1737929020, + "narHash": "sha256-UC9ARAC8mRxQozZ6eO+KofV2Dd7KShl6X8XZz/ecNHg=", + "owner": "PedroHLC", "repo": "nixpkgs", - "rev": "0aa475546ed21629c4f5bbf90e38c846a99ec9e9", + "rev": "b200ab4d4c4bc99681909139b900f10ad70bc02b", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", + "owner": "PedroHLC", + "ref": "revert-376078", "repo": "nixpkgs", "type": "github" } @@ -875,11 +876,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1737672001, - "narHash": "sha256-YnHJJ19wqmibLQdUeq9xzE6CjrMA568KN/lFPuSVs4I=", + "lastModified": 1738163270, + "narHash": "sha256-B/7Y1v4y+msFFBW1JAdFjNvVthvNdJKiN6EGRPnqfno=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "035f8c0853c2977b24ffc4d0a42c74f00b182cd8", + "rev": "59e618d90c065f55ae48446f307e8c09565d5ab0", "type": "github" }, "original": { @@ -907,11 +908,11 @@ }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1737672001, - "narHash": "sha256-YnHJJ19wqmibLQdUeq9xzE6CjrMA568KN/lFPuSVs4I=", + "lastModified": 1738163270, + "narHash": "sha256-B/7Y1v4y+msFFBW1JAdFjNvVthvNdJKiN6EGRPnqfno=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "035f8c0853c2977b24ffc4d0a42c74f00b182cd8", + "rev": "59e618d90c065f55ae48446f307e8c09565d5ab0", "type": "github" }, "original": { @@ -922,11 +923,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1737746512, - "narHash": "sha256-nU6AezEX4EuahTO1YopzueAXfjFfmCHylYEFCagduHU=", + "lastModified": 1738142207, + "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "825479c345a7f806485b7f00dbe3abb50641b083", + "rev": "9d3ae807ebd2981d593cddd0080856873139aa40", "type": "github" }, "original": { @@ -1068,11 +1069,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1737771740, - "narHash": "sha256-lWIdF4qke63TdCHnJ0QaUHfG8YvsDrBqzL4jiHYQd+Y=", + "lastModified": 1738290352, + "narHash": "sha256-YKOHUmc0Clm4tMV8grnxYL4IIwtjTayoq/3nqk0QM7k=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "cfaaa1dddd280af09aca84af84612fbccd986ae2", + "rev": "b031b584125d33d23a0182f91ddbaf3ab4880236", "type": "github" }, "original": { @@ -1117,11 +1118,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1737833281, - "narHash": "sha256-+hCZqNMvcjGinYinsITX+kJvqkEqcWheaNX5WGGcRow=", + "lastModified": 1738278499, + "narHash": "sha256-q1SUyXSQ9znHTME53/vPLe+Ga3V1wW3X3gWfa8JsBUM=", "owner": "danth", "repo": "stylix", - "rev": "7c1c3259283f2da9c3d15c9096e7b8864f82bd4c", + "rev": "b00c9f46ae6c27074d24d2db390f0ac5ebcc329f", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 7eab8e2..5075462 100644 --- a/flake.nix +++ b/flake.nix @@ -196,7 +196,7 @@ inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs-stable.url = "nixpkgs/nixos-24.11"; - chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; + chaotic.url = "github:chaotic-cx/nyx/5071a4037c634d41a57926521fef2e179abe3bd9"; home-manager-unstable.url = "github:nix-community/home-manager/master"; home-manager-unstable.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/profiles/work/home.nix b/profiles/work/home.nix index 2bee9f6..d59a254 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -129,7 +129,7 @@ (pkgs-stable.lollypop.override { youtubeSupport = false; }) vlc mpv - yt-dlp + yt-dlp_git blender-hip freecad libresprite diff --git a/system/wm/hyprland.nix b/system/wm/hyprland.nix index b17a009..15dc2d7 100644 --- a/system/wm/hyprland.nix +++ b/system/wm/hyprland.nix @@ -22,7 +22,7 @@ in xwayland = { enable = true; }; - portalPackage = pkgs-hyprland.xdg-desktop-portal-hyprland; + portalPackage = pkgs.xdg-desktop-portal-hyprland; }; }; diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix index d108cea..78bdf5a 100644 --- a/user/wm/hyprland/hyprland.nix +++ b/user/wm/hyprland/hyprland.nix @@ -476,9 +476,6 @@ in libsForQt5.qt5.qtwayland qt6.qtwayland xdg-utils - xdg-desktop-portal - xdg-desktop-portal-gtk - xdg-desktop-portal-hyprland wlsunset pavucontrol pamixer From 1fa8b17b07387422dec41d68671be8ad6d0bb11d Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 31 Jan 2025 22:09:43 -0600 Subject: [PATCH 112/317] Swapped some apps and added config --- profiles/work/home.nix | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/profiles/work/home.nix b/profiles/work/home.nix index d59a254..55dc553 100644 --- a/profiles/work/home.nix +++ b/profiles/work/home.nix @@ -54,6 +54,7 @@ # Office nextcloud-client (pkgs-stable.libreoffice-fresh) + geary mate.atril openboard xournalpp @@ -126,9 +127,10 @@ pinta inkscape godot_4 - (pkgs-stable.lollypop.override { youtubeSupport = false; }) vlc mpv + ncmpcpp + mpc yt-dlp_git blender-hip freecad @@ -205,6 +207,26 @@ startInBackground = true; }; + services.mpd = rec { + enable = true; + musicDirectory = config.xdg.userDirs.music+"/Songs"; + playlistDirectory = config.xdg.userDirs.music+"/Playlists"; + dbFile = musicDirectory+"/mpd.db"; + extraConfig = '' + audio_output { + type "pipewire" + name "PipeWire Sound Server" + } + ''; + }; + + programs.ncmpcpp.bindings = [ + { key = "j"; command = "scroll_down"; } + { key = "k"; command = "scroll_up"; } + { key = "J"; command = [ "select_item" "scroll_down" ]; } + { key = "K"; command = [ "select_item" "scroll_up" ]; } + ]; + xdg.enable = true; xdg.userDirs = { enable = true; From 0453901d1701809e4c6a8e38aa7226d2ef2dce17 Mon Sep 17 00:00:00 2001 From: Emmet K Date: Sun, 9 Feb 2025 16:50:26 -0600 Subject: [PATCH 113/317] Major config overhaul: use custom modules, setup for multi-host config, and less boilerplate --- flake.lock | 197 +-- flake.nix | 219 +-- {profiles => hosts}/README.org | 0 .../personal => hosts/snowfire}/README.org | 0 hosts/snowfire/configuration.nix | 50 + hosts/snowfire/default.nix | 14 + .../snowfire}/hardware-configuration.nix | 1 + hosts/snowfire/home.nix | 44 + {system => modules/system}/README.org | 0 modules/system/bluetooth/default.nix | 16 + modules/system/configuration.nix | 85 ++ modules/system/default.nix | 29 + modules/system/flatpak/default.nix | 16 + modules/system/gaming/default.nix | 20 + modules/system/hyprland/default.nix | 98 ++ .../hyprland}/iio-hyprland-hyprpaper.patch | 0 modules/system/kernel/default.nix | 29 + modules/system/nix/default.nix | 31 + modules/system/phoenix/default.nix | 80 + modules/system/printing/default.nix | 20 + modules/system/security/automount/default.nix | 17 + modules/system/security/blocklist/default.nix | 18 + modules/system/security/doas/default.nix | 42 + modules/system/security/firejail/default.nix | 30 + .../firejail/profiles}/prismlauncher.profile | 0 modules/system/security/firewall/default.nix | 22 + modules/system/security/gpg/default.nix | 18 + modules/system/security/openvpn/default.nix | 16 + modules/system/security/sshd/default.nix | 25 + modules/system/stylix/default.nix | 56 + modules/system/tlp/default.nix | 58 + modules/system/users/default.nix | 41 + .../system/virtualization/docker/default.nix | 26 + .../virtual-machines/default.nix | 23 + {themes => modules/themes}/README.org | 0 {themes => modules/themes}/alph/README.org | 0 {themes => modules/themes}/alph/default.nix | 0 {themes => modules/themes}/ashes/README.org | 0 {themes => modules/themes}/ashes/default.nix | 0 .../themes}/atelier-cave/README.org | 0 .../themes}/atelier-cave/default.nix | 0 .../themes}/atelier-dune/README.org | 0 .../themes}/atelier-dune/default.nix | 0 .../themes}/atelier-estuary/README.org | 0 .../themes}/atelier-estuary/default.nix | 0 .../themes}/atelier-forest/README.org | 0 .../themes}/atelier-forest/default.nix | 0 .../themes}/atelier-heath/README.org | 0 .../themes}/atelier-heath/default.nix | 0 .../themes}/atelier-lakeside/README.org | 0 .../themes}/atelier-lakeside/default.nix | 0 .../themes}/atelier-plateau/README.org | 0 .../themes}/atelier-plateau/default.nix | 0 .../themes}/atelier-savanna/README.org | 0 .../themes}/atelier-savanna/default.nix | 0 .../themes}/atelier-seaside/README.org | 0 .../themes}/atelier-seaside/default.nix | 0 .../themes}/atelier-sulphurpool/README.org | 0 .../themes}/atelier-sulphurpool/default.nix | 0 .../themes}/ayu-dark/README.org | 0 .../themes}/ayu-dark/default.nix | 0 {themes => modules/themes}/background-test.sh | 0 {themes => modules/themes}/bespin/README.org | 0 {themes => modules/themes}/bespin/default.nix | 0 {themes => modules/themes}/caret/README.org | 0 {themes => modules/themes}/caret/default.nix | 0 .../themes}/catppuccin-frappe/README.org | 0 .../themes}/catppuccin-frappe/default.nix | 0 .../themes}/catppuccin-mocha/README.org | 0 .../themes}/catppuccin-mocha/default.nix | 0 .../themes}/darkmoss/README.org | 0 .../themes}/darkmoss/default.nix | 0 .../themes}/doom-one/README.org | 0 .../themes}/doom-one/default.nix | 0 {themes => modules/themes}/dracula/README.org | 0 .../themes}/dracula/default.nix | 0 {themes => modules/themes}/ember/README.org | 0 {themes => modules/themes}/ember/default.nix | 0 {themes => modules/themes}/emil/README.org | 0 {themes => modules/themes}/emil/default.nix | 0 {themes => modules/themes}/eris/README.org | 0 {themes => modules/themes}/eris/default.nix | 0 {themes => modules/themes}/eva/README.org | 0 {themes => modules/themes}/eva/default.nix | 0 .../themes}/everforest/README.org | 0 .../themes}/everforest/default.nix | 0 .../themes}/fairy-floss/README.org | 0 .../themes}/fairy-floss/default.nix | 0 .../themes}/gigavolt/README.org | 0 .../themes}/gigavolt/default.nix | 0 .../themes}/gruvbox-dark-hard/README.org | 0 .../themes}/gruvbox-dark-hard/default.nix | 0 .../themes}/gruvbox-dark-medium/README.org | 0 .../themes}/gruvbox-dark-medium/default.nix | 0 .../themes}/gruvbox-light-hard/README.org | 0 .../themes}/gruvbox-light-hard/default.nix | 0 .../themes}/gruvbox-light-medium/README.org | 0 .../themes}/gruvbox-light-medium/default.nix | 0 {themes => modules/themes}/helios/README.org | 0 {themes => modules/themes}/helios/default.nix | 0 {themes => modules/themes}/henna/README.org | 0 {themes => modules/themes}/henna/default.nix | 0 .../themes}/horizon-dark/README.org | 0 .../themes}/horizon-dark/default.nix | 0 {themes => modules/themes}/io/README.org | 0 {themes => modules/themes}/io/default.nix | 0 {themes => modules/themes}/isotope/README.org | 0 .../themes}/isotope/default.nix | 0 .../themes}/manegarm/README.org | 0 .../themes}/manegarm/default.nix | 0 .../themes}/material-vivid/README.org | 0 .../themes}/material-vivid/default.nix | 0 .../themes}/miramare/README.org | 0 .../themes}/miramare/default.nix | 0 {themes => modules/themes}/monokai/README.org | 0 .../themes}/monokai/default.nix | 0 {themes => modules/themes}/nord/README.org | 0 {themes => modules/themes}/nord/default.nix | 0 .../themes}/oceanic-next/README.org | 0 .../themes}/oceanic-next/default.nix | 0 .../themes}/old-hope/README.org | 0 .../themes}/old-hope/default.nix | 0 .../themes}/outrun-dark/README.org | 0 .../themes}/outrun-dark/default.nix | 0 .../themes}/selenized-dark/README.org | 0 .../themes}/selenized-dark/default.nix | 0 .../themes}/selenized-light/README.org | 0 .../themes}/selenized-light/default.nix | 0 .../themes}/solarized-dark/README.org | 0 .../themes}/solarized-dark/default.nix | 0 .../themes}/solarized-light/README.org | 0 .../themes}/solarized-light/default.nix | 0 .../themes}/spaceduck/README.org | 0 .../themes}/spaceduck/default.nix | 0 {themes => modules/themes}/stella/README.org | 0 {themes => modules/themes}/stella/default.nix | 0 .../themes}/summerfruit-dark/README.org | 0 .../themes}/summerfruit-dark/default.nix | 0 .../themes}/tomorrow-night/README.org | 0 .../themes}/tomorrow-night/default.nix | 0 .../themes}/twilight/README.org | 0 .../themes}/twilight/default.nix | 0 {themes => modules/themes}/ubuntu/README.org | 0 {themes => modules/themes}/ubuntu/default.nix | 0 .../themes}/uwunicorn/README.org | 0 .../themes}/uwunicorn/default.nix | 0 .../themes}/windows-95/README.org | 0 .../themes}/windows-95/default.nix | 0 .../themes}/woodland/README.org | 0 .../themes}/woodland/default.nix | 0 .../themes}/xcode-dusk/README.org | 0 .../themes}/xcode-dusk/default.nix | 0 {user => modules/user}/README.org | 0 modules/user/art/default.nix | 22 + .../user}/blender/applyprefs.py | 0 modules/user/blender/default.nix | 24 + modules/user/bluetooth/default.nix | 20 + modules/user/browser/brave.nix | 44 + modules/user/browser/default.nix | 30 + modules/user/browser/librewolf.nix | 51 + .../user}/browser/qutebrowser-logo.png | Bin .../user}/browser/qutebrowser.nix | 307 ++-- modules/user/default.nix | 29 + modules/user/dmenu-scripts/default.nix | 14 + .../dmenu-scripts/networkmanager-dmenu.nix | 23 + modules/user/editor/default.nix | 30 + modules/user/emacs/default.nix | 74 + {user/app => modules/user}/emacs/init.el | 1 - .../emacs/lib}/doom-stylix-theme.el.mustache | 0 .../emacs/lib/line-wrapping-and-numbers.el | 0 modules/user/engineering/default.nix | 20 + modules/user/flatpak/default.nix | 22 + modules/user/git/git.nix | 22 + modules/user/godot/default.nix | 197 +++ modules/user/home.nix | 6 + modules/user/hyprland/default.nix | 786 ++++++++++ .../user}/hyprland/eww/eww.scss.mustache | 0 .../wm => modules/user}/hyprland/eww/eww.yuck | 0 .../user/hyprland/hyprprofiles/default.nix | 76 + .../profiles/Default/start-hook.sh | 0 .../profiles/Gamdev/start-hook.sh | 0 .../profiles/Teaching/start-hook.sh | 0 .../hyprprofiles/profiles/Tech/start-hook.sh | 0 modules/user/japanese/default.nix | 121 ++ modules/user/keepass/default.nix | 18 + modules/user/media/default.nix | 42 + modules/user/music/default.nix | 69 + .../pkgs => modules/user/music}/flstudio.png | Bin modules/user/nix/default.nix | 31 + modules/user/office/default.nix | 33 + {user/app => modules/user}/ranger/README.org | 0 .../user}/ranger/colorschemes/hail.py | 0 {user/app => modules/user}/ranger/commands.py | 0 .../user}/ranger/commands_full.py | 0 modules/user/ranger/ranger.nix | 88 ++ {user/app => modules/user}/ranger/rc.conf | 0 {user/app => modules/user}/ranger/rifle.conf | 2 +- {user/app => modules/user}/ranger/scope.sh | 0 modules/user/recording/default.nix | 20 + modules/user/remote/default.nix | 18 + modules/user/shell/default.nix | 63 + modules/user/shell/term-apps-extra.nix | 46 + modules/user/shell/term-apps.nix | 66 + .../user/stylix}/Trolltech.conf.mustache | 0 modules/user/stylix/default.nix | 127 ++ .../user/stylix}/oomox-current.conf.mustache | 0 .../style => modules/user/stylix}/qt5ct.conf | 0 modules/user/terminal/alacritty.nix | 19 + modules/user/terminal/default.nix | 16 + modules/user/terminal/kitty.nix | 20 + modules/user/userInfo/default.nix | 18 + .../virtual-machines/default.nix | 32 + modules/user/xdg/default.nix | 39 + patches/README.org | 3 +- profiles/homelab/README.org | 3 - profiles/homelab/base.nix | 92 -- profiles/homelab/configuration.nix | 9 - profiles/homelab/home.nix | 25 - profiles/nix-on-droid/README.org | 3 - profiles/nix-on-droid/configuration.nix | 59 - profiles/nix-on-droid/home.nix | 50 - profiles/personal/configuration.nix | 9 - profiles/personal/home.nix | 27 - profiles/work/README.org | 3 - profiles/work/configuration.nix | 166 --- profiles/work/home.nix | 276 ---- profiles/worklab/README.org | 3 - profiles/worklab/configuration.nix | 9 - profiles/worklab/home.nix | 5 - profiles/wsl/README.org | 7 - profiles/wsl/configuration.nix | 110 -- profiles/wsl/home.nix | 67 - profiles/wsl/nixos-wsl/LICENSE | 202 --- profiles/wsl/nixos-wsl/README.md | 112 -- profiles/wsl/nixos-wsl/default.nix | 13 - profiles/wsl/nixos-wsl/flake.lock | 59 - profiles/wsl/nixos-wsl/flake.nix | 56 - .../wsl/nixos-wsl/modules/build-tarball.nix | 97 -- .../wsl/nixos-wsl/modules/docker-desktop.nix | 41 - .../wsl/nixos-wsl/modules/docker-native.nix | 40 - profiles/wsl/nixos-wsl/modules/installer.nix | 73 - profiles/wsl/nixos-wsl/modules/interop.nix | 88 -- profiles/wsl/nixos-wsl/modules/wsl-distro.nix | 139 -- profiles/wsl/nixos-wsl/syschdemd.nix | 28 - profiles/wsl/nixos-wsl/syschdemd.sh | 78 - system/app/docker.nix | 26 - system/app/flatpak.nix | 7 - system/app/gamemode.nix | 7 - system/app/prismlauncher.nix | 5 - system/app/steam.nix | 7 - system/app/virtualization.nix | 14 - system/bin/phoenix.nix | 71 - system/hardware/bluetooth.nix | 7 - system/hardware/kernel.nix | 6 - system/hardware/opengl.nix | 6 - system/hardware/power.nix | 48 - system/hardware/printing.nix | 10 - system/hardware/systemd.nix | 7 - system/hardware/time.nix | 5 - system/security/automount.nix | 7 - system/security/blocklist.nix | 9 - system/security/doas.nix | 36 - system/security/firejail.nix | 20 - system/security/firewall.nix | 11 - system/security/gpg.nix | 11 - system/security/openvpn.nix | 6 - system/security/sshd.nix | 14 - system/style/stylix.nix | 47 - system/wm/dbus.nix | 12 - system/wm/fonts.nix | 11 - system/wm/gnome-keyring.nix | 7 - system/wm/hyprland.nix | 49 - system/wm/pipewire.nix | 13 - system/wm/wayland.nix | 32 - system/wm/x11.nix | 31 - user/app/blender/default.nix | 13 - user/app/browser/brave.nix | 19 - user/app/browser/librewolf.nix | 46 - user/app/browser/qute-containers.nix | 34 - .../dmenu-scripts/networkmanager-dmenu.nix | 18 - user/app/emacs/default.nix | 42 - user/app/emacs/ultra-scroll.nix | 19 - user/app/flatpak/flatpak.nix | 12 - user/app/git/git.nix | 14 - user/app/godot/default.nix | 186 --- user/app/keepass/keepass.nix | 23 - user/app/ranger/ranger.nix | 48 - user/app/terminal/alacritty.nix | 11 - user/app/terminal/kitty.nix | 12 - user/app/virtualization/virtualization.nix | 23 - user/hardware/bluetooth.nix | 10 - user/pkgs/pokemon-colorscripts.nix | 30 - user/pkgs/ranger.nix | 39 - user/shell/cli-collection.nix | 34 - user/shell/sh.nix | 52 - user/style/stylix.nix | 118 -- user/wm/hyprland/hyprland.nix | 1309 ----------------- .../wm/hyprland/hyprprofiles/hyprprofiles.nix | 63 - .../hyprprofiles/profiles/Bard/start-hook.sh | 5 - .../wm/hyprland/patches/noactiveclients.patch | 51 - .../wm/hyprland/patches/waybarbatupdate.patch | 192 --- user/wm/hyprland/patches/waybarpaupdate.patch | 71 - user/wm/input/nihongo.nix | 111 -- 303 files changed, 3560 insertions(+), 5566 deletions(-) rename {profiles => hosts}/README.org (100%) rename {profiles/personal => hosts/snowfire}/README.org (100%) create mode 100644 hosts/snowfire/configuration.nix create mode 100644 hosts/snowfire/default.nix rename {system => hosts/snowfire}/hardware-configuration.nix (99%) create mode 100644 hosts/snowfire/home.nix rename {system => modules/system}/README.org (100%) create mode 100644 modules/system/bluetooth/default.nix create mode 100644 modules/system/configuration.nix create mode 100644 modules/system/default.nix create mode 100644 modules/system/flatpak/default.nix create mode 100644 modules/system/gaming/default.nix create mode 100644 modules/system/hyprland/default.nix rename {system/wm => modules/system/hyprland}/iio-hyprland-hyprpaper.patch (100%) create mode 100644 modules/system/kernel/default.nix create mode 100644 modules/system/nix/default.nix create mode 100644 modules/system/phoenix/default.nix create mode 100644 modules/system/printing/default.nix create mode 100644 modules/system/security/automount/default.nix create mode 100644 modules/system/security/blocklist/default.nix create mode 100644 modules/system/security/doas/default.nix create mode 100644 modules/system/security/firejail/default.nix rename {system/security/firejail-profiles => modules/system/security/firejail/profiles}/prismlauncher.profile (100%) create mode 100644 modules/system/security/firewall/default.nix create mode 100644 modules/system/security/gpg/default.nix create mode 100644 modules/system/security/openvpn/default.nix create mode 100644 modules/system/security/sshd/default.nix create mode 100644 modules/system/stylix/default.nix create mode 100644 modules/system/tlp/default.nix create mode 100644 modules/system/users/default.nix create mode 100644 modules/system/virtualization/docker/default.nix create mode 100644 modules/system/virtualization/virtual-machines/default.nix rename {themes => modules/themes}/README.org (100%) rename {themes => modules/themes}/alph/README.org (100%) rename {themes => modules/themes}/alph/default.nix (100%) rename {themes => modules/themes}/ashes/README.org (100%) rename {themes => modules/themes}/ashes/default.nix (100%) rename {themes => modules/themes}/atelier-cave/README.org (100%) rename {themes => modules/themes}/atelier-cave/default.nix (100%) rename {themes => modules/themes}/atelier-dune/README.org (100%) rename {themes => modules/themes}/atelier-dune/default.nix (100%) rename {themes => modules/themes}/atelier-estuary/README.org (100%) rename {themes => modules/themes}/atelier-estuary/default.nix (100%) rename {themes => modules/themes}/atelier-forest/README.org (100%) rename {themes => modules/themes}/atelier-forest/default.nix (100%) rename {themes => modules/themes}/atelier-heath/README.org (100%) rename {themes => modules/themes}/atelier-heath/default.nix (100%) rename {themes => modules/themes}/atelier-lakeside/README.org (100%) rename {themes => modules/themes}/atelier-lakeside/default.nix (100%) rename {themes => modules/themes}/atelier-plateau/README.org (100%) rename {themes => modules/themes}/atelier-plateau/default.nix (100%) rename {themes => modules/themes}/atelier-savanna/README.org (100%) rename {themes => modules/themes}/atelier-savanna/default.nix (100%) rename {themes => modules/themes}/atelier-seaside/README.org (100%) rename {themes => modules/themes}/atelier-seaside/default.nix (100%) rename {themes => modules/themes}/atelier-sulphurpool/README.org (100%) rename {themes => modules/themes}/atelier-sulphurpool/default.nix (100%) rename {themes => modules/themes}/ayu-dark/README.org (100%) rename {themes => modules/themes}/ayu-dark/default.nix (100%) rename {themes => modules/themes}/background-test.sh (100%) rename {themes => modules/themes}/bespin/README.org (100%) rename {themes => modules/themes}/bespin/default.nix (100%) rename {themes => modules/themes}/caret/README.org (100%) rename {themes => modules/themes}/caret/default.nix (100%) rename {themes => modules/themes}/catppuccin-frappe/README.org (100%) rename {themes => modules/themes}/catppuccin-frappe/default.nix (100%) rename {themes => modules/themes}/catppuccin-mocha/README.org (100%) rename {themes => modules/themes}/catppuccin-mocha/default.nix (100%) rename {themes => modules/themes}/darkmoss/README.org (100%) rename {themes => modules/themes}/darkmoss/default.nix (100%) rename {themes => modules/themes}/doom-one/README.org (100%) rename {themes => modules/themes}/doom-one/default.nix (100%) rename {themes => modules/themes}/dracula/README.org (100%) rename {themes => modules/themes}/dracula/default.nix (100%) rename {themes => modules/themes}/ember/README.org (100%) rename {themes => modules/themes}/ember/default.nix (100%) rename {themes => modules/themes}/emil/README.org (100%) rename {themes => modules/themes}/emil/default.nix (100%) rename {themes => modules/themes}/eris/README.org (100%) rename {themes => modules/themes}/eris/default.nix (100%) rename {themes => modules/themes}/eva/README.org (100%) rename {themes => modules/themes}/eva/default.nix (100%) rename {themes => modules/themes}/everforest/README.org (100%) rename {themes => modules/themes}/everforest/default.nix (100%) rename {themes => modules/themes}/fairy-floss/README.org (100%) rename {themes => modules/themes}/fairy-floss/default.nix (100%) rename {themes => modules/themes}/gigavolt/README.org (100%) rename {themes => modules/themes}/gigavolt/default.nix (100%) rename {themes => modules/themes}/gruvbox-dark-hard/README.org (100%) rename {themes => modules/themes}/gruvbox-dark-hard/default.nix (100%) rename {themes => modules/themes}/gruvbox-dark-medium/README.org (100%) rename {themes => modules/themes}/gruvbox-dark-medium/default.nix (100%) rename {themes => modules/themes}/gruvbox-light-hard/README.org (100%) rename {themes => modules/themes}/gruvbox-light-hard/default.nix (100%) rename {themes => modules/themes}/gruvbox-light-medium/README.org (100%) rename {themes => modules/themes}/gruvbox-light-medium/default.nix (100%) rename {themes => modules/themes}/helios/README.org (100%) rename {themes => modules/themes}/helios/default.nix (100%) rename {themes => modules/themes}/henna/README.org (100%) rename {themes => modules/themes}/henna/default.nix (100%) rename {themes => modules/themes}/horizon-dark/README.org (100%) rename {themes => modules/themes}/horizon-dark/default.nix (100%) rename {themes => modules/themes}/io/README.org (100%) rename {themes => modules/themes}/io/default.nix (100%) rename {themes => modules/themes}/isotope/README.org (100%) rename {themes => modules/themes}/isotope/default.nix (100%) rename {themes => modules/themes}/manegarm/README.org (100%) rename {themes => modules/themes}/manegarm/default.nix (100%) rename {themes => modules/themes}/material-vivid/README.org (100%) rename {themes => modules/themes}/material-vivid/default.nix (100%) rename {themes => modules/themes}/miramare/README.org (100%) rename {themes => modules/themes}/miramare/default.nix (100%) rename {themes => modules/themes}/monokai/README.org (100%) rename {themes => modules/themes}/monokai/default.nix (100%) rename {themes => modules/themes}/nord/README.org (100%) rename {themes => modules/themes}/nord/default.nix (100%) rename {themes => modules/themes}/oceanic-next/README.org (100%) rename {themes => modules/themes}/oceanic-next/default.nix (100%) rename {themes => modules/themes}/old-hope/README.org (100%) rename {themes => modules/themes}/old-hope/default.nix (100%) rename {themes => modules/themes}/outrun-dark/README.org (100%) rename {themes => modules/themes}/outrun-dark/default.nix (100%) rename {themes => modules/themes}/selenized-dark/README.org (100%) rename {themes => modules/themes}/selenized-dark/default.nix (100%) rename {themes => modules/themes}/selenized-light/README.org (100%) rename {themes => modules/themes}/selenized-light/default.nix (100%) rename {themes => modules/themes}/solarized-dark/README.org (100%) rename {themes => modules/themes}/solarized-dark/default.nix (100%) rename {themes => modules/themes}/solarized-light/README.org (100%) rename {themes => modules/themes}/solarized-light/default.nix (100%) rename {themes => modules/themes}/spaceduck/README.org (100%) rename {themes => modules/themes}/spaceduck/default.nix (100%) rename {themes => modules/themes}/stella/README.org (100%) rename {themes => modules/themes}/stella/default.nix (100%) rename {themes => modules/themes}/summerfruit-dark/README.org (100%) rename {themes => modules/themes}/summerfruit-dark/default.nix (100%) rename {themes => modules/themes}/tomorrow-night/README.org (100%) rename {themes => modules/themes}/tomorrow-night/default.nix (100%) rename {themes => modules/themes}/twilight/README.org (100%) rename {themes => modules/themes}/twilight/default.nix (100%) rename {themes => modules/themes}/ubuntu/README.org (100%) rename {themes => modules/themes}/ubuntu/default.nix (100%) rename {themes => modules/themes}/uwunicorn/README.org (100%) rename {themes => modules/themes}/uwunicorn/default.nix (100%) rename {themes => modules/themes}/windows-95/README.org (100%) rename {themes => modules/themes}/windows-95/default.nix (100%) rename {themes => modules/themes}/woodland/README.org (100%) rename {themes => modules/themes}/woodland/default.nix (100%) rename {themes => modules/themes}/xcode-dusk/README.org (100%) rename {themes => modules/themes}/xcode-dusk/default.nix (100%) rename {user => modules/user}/README.org (100%) create mode 100644 modules/user/art/default.nix rename {user/app => modules/user}/blender/applyprefs.py (100%) create mode 100644 modules/user/blender/default.nix create mode 100644 modules/user/bluetooth/default.nix create mode 100644 modules/user/browser/brave.nix create mode 100644 modules/user/browser/default.nix create mode 100644 modules/user/browser/librewolf.nix rename {user/app => modules/user}/browser/qutebrowser-logo.png (100%) rename {user/app => modules/user}/browser/qutebrowser.nix (59%) create mode 100644 modules/user/default.nix create mode 100644 modules/user/dmenu-scripts/default.nix create mode 100644 modules/user/dmenu-scripts/networkmanager-dmenu.nix create mode 100644 modules/user/editor/default.nix create mode 100644 modules/user/emacs/default.nix rename {user/app => modules/user}/emacs/init.el (99%) rename {user/app/emacs => modules/user/emacs/lib}/doom-stylix-theme.el.mustache (100%) rename {user/app => modules/user}/emacs/lib/line-wrapping-and-numbers.el (100%) create mode 100644 modules/user/engineering/default.nix create mode 100644 modules/user/flatpak/default.nix create mode 100644 modules/user/git/git.nix create mode 100644 modules/user/godot/default.nix create mode 100644 modules/user/home.nix create mode 100644 modules/user/hyprland/default.nix rename {user/wm => modules/user}/hyprland/eww/eww.scss.mustache (100%) rename {user/wm => modules/user}/hyprland/eww/eww.yuck (100%) create mode 100644 modules/user/hyprland/hyprprofiles/default.nix rename {user/wm => modules/user}/hyprland/hyprprofiles/profiles/Default/start-hook.sh (100%) rename {user/wm => modules/user}/hyprland/hyprprofiles/profiles/Gamdev/start-hook.sh (100%) rename {user/wm => modules/user}/hyprland/hyprprofiles/profiles/Teaching/start-hook.sh (100%) rename {user/wm => modules/user}/hyprland/hyprprofiles/profiles/Tech/start-hook.sh (100%) create mode 100644 modules/user/japanese/default.nix create mode 100644 modules/user/keepass/default.nix create mode 100644 modules/user/media/default.nix create mode 100644 modules/user/music/default.nix rename {user/pkgs => modules/user/music}/flstudio.png (100%) create mode 100644 modules/user/nix/default.nix create mode 100644 modules/user/office/default.nix rename {user/app => modules/user}/ranger/README.org (100%) rename {user/app => modules/user}/ranger/colorschemes/hail.py (100%) rename {user/app => modules/user}/ranger/commands.py (100%) rename {user/app => modules/user}/ranger/commands_full.py (100%) create mode 100644 modules/user/ranger/ranger.nix rename {user/app => modules/user}/ranger/rc.conf (100%) rename {user/app => modules/user}/ranger/rifle.conf (99%) rename {user/app => modules/user}/ranger/scope.sh (100%) create mode 100644 modules/user/recording/default.nix create mode 100644 modules/user/remote/default.nix create mode 100644 modules/user/shell/default.nix create mode 100644 modules/user/shell/term-apps-extra.nix create mode 100644 modules/user/shell/term-apps.nix rename {user/style => modules/user/stylix}/Trolltech.conf.mustache (100%) create mode 100644 modules/user/stylix/default.nix rename {user/style => modules/user/stylix}/oomox-current.conf.mustache (100%) rename {user/style => modules/user/stylix}/qt5ct.conf (100%) create mode 100644 modules/user/terminal/alacritty.nix create mode 100644 modules/user/terminal/default.nix create mode 100644 modules/user/terminal/kitty.nix create mode 100644 modules/user/userInfo/default.nix create mode 100644 modules/user/virtualization/virtual-machines/default.nix create mode 100644 modules/user/xdg/default.nix delete mode 100644 profiles/homelab/README.org delete mode 100644 profiles/homelab/base.nix delete mode 100644 profiles/homelab/configuration.nix delete mode 100644 profiles/homelab/home.nix delete mode 100644 profiles/nix-on-droid/README.org delete mode 100644 profiles/nix-on-droid/configuration.nix delete mode 100644 profiles/nix-on-droid/home.nix delete mode 100644 profiles/personal/configuration.nix delete mode 100644 profiles/personal/home.nix delete mode 100644 profiles/work/README.org delete mode 100644 profiles/work/configuration.nix delete mode 100644 profiles/work/home.nix delete mode 100644 profiles/worklab/README.org delete mode 100644 profiles/worklab/configuration.nix delete mode 100644 profiles/worklab/home.nix delete mode 100644 profiles/wsl/README.org delete mode 100644 profiles/wsl/configuration.nix delete mode 100644 profiles/wsl/home.nix delete mode 100755 profiles/wsl/nixos-wsl/LICENSE delete mode 100755 profiles/wsl/nixos-wsl/README.md delete mode 100755 profiles/wsl/nixos-wsl/default.nix delete mode 100755 profiles/wsl/nixos-wsl/flake.lock delete mode 100755 profiles/wsl/nixos-wsl/flake.nix delete mode 100755 profiles/wsl/nixos-wsl/modules/build-tarball.nix delete mode 100755 profiles/wsl/nixos-wsl/modules/docker-desktop.nix delete mode 100755 profiles/wsl/nixos-wsl/modules/docker-native.nix delete mode 100755 profiles/wsl/nixos-wsl/modules/installer.nix delete mode 100755 profiles/wsl/nixos-wsl/modules/interop.nix delete mode 100755 profiles/wsl/nixos-wsl/modules/wsl-distro.nix delete mode 100755 profiles/wsl/nixos-wsl/syschdemd.nix delete mode 100755 profiles/wsl/nixos-wsl/syschdemd.sh delete mode 100644 system/app/docker.nix delete mode 100644 system/app/flatpak.nix delete mode 100644 system/app/gamemode.nix delete mode 100644 system/app/prismlauncher.nix delete mode 100644 system/app/steam.nix delete mode 100644 system/app/virtualization.nix delete mode 100644 system/bin/phoenix.nix delete mode 100644 system/hardware/bluetooth.nix delete mode 100644 system/hardware/kernel.nix delete mode 100644 system/hardware/opengl.nix delete mode 100644 system/hardware/power.nix delete mode 100644 system/hardware/printing.nix delete mode 100644 system/hardware/systemd.nix delete mode 100644 system/hardware/time.nix delete mode 100644 system/security/automount.nix delete mode 100644 system/security/blocklist.nix delete mode 100644 system/security/doas.nix delete mode 100644 system/security/firejail.nix delete mode 100644 system/security/firewall.nix delete mode 100644 system/security/gpg.nix delete mode 100644 system/security/openvpn.nix delete mode 100644 system/security/sshd.nix delete mode 100644 system/style/stylix.nix delete mode 100644 system/wm/dbus.nix delete mode 100644 system/wm/fonts.nix delete mode 100644 system/wm/gnome-keyring.nix delete mode 100644 system/wm/hyprland.nix delete mode 100644 system/wm/pipewire.nix delete mode 100644 system/wm/wayland.nix delete mode 100644 system/wm/x11.nix delete mode 100644 user/app/blender/default.nix delete mode 100644 user/app/browser/brave.nix delete mode 100644 user/app/browser/librewolf.nix delete mode 100644 user/app/browser/qute-containers.nix delete mode 100644 user/app/dmenu-scripts/networkmanager-dmenu.nix delete mode 100644 user/app/emacs/default.nix delete mode 100644 user/app/emacs/ultra-scroll.nix delete mode 100644 user/app/flatpak/flatpak.nix delete mode 100644 user/app/git/git.nix delete mode 100644 user/app/godot/default.nix delete mode 100644 user/app/keepass/keepass.nix delete mode 100644 user/app/ranger/ranger.nix delete mode 100644 user/app/terminal/alacritty.nix delete mode 100644 user/app/terminal/kitty.nix delete mode 100644 user/app/virtualization/virtualization.nix delete mode 100644 user/hardware/bluetooth.nix delete mode 100644 user/pkgs/pokemon-colorscripts.nix delete mode 100644 user/pkgs/ranger.nix delete mode 100644 user/shell/cli-collection.nix delete mode 100644 user/shell/sh.nix delete mode 100644 user/style/stylix.nix delete mode 100644 user/wm/hyprland/hyprland.nix delete mode 100644 user/wm/hyprland/hyprprofiles/hyprprofiles.nix delete mode 100755 user/wm/hyprland/hyprprofiles/profiles/Bard/start-hook.sh delete mode 100644 user/wm/hyprland/patches/noactiveclients.patch delete mode 100644 user/wm/hyprland/patches/waybarbatupdate.patch delete mode 100644 user/wm/hyprland/patches/waybarpaupdate.patch delete mode 100644 user/wm/input/nihongo.nix diff --git a/flake.lock b/flake.lock index d67915c..5c1f83e 100644 --- a/flake.lock +++ b/flake.lock @@ -389,39 +389,18 @@ "type": "github" } }, - "home-manager-stable": { - "inputs": { - "nixpkgs": [ - "nixpkgs-stable" - ] - }, - "locked": { - "lastModified": 1726989464, - "narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "release-24.05", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager-unstable": { + "home-manager_2": { "inputs": { "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1738275749, - "narHash": "sha256-PM+cGduJ05EZ+YXulqAwUFjvfKpPmW080mcuN6R1POw=", + "lastModified": 1739044880, + "narHash": "sha256-l+bzq9rsBIQQnBtGayJeOS30L53+mYPjgfQALi20XDg=", "owner": "nix-community", "repo": "home-manager", - "rev": "a8159195bfaef3c64df75d3b1e6a68d49d392be9", + "rev": "bf9a1a068919ccdfa7d130873936c5fd4c826e85", "type": "github" }, "original": { @@ -431,7 +410,7 @@ "type": "github" } }, - "home-manager_2": { + "home-manager_3": { "inputs": { "nixpkgs": [ "stylix", @@ -749,32 +728,6 @@ "type": "github" } }, - "nix-formatter-pack": { - "inputs": { - "nixpkgs": [ - "nix-on-droid", - "nixpkgs" - ], - "nmd": [ - "nix-on-droid", - "nmd" - ], - "nmt": "nmt" - }, - "locked": { - "lastModified": 1705252799, - "narHash": "sha256-HgSTREh7VoXjGgNDwKQUYcYo13rPkltW7IitHrTPA5c=", - "owner": "Gerschtli", - "repo": "nix-formatter-pack", - "rev": "2de39dedd79aab14c01b9e2934842051a160ffa5", - "type": "github" - }, - "original": { - "owner": "Gerschtli", - "repo": "nix-formatter-pack", - "type": "github" - } - }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -798,34 +751,6 @@ "type": "github" } }, - "nix-on-droid": { - "inputs": { - "home-manager": [ - "home-manager-unstable" - ], - "nix-formatter-pack": "nix-formatter-pack", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-docs": "nixpkgs-docs", - "nixpkgs-for-bootstrap": "nixpkgs-for-bootstrap", - "nmd": "nmd" - }, - "locked": { - "lastModified": 1725658585, - "narHash": "sha256-P29z4Gt89n5ps1U7+qmIrj0BuRXGZQSIaOe2+tsPgfw=", - "owner": "nix-community", - "repo": "nix-on-droid", - "rev": "5d88ff2519e4952f8d22472b52c531bb5f1635fc", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "master", - "repo": "nix-on-droid", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1737929020, @@ -842,38 +767,6 @@ "type": "github" } }, - "nixpkgs-docs": { - "locked": { - "lastModified": 1705957679, - "narHash": "sha256-Q8LJaVZGJ9wo33wBafvZSzapYsjOaNjP/pOnSiKVGHY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "9a333eaa80901efe01df07eade2c16d183761fa3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "release-23.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-for-bootstrap": { - "locked": { - "lastModified": 1720244366, - "narHash": "sha256-WrDV0FPMVd2Sq9hkR5LNHudS3OSMmUrs90JUTN+MXpA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "49ee0e94463abada1de470c9c07bfc12b36dcf40", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "49ee0e94463abada1de470c9c07bfc12b36dcf40", - "type": "github" - } - }, "nixpkgs-stable": { "locked": { "lastModified": 1738163270, @@ -953,6 +846,18 @@ } }, "nixpkgs_4": { + "locked": { + "lastModified": 0, + "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", + "path": "/nix/store/pgg4vm83q0kr4hxzcwhdgdiv2yfnh3dw-source", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_5": { "locked": { "lastModified": 1736798957, "narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=", @@ -968,44 +873,6 @@ "type": "github" } }, - "nmd": { - "inputs": { - "nixpkgs": [ - "nix-on-droid", - "nixpkgs-docs" - ], - "scss-reset": "scss-reset" - }, - "locked": { - "lastModified": 1705050560, - "narHash": "sha256-x3zzcdvhJpodsmdjqB4t5mkVW22V3wqHLOun0KRBzUI=", - "owner": "~rycee", - "repo": "nmd", - "rev": "66d9334933119c36f91a78d565c152a4fdc8d3d3", - "type": "sourcehut" - }, - "original": { - "owner": "~rycee", - "repo": "nmd", - "type": "sourcehut" - } - }, - "nmt": { - "flake": false, - "locked": { - "lastModified": 1648075362, - "narHash": "sha256-u36WgzoA84dMVsGXzml4wZ5ckGgfnvS0ryzo/3zn/Pc=", - "owner": "rycee", - "repo": "nmt", - "rev": "d83601002c99b78c89ea80e5e6ba21addcfe12ae", - "type": "gitlab" - }, - "original": { - "owner": "rycee", - "repo": "nmt", - "type": "gitlab" - } - }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -1035,15 +902,14 @@ "blocklist-hosts": "blocklist-hosts", "chaotic": "chaotic", "emacs-overlay": "emacs-overlay", - "home-manager-stable": "home-manager-stable", - "home-manager-unstable": "home-manager-unstable", + "home-manager": "home-manager_2", "hyprland": "hyprland", "hyprlock": "hyprlock", "hyprutils": "hyprutils", - "nix-on-droid": "nix-on-droid", "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_3", "rust-overlay": "rust-overlay", + "secrets": "secrets", "stylix": "stylix" } }, @@ -1082,20 +948,19 @@ "type": "github" } }, - "scss-reset": { - "flake": false, + "secrets": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, "locked": { - "lastModified": 1631450058, - "narHash": "sha256-muDlZJPtXDIGevSEWkicPP0HQ6VtucbkMNygpGlBEUM=", - "owner": "andreymatin", - "repo": "scss-reset", - "rev": "0cf50e27a4e95e9bb5b1715eedf9c54dee1a5a91", - "type": "github" + "lastModified": 1739133600, + "narHash": "sha256-5xe63u5z/+yauwl/e++ZTDelVK0CBF32GborYfCuBl8=", + "path": "/etc/nixos.secrets", + "type": "path" }, "original": { - "owner": "andreymatin", - "repo": "scss-reset", - "type": "github" + "path": "/etc/nixos.secrets", + "type": "path" } }, "stylix": { @@ -1109,8 +974,8 @@ "flake-utils": "flake-utils", "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", - "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_4", + "home-manager": "home-manager_3", + "nixpkgs": "nixpkgs_5", "systems": "systems_4", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", diff --git a/flake.nix b/flake.nix index 5075462..947263f 100644 --- a/flake.nix +++ b/flake.nix @@ -3,57 +3,11 @@ outputs = inputs@{ self, ... }: let - # ---- SYSTEM SETTINGS ---- # - systemSettings = { - system = "x86_64-linux"; # system arch - hostname = "snowfire"; # hostname - profile = "personal"; # select a profile defined from my profiles directory - timezone = "America/Chicago"; # select timezone - locale = "en_US.UTF-8"; # select locale - bootMode = "uefi"; # uefi or bios - bootMountPath = "/boot"; # mount path for efi boot partition; only used for uefi boot mode - grubDevice = ""; # device identifier for grub; only used for legacy (bios) boot mode - gpuType = "amd"; # amd, intel or nvidia; only makes some slight mods for amd at the moment - }; - - # ----- USER SETTINGS ----- # - userSettings = rec { - username = "emmet"; # username - name = "Emmet"; # name/identifier - email = "emmet@librephoenix.com"; # email (used for certain configurations) - dotfilesDir = "~/.dotfiles"; # absolute path of the local repo - theme = "io"; # selcted theme from my themes directory (./themes/) - wm = "hyprland"; # Selected window manager or desktop environment; must select one in both ./user/wm/ and ./system/wm/ - # window manager type (hyprland or x11) translator - wmType = if (wm == "hyprland") then "wayland" else "x11"; - browser = "qutebrowser"; # Default browser; must select one from ./user/app/browser/ - spawnBrowser = if ((browser == "qutebrowser") && (wm == "hyprland")) then "qutebrowser-hyprprofile" else (if (browser == "qutebrowser") then "qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4" else browser); # Browser spawn command must be specail for qb, since it doesn't gpu accelerate by default (why?) - defaultRoamDir = "Personal.p"; # Default org roam directory relative to ~/Org - term = "alacritty"; # Default terminal command; - font = "Intel One Mono"; # Selected font - fontPkg = pkgs.intel-one-mono; # Font package - editor = "emacsclient"; # Default editor; - # editor spawning translator - # generates a command that can be used to spawn editor inside a gui - # EDITOR and TERM session variables must be set in home.nix or other module - # I set the session variable SPAWNEDITOR to this in my home.nix for convenience - spawnEditor = if (editor == "emacsclient") then - "emacsclient -c -a 'emacs'" - else - (if ((editor == "vim") || - (editor == "nvim") || - (editor == "nano")) then - "exec " + term + " -e " + editor - else - (if (editor == "neovide") then - "neovide -- --listen /tmp/nvimsocket" - else - editor)); - }; + system = "x86_64-linux"; # create patched nixpkgs nixpkgs-patched = - (import inputs.nixpkgs { system = systemSettings.system; }).applyPatches { + (import inputs.nixpkgs { inherit system; }).applyPatches { name = "nixpkgs-patched"; src = inputs.nixpkgs; patches = [ ]; @@ -62,135 +16,63 @@ # configure pkgs # use nixpkgs if running a server (homelab or worklab profile) # otherwise use patched nixos-unstable nixpkgs - pkgs = (if ((systemSettings.profile == "homelab") || (systemSettings.profile == "worklab")) - then - pkgs-stable - else - (import nixpkgs-patched { - system = systemSettings.system; - config = { - allowUnfree = true; - allowUnfreePredicate = (_: true); - }; - overlays = [ inputs.rust-overlay.overlays.default - inputs.emacs-overlay.overlays.default - ]; - })); - - pkgs-stable = import inputs.nixpkgs-stable { - system = systemSettings.system; + pkgs = import nixpkgs-patched { + inherit system; config = { allowUnfree = true; allowUnfreePredicate = (_: true); }; + overlays = [ inputs.rust-overlay.overlays.default inputs.emacs-overlay.overlays.default ]; }; - pkgs-unstable = import inputs.nixpkgs-patched { - system = systemSettings.system; + pkgs-stable = import inputs.nixpkgs-stable { + inherit system; config = { allowUnfree = true; allowUnfreePredicate = (_: true); }; - overlays = [ inputs.rust-overlay.overlays.default ]; }; # configure lib - # use nixpkgs if running a server (homelab or worklab profile) - # otherwise use patched nixos-unstable nixpkgs - lib = (if ((systemSettings.profile == "homelab") || (systemSettings.profile == "worklab")) - then - inputs.nixpkgs-stable.lib - else - inputs.nixpkgs.lib); + lib = inputs.nixpkgs.lib; - # use home-manager-stable if running a server (homelab or worklab profile) - # otherwise use home-manager-unstable - home-manager = (if ((systemSettings.profile == "homelab") || (systemSettings.profile == "worklab")) - then - inputs.home-manager-stable - else - inputs.home-manager-unstable); - - # Systems that can run tests: - supportedSystems = [ "aarch64-linux" "i686-linux" "x86_64-linux" ]; - - # Function to generate a set based on supported systems: - forAllSystems = inputs.nixpkgs.lib.genAttrs supportedSystems; - - # Attribute set of nixpkgs for each system: - nixpkgsFor = - forAllSystems (system: import inputs.nixpkgs { inherit system; }); + # create a list of all directories inside of ./hosts + # every directory in ./hosts has config for that machine + hosts = builtins.filter (x: x != null) (lib.mapAttrsToList (name: value: if (value == "directory") then name else null) (builtins.readDir ./hosts)); in { - homeConfigurations = { - user = home-manager.lib.homeManagerConfiguration { - inherit pkgs; - modules = [ - (./. + "/profiles" + ("/" + systemSettings.profile) + "/home.nix") # load home.nix from selected PROFILE - inputs.chaotic.homeManagerModules.default - ]; - extraSpecialArgs = { - # pass config variables from above - inherit pkgs-stable; - inherit pkgs-unstable; - inherit systemSettings; - inherit userSettings; - inherit inputs; + # generate a nixos configuration for every host in ./hosts + nixosConfigurations = builtins.listToAttrs + (map (host: { + name = host; + value = lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + # host specific config + { config.networking.hostName = host; } + (./hosts + "/${host}") + + # my modules + ./modules/system + + # home manager + inputs.home-manager.nixosModules.home-manager + { home-manager.extraSpecialArgs = { + inherit pkgs; + inherit pkgs-stable; + inherit inputs; + }; + } + + # chaos... control! + inputs.chaotic.nixosModules.default + ]; + specialArgs = { + inherit pkgs-stable; + inherit inputs; + }; }; - }; - }; - nixosConfigurations = { - system = lib.nixosSystem { - system = systemSettings.system; - modules = [ - (./. + "/profiles" + ("/" + systemSettings.profile) + "/configuration.nix") - ./system/bin/phoenix.nix - inputs.chaotic.nixosModules.default - ]; # load configuration.nix from selected PROFILE - specialArgs = { - # pass config variables from above - inherit pkgs-stable; - inherit pkgs-unstable; - inherit systemSettings; - inherit userSettings; - inherit inputs; - }; - }; - }; - nixOnDroidConfigurations = { - inherit pkgs; - default = inputs.nix-on-droid.lib.nixOnDroidConfiguration { - modules = [ ./profiles/nix-on-droid/configuration.nix ]; - }; - extraSpecialArgs = { - # pass config variables from above - inherit pkgs-stable; - inherit systemSettings; - inherit userSettings; - inherit inputs; - }; - }; - - packages = forAllSystems (system: - let pkgs = nixpkgsFor.${system}; - in { - default = self.packages.${system}.install; - - install = pkgs.writeShellApplication { - name = "install"; - runtimeInputs = with pkgs; [ git ]; # I could make this fancier by adding other deps - text = ''${./install.sh} "$@"''; - }; - }); - - apps = forAllSystems (system: { - default = self.apps.${system}.install; - - install = { - type = "app"; - program = "${self.packages.${system}.install}/bin/install"; - }; - }); + }) hosts); }; inputs = { @@ -198,17 +80,8 @@ nixpkgs-stable.url = "nixpkgs/nixos-24.11"; chaotic.url = "github:chaotic-cx/nyx/5071a4037c634d41a57926521fef2e179abe3bd9"; - home-manager-unstable.url = "github:nix-community/home-manager/master"; - home-manager-unstable.inputs.nixpkgs.follows = "nixpkgs"; - - home-manager-stable.url = "github:nix-community/home-manager/release-24.05"; - home-manager-stable.inputs.nixpkgs.follows = "nixpkgs-stable"; - - nix-on-droid = { - url = "github:nix-community/nix-on-droid/master"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.home-manager.follows = "home-manager-unstable"; - }; + home-manager.url = "github:nix-community/home-manager/master"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; hyprland = { type = "git"; @@ -247,5 +120,9 @@ url = "github:StevenBlack/hosts"; flake = false; }; + + secrets = { + url = "path:/etc/nixos.secrets"; + }; }; } diff --git a/profiles/README.org b/hosts/README.org similarity index 100% rename from profiles/README.org rename to hosts/README.org diff --git a/profiles/personal/README.org b/hosts/snowfire/README.org similarity index 100% rename from profiles/personal/README.org rename to hosts/snowfire/README.org diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix new file mode 100644 index 0000000..d286b9a --- /dev/null +++ b/hosts/snowfire/configuration.nix @@ -0,0 +1,50 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + systemSettings = { + # users + users = [ "emmet" ]; + adminUsers = [ "emmet" ]; + + # hardware + cachy.enable = true; + bluetooth.enable = true; + tlp.enable = true; + printing.enable = true; + + # software + flatpak.enable = false; + gaming.enable = true; + virtualization = { + docker.enable = true; + virtualMachines.enable = true; + }; + + # wm + hyprland.enable = true; + + # dotfiles + dotfilesDir = "/etc/nixos"; + + # security + security = { + automount.enable = true; + blocklist.enable = true; + doas.enable = true; + firejail.enable = false; # TODO setup firejail profiles + firewall.enable = true; + gpg.enable = true; + openvpn.enable = true; + sshd.enable = false; + }; + + # style + stylix = { + enable = true; + theme = "io"; + }; + }; + }; + +} diff --git a/hosts/snowfire/default.nix b/hosts/snowfire/default.nix new file mode 100644 index 0000000..b29cc69 --- /dev/null +++ b/hosts/snowfire/default.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./configuration.nix + ./hardware-configuration.nix + ]; + + config = { + home-manager.users = builtins.listToAttrs + (map (user: { name = user; value = + ({ imports = [ ./home.nix ../../modules/user ]; });}) config.systemSettings.users); + }; +} diff --git a/system/hardware-configuration.nix b/hosts/snowfire/hardware-configuration.nix similarity index 99% rename from system/hardware-configuration.nix rename to hosts/snowfire/hardware-configuration.nix index e990e02..7cb01af 100644 --- a/system/hardware-configuration.nix +++ b/hosts/snowfire/hardware-configuration.nix @@ -16,6 +16,7 @@ boot.blacklistedKernelModules = [ "k10temp" ]; boot.kernelParams = [ "amd_pstate=active" "acpi_osi=Linux" "acpi_wake=USB0" ]; boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower rtl8812au ]; + hardware.opengl.enable = true; hardware.opengl.extraPackages = [ pkgs.rocmPackages.clr.icd ]; hardware.opengl.extraPackages32 = [ ]; diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix new file mode 100644 index 0000000..612addd --- /dev/null +++ b/hosts/snowfire/home.nix @@ -0,0 +1,44 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + + userSettings = { + # setup + shell = { + enable = true; + apps.enable = true; + extraApps.enable = true; + }; + xdg.enable = true; + + # programs + browser = "qutebrowser"; + brave.enable = true; + editor = "emacs"; + ranger.enable = true; + git.enable = true; + engineering.enable = true; + art.enable = true; + flatpak.enable = false; + godot.enable = true; + keepass.enable = true; + media.enable = true; + music.enable = true; + office.enable = true; + recording.enable = true; + virtualization = { + virtualMachines.enable = true; + }; + + # wm + hyprland.enable = true; + + # style + stylix.enable = true; + + # hardware + bluetooth.enable = true; + }; + }; +} diff --git a/system/README.org b/modules/system/README.org similarity index 100% rename from system/README.org rename to modules/system/README.org diff --git a/modules/system/bluetooth/default.nix b/modules/system/bluetooth/default.nix new file mode 100644 index 0000000..13694c0 --- /dev/null +++ b/modules/system/bluetooth/default.nix @@ -0,0 +1,16 @@ +{ lib, config, ... }: + +let + cfg = config.systemSettings.bluetooth; +in { + options = { + systemSettings.bluetooth = { + enable = lib.mkEnableOption "Enable bluetooth"; + }; + }; + + config = lib.mkIf cfg.enable { + hardware.bluetooth.enable = true; + services.blueman.enable = true; + }; +} diff --git a/modules/system/configuration.nix b/modules/system/configuration.nix new file mode 100644 index 0000000..5942119 --- /dev/null +++ b/modules/system/configuration.nix @@ -0,0 +1,85 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + # Journal + services.journald.extraConfig = "SystemMaxUse=50M\nSystemMaxFiles=5"; + services.journald.rateLimitBurst = 500; + services.journald.rateLimitInterval = "30s"; + + # Locale and TZ + time.timeZone = "America/Chicago"; + services.timesyncd.enable = true; + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = config.i18n.defaultLocale; + LC_IDENTIFICATION = config.i18n.defaultLocale; + LC_MEASUREMENT = config.i18n.defaultLocale; + LC_MONETARY = config.i18n.defaultLocale; + LC_NAME = config.i18n.defaultLocale; + LC_NUMERIC = config.i18n.defaultLocale; + LC_PAPER = config.i18n.defaultLocale; + LC_TELEPHONE = config.i18n.defaultLocale; + LC_TIME = config.i18n.defaultLocale; + }; + + # Use zsh + programs.zsh.enable = true; + environment.shells = with pkgs; [ zsh ]; + users.defaultUserShell = pkgs.zsh; + + # Fix nix path + nix.nixPath = [ "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos" + "nixos-config=$HOME/dotfiles/system/configuration.nix" + "/nix/var/nix/profiles/per-user/root/channels" + ]; + + # Ensure nix flakes are enabled + nix.extraOptions = '' + experimental-features = nix-command flakes + ''; + + # Substituters + nix.settings = { + substituters = [ + "https://cache.nixos.org" + "https://nix-community.cachix.org" + ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + }; + + # wheel group gets trusted access to nix daemon + nix.settings.trusted-users = [ "@wheel" ]; + + # Bootloader + # Use systemd-boot if uefi, default to grub otherwise + boot.loader.systemd-boot.enable = true; + boot.loader.systemd-boot.editor = false; + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.efi.efiSysMountPoint = "/boot"; + + # Silent Boot + # https://wiki.archlinux.org/title/Silent_boot + boot.kernelParams = [ + "quiet" + "splash" + "vga=current" + "rd.systemd.show_status=false" + "rd.udev.log_level=3" + "udev.log_priority=3" + ]; + boot.initrd.systemd.enable = true; + boot.initrd.verbose = false; + boot.plymouth.enable = true; + + # Networking + networking.networkmanager.enable = true; # Use networkmanager + + # Remove bloat + programs.nano.enable = lib.mkForce false; + }; + +} diff --git a/modules/system/default.nix b/modules/system/default.nix new file mode 100644 index 0000000..0567ef8 --- /dev/null +++ b/modules/system/default.nix @@ -0,0 +1,29 @@ +{ lib, ... }: + +with lib; +let + # Recursively constructs an attrset of a given folder, recursing on directories, value of attrs is the filetype + getDir = dir: mapAttrs + (file: type: + if type == "directory" then getDir "${dir}/${file}" else type + ) + (builtins.readDir dir); + + # Collects all files of a directory as a list of strings of paths + files = dir: collect isString (mapAttrsRecursive (path: type: concatStringsSep "/" path) (getDir dir)); + + # Filters out directories that don't end with .nix or are this file, also makes the strings absolute + importAll = dir: map + (file: ./. + "/${file}") + (filter + (file: hasSuffix ".nix" file && file != "default.nix" && + ! lib.hasPrefix "x/taffybar/" file && + ! lib.hasSuffix "-hm.nix" file) + (files dir)); + +in +{ + + imports = importAll ./.; + +} diff --git a/modules/system/flatpak/default.nix b/modules/system/flatpak/default.nix new file mode 100644 index 0000000..17f1e1f --- /dev/null +++ b/modules/system/flatpak/default.nix @@ -0,0 +1,16 @@ +{ lib, config, ... }: + +let + cfg = config.systemSettings.flatpak; +in { + options = { + systemSettings.flatpak = { + enable = lib.mkEnableOption "Enable flatpaks"; + }; + }; + + config = lib.mkIf cfg.enable { + services.flatpak.enable = true; + xdg.portal.enable = true; + }; +} diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix new file mode 100644 index 0000000..ae6d4b1 --- /dev/null +++ b/modules/system/gaming/default.nix @@ -0,0 +1,20 @@ +{ lib, config, pkgs, ... }: + +let + cfg = config.systemSettings.gaming; +in { + + options = { + systemSettings.gaming = { + enable = lib.mkEnableOption "Enable Steam and games"; + }; + }; + + config = lib.mkIf cfg.enable { + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-unwrapped" ]; + hardware.opengl.driSupport32Bit = true; + programs.steam.enable = true; + environment.systemPackages = with pkgs; [ pkgs.steam gamemode prismlauncher ]; + programs.gamemode.enable = true; + }; +} diff --git a/modules/system/hyprland/default.nix b/modules/system/hyprland/default.nix new file mode 100644 index 0000000..5d1011c --- /dev/null +++ b/modules/system/hyprland/default.nix @@ -0,0 +1,98 @@ +{ inputs, pkgs, pkgs-stable, config, lib, ... }: + +let + cfg = config.systemSettings.hyprland; +in +{ + options = { + systemSettings.hyprland = { + enable = lib.mkEnableOption "Enable hyprland"; + }; + }; + + config = lib.mkIf cfg.enable { + # Hyprland + programs = { + hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; + xwayland = { + enable = true; + }; + portalPackage = pkgs.xdg-desktop-portal-hyprland; + }; + }; + + # Necessary packages + environment.systemPackages = with pkgs; [ + jq + (sddm-chili-theme.override { + themeConfig = { + background = config.stylix.image; + ScreenWidth = 1920; + ScreenHeight = 1080; + blur = true; + recursiveBlurLoops = 3; + recursiveBlurRadius = 5; + # TODO fix icons with svgs patched from stylix colors + };}) + ]; + + # Display manager + services.xserver.displayManager.sddm = { + enable = true; + wayland.enable = true; + enableHidpi = true; + theme = "chili"; + package = pkgs.sddm; + }; + + # xwayland + services.xserver = { + enable = true; + xkb = { + layout = "us"; + variant = ""; + options = "caps:escape"; + }; + excludePackages = [ pkgs.xterm ]; + }; + + # Keyring + security.pam.services.login.enableGnomeKeyring = true; + services.gnome.gnome-keyring.enable = true; + + # Dbus + services.dbus = { + enable = true; + packages = [ pkgs.dconf ]; + }; + + programs.dconf.enable = true; + + # Pipewire + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + }; + + # Some fancy fonts + fonts.packages = with pkgs-stable; [ + # Fonts + nerdfonts + powerline + ]; + + # Auto rotate screen + programs.iio-hyprland = { + enable = true; + package = pkgs.iio-hyprland.overrideAttrs { + patches = [ ./iio-hyprland-hyprpaper.patch ]; + }; + }; + }; +} diff --git a/system/wm/iio-hyprland-hyprpaper.patch b/modules/system/hyprland/iio-hyprland-hyprpaper.patch similarity index 100% rename from system/wm/iio-hyprland-hyprpaper.patch rename to modules/system/hyprland/iio-hyprland-hyprpaper.patch diff --git a/modules/system/kernel/default.nix b/modules/system/kernel/default.nix new file mode 100644 index 0000000..ac579a7 --- /dev/null +++ b/modules/system/kernel/default.nix @@ -0,0 +1,29 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.systemSettings.cachy; +in +{ + options = { + systemSettings.cachy = { + enable = lib.mkEnableOption "Enable cachyos kernel"; + variant = lib.mkOption { + default = null; + type = lib.types.nullOr (lib.types.enum ["lto" "server" "hardened"]); + description = '' + This option determines the CachyOS kernel variant to use. + ''; + }; + }; + }; + + config = lib.mkIf cfg.enable { + boot.kernelPackages = lib.mkMerge [ + (lib.mkIf (cfg.variant == null) pkgs.linuxPackages_cachyos) + (lib.mkIf (cfg.variant == "lto") pkgs.linuxPackages_cachyos-lto) + (lib.mkIf (cfg.variant == "server") pkgs.linuxPackages_cachyos-server) + (lib.mkIf (cfg.variant == "hardened") pkgs.linuxPackages_cachyos-hardened) + ]; + boot.consoleLogLevel = 0; + }; +} diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix new file mode 100644 index 0000000..a17e1de --- /dev/null +++ b/modules/system/nix/default.nix @@ -0,0 +1,31 @@ +{ config, lib, pkgs, inputs, ... }: + +let + caches = import inputs.secrets.caches; +in { + config = { + nix = { + package = pkgs.nix; + settings = { + substituters = + (lib.optionals (caches ? urls) caches.urls) ++ + [ + "https://cache.nixos.org" + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; + trusted-public-keys = + (lib.optionals (caches ? publicKeys) caches.publicKeys) ++ + [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + trusted-users = config.systemSettings.adminUsers ++ [ "@wheel" ]; + auto-optimise-store = true; + download-buffer-size = 500000000; + }; + }; + system.stateVersion = "22.11"; + }; +} diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix new file mode 100644 index 0000000..c7ac889 --- /dev/null +++ b/modules/system/phoenix/default.nix @@ -0,0 +1,80 @@ +{ config, lib, pkgs, ... }: + +{ + options = { + systemSettings.dotfilesDir = lib.mkOption { + default = "/etc/nixos"; + description = "Absolute path to the dotfiles directory"; + type = lib.types.path; + }; + }; +# TODO disabled for debugging +# config = { +# environment.systemPackages = [ +# # TODO update script for config schema change +# (pkgs.writeScriptBin "phoenix" '' +# if [ "$1" = "sync" ]; then +# if [ "$#" = 1 ]; then +# ''+config.systemSettings.dotfilesDir+''/scripts/sync.sh; +# exit 0; +# elif [ "$2" = "user" ]; then +# ''+config.systemSettings.dotfilesDir+''/scripts/sync-user.sh; +# exit 0; +# elif [ "$2" = "system" ]; then +# ''+config.systemSettings.dotfilesDir+''/scripts/sync-system.sh; +# exit 0; +# else +# echo "Please pass 'system' or 'user' if supplying a second argument" +# fi +# elif [ "$1" = "refresh" ]; then +# if [ "$#" -gt 1 ]; then +# echo "Warning: The 'refresh' command has no subcommands (no $2 subcommand)"; +# fi +# ''+config.systemSettings.dotfilesDir+''/scripts/sync-posthook.sh; +# exit 0; +# elif [ "$1" = "update" ]; then +# ''+config.systemSettings.dotfilesDir+''/scripts/update.sh "''${@:2}"; +# exit 0; +# elif [ "$1" = "upgrade" ]; then +# if [ "$#" -gt 1 ]; then +# echo "Warning: The 'upgrade' command has no subcommands (no $2 subcommand)"; +# fi +# ''+config.systemSettings.dotfilesDir+''/scripts/upgrade.sh; +# exit 0; +# elif [ "$1" = "pull" ]; then +# if [ "$#" -gt 1 ]; then +# echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; +# fi +# ''+config.systemSettings.dotfilesDir+''/scripts/pull.sh; +# exit 0; +# elif [ "$1" = "harden" ]; then +# if [ "$#" -gt 1 ]; then +# echo "Warning: The 'harden' command has no subcommands (no $2 subcommand)"; +# fi +# ''+config.systemSettings.dotfilesDir+''/scripts/harden.sh; +# exit 0; +# elif [ "$1" = "soften" ]; then +# if [ "$#" -gt 1 ]; then +# echo "Warning: The 'soften' command has no subcommands (no $2 subcommand)"; +# fi +# ''+config.systemSettings.dotfilesDir+''/scripts/soften.sh; +# exit 0; +# elif [ "$1" = "gc" ]; then +# if [ "$#" -gt 2 ]; then +# echo "Warning: The 'gc' command only accepts one argument (collect_older_than)"; +# fi +# if [ "$2" = "full" ]; then +# sudo nix-collect-garbage --delete-old; +# nix-collect-garbage --delete-old; +# elif [ "$2" ]; then +# sudo nix-collect-garbage --delete-older-than $2; +# nix-collect-garbage --delete-older-than $2; +# else +# sudo nix-collect-garbage --delete-older-than 30d; +# nix-collect-garbage --delete-older-than 30d; +# fi +# fi +# '') +# ]; +# }; +} diff --git a/modules/system/printing/default.nix b/modules/system/printing/default.nix new file mode 100644 index 0000000..d8ca9d7 --- /dev/null +++ b/modules/system/printing/default.nix @@ -0,0 +1,20 @@ +{ pkgs, lib, config, ... }: + +let + cfg = config.systemSettings.printing; +in { + options = { + systemSettings.printing = { + enable = lib.mkEnableOption "Enable printing"; + }; + }; + + config = lib.mkIf cfg.enable { + # Enable printing + services.printing.enable = true; + services.avahi.enable = true; + services.avahi.nssmdns4 = true; + services.avahi.openFirewall = true; + environment.systemPackages = [ pkgs.cups-filters ]; + }; +} diff --git a/modules/system/security/automount/default.nix b/modules/system/security/automount/default.nix new file mode 100644 index 0000000..1707bdb --- /dev/null +++ b/modules/system/security/automount/default.nix @@ -0,0 +1,17 @@ +{ config, lib, ... }: + +let + cfg = config.systemSettings.security.automount; +in { + options = { + systemSettings.security.automount = { + enable = lib.mkEnableOption "Enable automount"; + }; + }; + + config = lib.mkIf cfg.enable { + services.devmon.enable = true; + services.gvfs.enable = true; + services.udisks2.enable = true; + }; +} diff --git a/modules/system/security/blocklist/default.nix b/modules/system/security/blocklist/default.nix new file mode 100644 index 0000000..ee9b216 --- /dev/null +++ b/modules/system/security/blocklist/default.nix @@ -0,0 +1,18 @@ +{ config, lib, inputs, ... }: + +let + blocklist = builtins.readFile "${inputs.blocklist-hosts}/alternates/gambling-porn/hosts"; + cfg = config.systemSettings.security.blocklist; +in { + options = { + systemSettings.security.blocklist = { + enable = lib.mkEnableOption "Enable basic host blocking for bad websites"; + }; + }; + + config = lib.mkIf cfg.enable { + networking.extraHosts = '' + "${blocklist}" + ''; + }; +} diff --git a/modules/system/security/doas/default.nix b/modules/system/security/doas/default.nix new file mode 100644 index 0000000..0d6e342 --- /dev/null +++ b/modules/system/security/doas/default.nix @@ -0,0 +1,42 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.systemSettings.security.doas; + adminUsers = config.systemSettings.adminUsers; +in { + options = { + systemSettings.security.doas = { + enable = lib.mkEnableOption "Replace sudo with doas"; + }; + }; + + config = lib.mkIf cfg.enable { + # Doas instead of sudo + security.doas.enable = true; + security.sudo.enable = false; + security.doas.extraRules = [ + { + users = adminUsers; + cmd = "nix"; + noPass = true; + keepEnv = true; + } + { + users = adminUsers; + cmd = "nixos-rebuild"; + noPass = true; + keepEnv = true; + } + { + users = adminUsers; + cmd = "nix-collect-garbage"; + noPass = true; + keepEnv = true; + } + ]; + + environment.systemPackages = [ + pkgs.doas-sudo-shim + ]; + }; +} diff --git a/modules/system/security/firejail/default.nix b/modules/system/security/firejail/default.nix new file mode 100644 index 0000000..35e3fb0 --- /dev/null +++ b/modules/system/security/firejail/default.nix @@ -0,0 +1,30 @@ +{ lib, config, pkgs, ... }: + +let + cfg = config.systemSettings.security.firejail; +in { + options = { + systemSettings.security.firejail = { + enable = lib.mkEnableOption "Use firejail on some apps for extra security"; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ firejail ]; + programs.firejail.enable = true; + programs.firejail.wrappedBinaries = { + #prismlauncher = { + # executable = "${pkgs.prismlauncher}/bin/prismlauncher"; + # profile = ./firejail-profiles/prismlauncher.profile; + #}; + #steam = { + # executable = "${pkgs.steam}/bin/steam"; + # profile = "${pkgs.firejail}/etc/firejail/steam.profile"; + #}; + #steam-run = { + # executable = "${pkgs.steam}/bin/steam-run"; + # profile = "${pkgs.firejail}/etc/firejail/steam.profile"; + #}; + }; + }; +} diff --git a/system/security/firejail-profiles/prismlauncher.profile b/modules/system/security/firejail/profiles/prismlauncher.profile similarity index 100% rename from system/security/firejail-profiles/prismlauncher.profile rename to modules/system/security/firejail/profiles/prismlauncher.profile diff --git a/modules/system/security/firewall/default.nix b/modules/system/security/firewall/default.nix new file mode 100644 index 0000000..ed6cc3a --- /dev/null +++ b/modules/system/security/firewall/default.nix @@ -0,0 +1,22 @@ +{ config, lib, ... }: + +let + cfg = config.systemSettings.security.firewall; +in { + options = { + systemSettings.security.firewall = { + # TODO make this more granular and better :| + enable = lib.mkEnableOption "Actvate firewall with ports open only for syncthing"; + }; + }; + + config = lib.mkIf cfg.enable { + # Firewall + networking.firewall.enable = true; + # Open ports in the firewall. + networking.firewall.allowedTCPPorts = [ 22000 21027 ]; # syncthing + networking.firewall.allowedUDPPorts = [ 22000 21027 ]; # syncthing + # Or disable the firewall altogether. + # networking.firewall.enable = false; + }; +} diff --git a/modules/system/security/gpg/default.nix b/modules/system/security/gpg/default.nix new file mode 100644 index 0000000..0c036d1 --- /dev/null +++ b/modules/system/security/gpg/default.nix @@ -0,0 +1,18 @@ +{ lib, config, ... }: + +let + cfg = config.systemSettings.security.gpg; +in { + options = { + systemSettings.security.gpg = { + enable = lib.mkEnableOption "Enable gpg"; + }; + }; + + config = lib.mkIf cfg.enable { + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + }; +} diff --git a/modules/system/security/openvpn/default.nix b/modules/system/security/openvpn/default.nix new file mode 100644 index 0000000..a777447 --- /dev/null +++ b/modules/system/security/openvpn/default.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.systemSettings.security.openvpn; +in { + options = { + systemSettings.security.openvpn = { + enable = lib.mkEnableOption "Enable openvpn"; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ pkgs.openvpn ]; + environment.etc.openvpn.source = "${pkgs.update-resolv-conf}/libexec/openvpn"; + }; +} diff --git a/modules/system/security/sshd/default.nix b/modules/system/security/sshd/default.nix new file mode 100644 index 0000000..2c1cd9d --- /dev/null +++ b/modules/system/security/sshd/default.nix @@ -0,0 +1,25 @@ +{ config, lib, ... }: + +let + cfg = config.systemSettings.security.sshd; +in { + options = { + systemSettings.security.sshd = { + enable = lib.mkEnableOption "Enable incoming ssh connections"; + }; + }; + + config = lib.mkIf cfg.enable { + # Enable incoming ssh + services.openssh = { + enable = true; + openFirewall = true; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "no"; + }; + }; + # Don't forget to set: + # users.users.${username}.openssh.authorizedKeys.keys = "myAuthorizedKey"; + }; +} diff --git a/modules/system/stylix/default.nix b/modules/system/stylix/default.nix new file mode 100644 index 0000000..1886344 --- /dev/null +++ b/modules/system/stylix/default.nix @@ -0,0 +1,56 @@ +{ lib, config, pkgs, inputs, ... }: + +let + cfg = config.systemSettings.stylix; + theme = import (./. + "../../../themes"+("/"+config.systemSettings.stylix.theme)); +in +{ + options = { + systemSettings.stylix = { + enable = lib.mkEnableOption "Enable stylix theming"; + }; + systemSettings.stylix.theme = lib.mkOption { + default = "io"; + type = lib.types.enum (builtins.attrNames (lib.filterAttrs (name: type: type == "directory") (builtins.readDir ../../themes))); + description = "Theme for stylix to use system wide. A list of themes can be found in the `themes` directory."; + }; + }; + + imports = [ inputs.stylix.nixosModules.stylix ]; + + config = lib.mkIf cfg.enable { + stylix.enable = true; + stylix.autoEnable = false; + stylix.polarity = theme.polarity; + stylix.image = pkgs.fetchurl { + url = theme.backgroundUrl; + sha256 = theme.backgroundSha256; + }; + stylix.base16Scheme = theme; + stylix.fonts = { + # TODO abstract fonts into an option + monospace = { + name = "FiraCode Nerd Font"; + package = pkgs.nerd-fonts.fira-code; + }; + serif = { + name = "FiraCode Nerd Font"; + package = pkgs.nerd-fonts.fira-code; + }; + sansSerif = { + name = "FiraCode Nerd Font"; + package = pkgs.nerd-fonts.fira-code; + }; + emoji = { + name = "Noto Color Emoji"; + package = pkgs.noto-fonts-emoji-blob-bin; + }; + }; + + stylix.targets.console.enable = true; + + environment.sessionVariables = { + QT_QPA_PLATFORMTHEME = "qt5ct"; + }; + }; +} diff --git a/modules/system/tlp/default.nix b/modules/system/tlp/default.nix new file mode 100644 index 0000000..4fadacc --- /dev/null +++ b/modules/system/tlp/default.nix @@ -0,0 +1,58 @@ +{ config, lib, ... }: + +let + cfg = config.systemSettings.tlp; +in { + options = { + systemSettings.tlp = { + enable = lib.mkEnableOption "Enable tlp power management"; + }; + }; + + config = lib.mkIf cfg.enable { + services.tlp = { + enable = true; + settings = { + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + CPU_ENERGY_PERF_POLICY_ON_BAT = "balance"; + CPU_ENERGY_PERF_POLICY_ON_AC = "balance_performance"; + CPU_DRIVER_OPMODE_ON_AC = "active"; + CPU_DRIVER_OPMODE_ON_BAT = "active"; + + WIFI_PWR_ON_AC = "on"; + WIFI_PWR_ON_BAT = "on"; + RUNTIME_PM_ON_AC = "auto"; + RUNTIME_PM_ON_BAT = "auto"; + + CPU_MIN_PERF_ON_AC = 10; + CPU_MAX_PERF_ON_AC = 90; + CPU_MIN_PERF_ON_BAT = 10; + CPU_MAX_PERF_ON_BAT = 50; + + CPU_BOOST_ON_AC = 1; + CPU_BOOST_ON_BAT = 0; + CPU_HWP_DYN_BOOST_ON_AC = 1; + CPU_HWP_DYN_BOOST_ON_BAT = 0; + + START_CHARGE_THRESH_BAT0 = 75; + STOP_CHARGE_THRESH_BAT0 = 80; + + MEM_SLEEP_ON_AC = "deep"; + MEM_SLEEP_ON_BAT = "deep"; + + PLATFORM_PROFILE_ON_AC = "performance"; + PLATFORM_PROFILE_ON_BAT = "low-power"; + + RADEON_DPM_STATE_ON_AC = "performance"; + RADEON_DPM_STATE_ON_BAT = "battery"; + RADEON_POWER_PROFILE_ON_AC = "high"; + RADEON_POWER_PROFILE_ON_BAT = "low"; + + INTEL_GPU_MIN_FREQ_ON_AC = 600; + INTEL_GPU_MIN_FREQ_ON_BAT = 600; + }; + }; + }; + +} diff --git a/modules/system/users/default.nix b/modules/system/users/default.nix new file mode 100644 index 0000000..41a8088 --- /dev/null +++ b/modules/system/users/default.nix @@ -0,0 +1,41 @@ +{ config, lib, inputs, ... }: +let + userInfo = import inputs.secrets.userInfo; +in { + options = { + systemSettings = { + users = lib.mkOption { + description = "List of desktop users to create on the system"; + type = lib.types.listOf lib.types.str; + }; + adminUsers = lib.mkOption { + description = "List of desktop users to grant admin (sudo) access on the system"; + type = lib.types.listOf lib.types.str; + }; + }; + }; + config = { + + users.users = builtins.listToAttrs + (map (user: { + name = user; + value = { + description = userInfo.${user}.name; + isNormalUser = true; + extraGroups = [ "networkmanager" "input" "dialout" "video" "render" ] ++ (lib.optionals (lib.any (x: x == user) config.systemSettings.adminUsers) [ "wheel" ]); + createHome = true; + }; + }) config.systemSettings.users); + + home-manager.users = builtins.listToAttrs + (map (user: { + name = user; + value = { + home.username = user; + home.homeDirectory = "/home/"+user; + userSettings.name = lib.mkIf (userInfo.${user} ? name) userInfo.${user}.name; + userSettings.email = lib.mkIf (userInfo.${user} ? email ) userInfo.${user}.email; + }; + }) config.systemSettings.users); + }; +} diff --git a/modules/system/virtualization/docker/default.nix b/modules/system/virtualization/docker/default.nix new file mode 100644 index 0000000..b153f1a --- /dev/null +++ b/modules/system/virtualization/docker/default.nix @@ -0,0 +1,26 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.systemSettings.virtualization.docker; + adminUsers = config.systemSettings.adminUsers; +in { + options = { + systemSettings.virtualization.docker = { + enable = lib.mkEnableOption "Enable docker"; + }; + }; + + config = { + virtualisation.docker = { + enable = true; + enableOnBoot = true; + autoPrune.enable = true; + }; + users.users = builtins.listToAttrs (map (user: { name = user; value = { extraGroups = [ "docker" ];};}) adminUsers); + environment.systemPackages = with pkgs; [ + docker + docker-compose + lazydocker + ]; + }; +} diff --git a/modules/system/virtualization/virtual-machines/default.nix b/modules/system/virtualization/virtual-machines/default.nix new file mode 100644 index 0000000..150988c --- /dev/null +++ b/modules/system/virtualization/virtual-machines/default.nix @@ -0,0 +1,23 @@ +{ lib, config, pkgs, ... }: + +let cfg = config.systemSettings.virtualization.virtualMachines; +in { + options = { + systemSettings.virtualization.virtualMachines = { + enable = lib.mkEnableOption "Enable qemu virtual machines, distrobox, and waydroid"; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ virt-manager distrobox ]; + virtualisation.libvirtd = { + allowedBridges = [ + "nm-bridge" + "virbr0" + ]; + enable = true; + qemu.runAsRoot = false; + }; + virtualisation.waydroid.enable = true; + }; +} diff --git a/themes/README.org b/modules/themes/README.org similarity index 100% rename from themes/README.org rename to modules/themes/README.org diff --git a/themes/alph/README.org b/modules/themes/alph/README.org similarity index 100% rename from themes/alph/README.org rename to modules/themes/alph/README.org diff --git a/themes/alph/default.nix b/modules/themes/alph/default.nix similarity index 100% rename from themes/alph/default.nix rename to modules/themes/alph/default.nix diff --git a/themes/ashes/README.org b/modules/themes/ashes/README.org similarity index 100% rename from themes/ashes/README.org rename to modules/themes/ashes/README.org diff --git a/themes/ashes/default.nix b/modules/themes/ashes/default.nix similarity index 100% rename from themes/ashes/default.nix rename to modules/themes/ashes/default.nix diff --git a/themes/atelier-cave/README.org b/modules/themes/atelier-cave/README.org similarity index 100% rename from themes/atelier-cave/README.org rename to modules/themes/atelier-cave/README.org diff --git a/themes/atelier-cave/default.nix b/modules/themes/atelier-cave/default.nix similarity index 100% rename from themes/atelier-cave/default.nix rename to modules/themes/atelier-cave/default.nix diff --git a/themes/atelier-dune/README.org b/modules/themes/atelier-dune/README.org similarity index 100% rename from themes/atelier-dune/README.org rename to modules/themes/atelier-dune/README.org diff --git a/themes/atelier-dune/default.nix b/modules/themes/atelier-dune/default.nix similarity index 100% rename from themes/atelier-dune/default.nix rename to modules/themes/atelier-dune/default.nix diff --git a/themes/atelier-estuary/README.org b/modules/themes/atelier-estuary/README.org similarity index 100% rename from themes/atelier-estuary/README.org rename to modules/themes/atelier-estuary/README.org diff --git a/themes/atelier-estuary/default.nix b/modules/themes/atelier-estuary/default.nix similarity index 100% rename from themes/atelier-estuary/default.nix rename to modules/themes/atelier-estuary/default.nix diff --git a/themes/atelier-forest/README.org b/modules/themes/atelier-forest/README.org similarity index 100% rename from themes/atelier-forest/README.org rename to modules/themes/atelier-forest/README.org diff --git a/themes/atelier-forest/default.nix b/modules/themes/atelier-forest/default.nix similarity index 100% rename from themes/atelier-forest/default.nix rename to modules/themes/atelier-forest/default.nix diff --git a/themes/atelier-heath/README.org b/modules/themes/atelier-heath/README.org similarity index 100% rename from themes/atelier-heath/README.org rename to modules/themes/atelier-heath/README.org diff --git a/themes/atelier-heath/default.nix b/modules/themes/atelier-heath/default.nix similarity index 100% rename from themes/atelier-heath/default.nix rename to modules/themes/atelier-heath/default.nix diff --git a/themes/atelier-lakeside/README.org b/modules/themes/atelier-lakeside/README.org similarity index 100% rename from themes/atelier-lakeside/README.org rename to modules/themes/atelier-lakeside/README.org diff --git a/themes/atelier-lakeside/default.nix b/modules/themes/atelier-lakeside/default.nix similarity index 100% rename from themes/atelier-lakeside/default.nix rename to modules/themes/atelier-lakeside/default.nix diff --git a/themes/atelier-plateau/README.org b/modules/themes/atelier-plateau/README.org similarity index 100% rename from themes/atelier-plateau/README.org rename to modules/themes/atelier-plateau/README.org diff --git a/themes/atelier-plateau/default.nix b/modules/themes/atelier-plateau/default.nix similarity index 100% rename from themes/atelier-plateau/default.nix rename to modules/themes/atelier-plateau/default.nix diff --git a/themes/atelier-savanna/README.org b/modules/themes/atelier-savanna/README.org similarity index 100% rename from themes/atelier-savanna/README.org rename to modules/themes/atelier-savanna/README.org diff --git a/themes/atelier-savanna/default.nix b/modules/themes/atelier-savanna/default.nix similarity index 100% rename from themes/atelier-savanna/default.nix rename to modules/themes/atelier-savanna/default.nix diff --git a/themes/atelier-seaside/README.org b/modules/themes/atelier-seaside/README.org similarity index 100% rename from themes/atelier-seaside/README.org rename to modules/themes/atelier-seaside/README.org diff --git a/themes/atelier-seaside/default.nix b/modules/themes/atelier-seaside/default.nix similarity index 100% rename from themes/atelier-seaside/default.nix rename to modules/themes/atelier-seaside/default.nix diff --git a/themes/atelier-sulphurpool/README.org b/modules/themes/atelier-sulphurpool/README.org similarity index 100% rename from themes/atelier-sulphurpool/README.org rename to modules/themes/atelier-sulphurpool/README.org diff --git a/themes/atelier-sulphurpool/default.nix b/modules/themes/atelier-sulphurpool/default.nix similarity index 100% rename from themes/atelier-sulphurpool/default.nix rename to modules/themes/atelier-sulphurpool/default.nix diff --git a/themes/ayu-dark/README.org b/modules/themes/ayu-dark/README.org similarity index 100% rename from themes/ayu-dark/README.org rename to modules/themes/ayu-dark/README.org diff --git a/themes/ayu-dark/default.nix b/modules/themes/ayu-dark/default.nix similarity index 100% rename from themes/ayu-dark/default.nix rename to modules/themes/ayu-dark/default.nix diff --git a/themes/background-test.sh b/modules/themes/background-test.sh similarity index 100% rename from themes/background-test.sh rename to modules/themes/background-test.sh diff --git a/themes/bespin/README.org b/modules/themes/bespin/README.org similarity index 100% rename from themes/bespin/README.org rename to modules/themes/bespin/README.org diff --git a/themes/bespin/default.nix b/modules/themes/bespin/default.nix similarity index 100% rename from themes/bespin/default.nix rename to modules/themes/bespin/default.nix diff --git a/themes/caret/README.org b/modules/themes/caret/README.org similarity index 100% rename from themes/caret/README.org rename to modules/themes/caret/README.org diff --git a/themes/caret/default.nix b/modules/themes/caret/default.nix similarity index 100% rename from themes/caret/default.nix rename to modules/themes/caret/default.nix diff --git a/themes/catppuccin-frappe/README.org b/modules/themes/catppuccin-frappe/README.org similarity index 100% rename from themes/catppuccin-frappe/README.org rename to modules/themes/catppuccin-frappe/README.org diff --git a/themes/catppuccin-frappe/default.nix b/modules/themes/catppuccin-frappe/default.nix similarity index 100% rename from themes/catppuccin-frappe/default.nix rename to modules/themes/catppuccin-frappe/default.nix diff --git a/themes/catppuccin-mocha/README.org b/modules/themes/catppuccin-mocha/README.org similarity index 100% rename from themes/catppuccin-mocha/README.org rename to modules/themes/catppuccin-mocha/README.org diff --git a/themes/catppuccin-mocha/default.nix b/modules/themes/catppuccin-mocha/default.nix similarity index 100% rename from themes/catppuccin-mocha/default.nix rename to modules/themes/catppuccin-mocha/default.nix diff --git a/themes/darkmoss/README.org b/modules/themes/darkmoss/README.org similarity index 100% rename from themes/darkmoss/README.org rename to modules/themes/darkmoss/README.org diff --git a/themes/darkmoss/default.nix b/modules/themes/darkmoss/default.nix similarity index 100% rename from themes/darkmoss/default.nix rename to modules/themes/darkmoss/default.nix diff --git a/themes/doom-one/README.org b/modules/themes/doom-one/README.org similarity index 100% rename from themes/doom-one/README.org rename to modules/themes/doom-one/README.org diff --git a/themes/doom-one/default.nix b/modules/themes/doom-one/default.nix similarity index 100% rename from themes/doom-one/default.nix rename to modules/themes/doom-one/default.nix diff --git a/themes/dracula/README.org b/modules/themes/dracula/README.org similarity index 100% rename from themes/dracula/README.org rename to modules/themes/dracula/README.org diff --git a/themes/dracula/default.nix b/modules/themes/dracula/default.nix similarity index 100% rename from themes/dracula/default.nix rename to modules/themes/dracula/default.nix diff --git a/themes/ember/README.org b/modules/themes/ember/README.org similarity index 100% rename from themes/ember/README.org rename to modules/themes/ember/README.org diff --git a/themes/ember/default.nix b/modules/themes/ember/default.nix similarity index 100% rename from themes/ember/default.nix rename to modules/themes/ember/default.nix diff --git a/themes/emil/README.org b/modules/themes/emil/README.org similarity index 100% rename from themes/emil/README.org rename to modules/themes/emil/README.org diff --git a/themes/emil/default.nix b/modules/themes/emil/default.nix similarity index 100% rename from themes/emil/default.nix rename to modules/themes/emil/default.nix diff --git a/themes/eris/README.org b/modules/themes/eris/README.org similarity index 100% rename from themes/eris/README.org rename to modules/themes/eris/README.org diff --git a/themes/eris/default.nix b/modules/themes/eris/default.nix similarity index 100% rename from themes/eris/default.nix rename to modules/themes/eris/default.nix diff --git a/themes/eva/README.org b/modules/themes/eva/README.org similarity index 100% rename from themes/eva/README.org rename to modules/themes/eva/README.org diff --git a/themes/eva/default.nix b/modules/themes/eva/default.nix similarity index 100% rename from themes/eva/default.nix rename to modules/themes/eva/default.nix diff --git a/themes/everforest/README.org b/modules/themes/everforest/README.org similarity index 100% rename from themes/everforest/README.org rename to modules/themes/everforest/README.org diff --git a/themes/everforest/default.nix b/modules/themes/everforest/default.nix similarity index 100% rename from themes/everforest/default.nix rename to modules/themes/everforest/default.nix diff --git a/themes/fairy-floss/README.org b/modules/themes/fairy-floss/README.org similarity index 100% rename from themes/fairy-floss/README.org rename to modules/themes/fairy-floss/README.org diff --git a/themes/fairy-floss/default.nix b/modules/themes/fairy-floss/default.nix similarity index 100% rename from themes/fairy-floss/default.nix rename to modules/themes/fairy-floss/default.nix diff --git a/themes/gigavolt/README.org b/modules/themes/gigavolt/README.org similarity index 100% rename from themes/gigavolt/README.org rename to modules/themes/gigavolt/README.org diff --git a/themes/gigavolt/default.nix b/modules/themes/gigavolt/default.nix similarity index 100% rename from themes/gigavolt/default.nix rename to modules/themes/gigavolt/default.nix diff --git a/themes/gruvbox-dark-hard/README.org b/modules/themes/gruvbox-dark-hard/README.org similarity index 100% rename from themes/gruvbox-dark-hard/README.org rename to modules/themes/gruvbox-dark-hard/README.org diff --git a/themes/gruvbox-dark-hard/default.nix b/modules/themes/gruvbox-dark-hard/default.nix similarity index 100% rename from themes/gruvbox-dark-hard/default.nix rename to modules/themes/gruvbox-dark-hard/default.nix diff --git a/themes/gruvbox-dark-medium/README.org b/modules/themes/gruvbox-dark-medium/README.org similarity index 100% rename from themes/gruvbox-dark-medium/README.org rename to modules/themes/gruvbox-dark-medium/README.org diff --git a/themes/gruvbox-dark-medium/default.nix b/modules/themes/gruvbox-dark-medium/default.nix similarity index 100% rename from themes/gruvbox-dark-medium/default.nix rename to modules/themes/gruvbox-dark-medium/default.nix diff --git a/themes/gruvbox-light-hard/README.org b/modules/themes/gruvbox-light-hard/README.org similarity index 100% rename from themes/gruvbox-light-hard/README.org rename to modules/themes/gruvbox-light-hard/README.org diff --git a/themes/gruvbox-light-hard/default.nix b/modules/themes/gruvbox-light-hard/default.nix similarity index 100% rename from themes/gruvbox-light-hard/default.nix rename to modules/themes/gruvbox-light-hard/default.nix diff --git a/themes/gruvbox-light-medium/README.org b/modules/themes/gruvbox-light-medium/README.org similarity index 100% rename from themes/gruvbox-light-medium/README.org rename to modules/themes/gruvbox-light-medium/README.org diff --git a/themes/gruvbox-light-medium/default.nix b/modules/themes/gruvbox-light-medium/default.nix similarity index 100% rename from themes/gruvbox-light-medium/default.nix rename to modules/themes/gruvbox-light-medium/default.nix diff --git a/themes/helios/README.org b/modules/themes/helios/README.org similarity index 100% rename from themes/helios/README.org rename to modules/themes/helios/README.org diff --git a/themes/helios/default.nix b/modules/themes/helios/default.nix similarity index 100% rename from themes/helios/default.nix rename to modules/themes/helios/default.nix diff --git a/themes/henna/README.org b/modules/themes/henna/README.org similarity index 100% rename from themes/henna/README.org rename to modules/themes/henna/README.org diff --git a/themes/henna/default.nix b/modules/themes/henna/default.nix similarity index 100% rename from themes/henna/default.nix rename to modules/themes/henna/default.nix diff --git a/themes/horizon-dark/README.org b/modules/themes/horizon-dark/README.org similarity index 100% rename from themes/horizon-dark/README.org rename to modules/themes/horizon-dark/README.org diff --git a/themes/horizon-dark/default.nix b/modules/themes/horizon-dark/default.nix similarity index 100% rename from themes/horizon-dark/default.nix rename to modules/themes/horizon-dark/default.nix diff --git a/themes/io/README.org b/modules/themes/io/README.org similarity index 100% rename from themes/io/README.org rename to modules/themes/io/README.org diff --git a/themes/io/default.nix b/modules/themes/io/default.nix similarity index 100% rename from themes/io/default.nix rename to modules/themes/io/default.nix diff --git a/themes/isotope/README.org b/modules/themes/isotope/README.org similarity index 100% rename from themes/isotope/README.org rename to modules/themes/isotope/README.org diff --git a/themes/isotope/default.nix b/modules/themes/isotope/default.nix similarity index 100% rename from themes/isotope/default.nix rename to modules/themes/isotope/default.nix diff --git a/themes/manegarm/README.org b/modules/themes/manegarm/README.org similarity index 100% rename from themes/manegarm/README.org rename to modules/themes/manegarm/README.org diff --git a/themes/manegarm/default.nix b/modules/themes/manegarm/default.nix similarity index 100% rename from themes/manegarm/default.nix rename to modules/themes/manegarm/default.nix diff --git a/themes/material-vivid/README.org b/modules/themes/material-vivid/README.org similarity index 100% rename from themes/material-vivid/README.org rename to modules/themes/material-vivid/README.org diff --git a/themes/material-vivid/default.nix b/modules/themes/material-vivid/default.nix similarity index 100% rename from themes/material-vivid/default.nix rename to modules/themes/material-vivid/default.nix diff --git a/themes/miramare/README.org b/modules/themes/miramare/README.org similarity index 100% rename from themes/miramare/README.org rename to modules/themes/miramare/README.org diff --git a/themes/miramare/default.nix b/modules/themes/miramare/default.nix similarity index 100% rename from themes/miramare/default.nix rename to modules/themes/miramare/default.nix diff --git a/themes/monokai/README.org b/modules/themes/monokai/README.org similarity index 100% rename from themes/monokai/README.org rename to modules/themes/monokai/README.org diff --git a/themes/monokai/default.nix b/modules/themes/monokai/default.nix similarity index 100% rename from themes/monokai/default.nix rename to modules/themes/monokai/default.nix diff --git a/themes/nord/README.org b/modules/themes/nord/README.org similarity index 100% rename from themes/nord/README.org rename to modules/themes/nord/README.org diff --git a/themes/nord/default.nix b/modules/themes/nord/default.nix similarity index 100% rename from themes/nord/default.nix rename to modules/themes/nord/default.nix diff --git a/themes/oceanic-next/README.org b/modules/themes/oceanic-next/README.org similarity index 100% rename from themes/oceanic-next/README.org rename to modules/themes/oceanic-next/README.org diff --git a/themes/oceanic-next/default.nix b/modules/themes/oceanic-next/default.nix similarity index 100% rename from themes/oceanic-next/default.nix rename to modules/themes/oceanic-next/default.nix diff --git a/themes/old-hope/README.org b/modules/themes/old-hope/README.org similarity index 100% rename from themes/old-hope/README.org rename to modules/themes/old-hope/README.org diff --git a/themes/old-hope/default.nix b/modules/themes/old-hope/default.nix similarity index 100% rename from themes/old-hope/default.nix rename to modules/themes/old-hope/default.nix diff --git a/themes/outrun-dark/README.org b/modules/themes/outrun-dark/README.org similarity index 100% rename from themes/outrun-dark/README.org rename to modules/themes/outrun-dark/README.org diff --git a/themes/outrun-dark/default.nix b/modules/themes/outrun-dark/default.nix similarity index 100% rename from themes/outrun-dark/default.nix rename to modules/themes/outrun-dark/default.nix diff --git a/themes/selenized-dark/README.org b/modules/themes/selenized-dark/README.org similarity index 100% rename from themes/selenized-dark/README.org rename to modules/themes/selenized-dark/README.org diff --git a/themes/selenized-dark/default.nix b/modules/themes/selenized-dark/default.nix similarity index 100% rename from themes/selenized-dark/default.nix rename to modules/themes/selenized-dark/default.nix diff --git a/themes/selenized-light/README.org b/modules/themes/selenized-light/README.org similarity index 100% rename from themes/selenized-light/README.org rename to modules/themes/selenized-light/README.org diff --git a/themes/selenized-light/default.nix b/modules/themes/selenized-light/default.nix similarity index 100% rename from themes/selenized-light/default.nix rename to modules/themes/selenized-light/default.nix diff --git a/themes/solarized-dark/README.org b/modules/themes/solarized-dark/README.org similarity index 100% rename from themes/solarized-dark/README.org rename to modules/themes/solarized-dark/README.org diff --git a/themes/solarized-dark/default.nix b/modules/themes/solarized-dark/default.nix similarity index 100% rename from themes/solarized-dark/default.nix rename to modules/themes/solarized-dark/default.nix diff --git a/themes/solarized-light/README.org b/modules/themes/solarized-light/README.org similarity index 100% rename from themes/solarized-light/README.org rename to modules/themes/solarized-light/README.org diff --git a/themes/solarized-light/default.nix b/modules/themes/solarized-light/default.nix similarity index 100% rename from themes/solarized-light/default.nix rename to modules/themes/solarized-light/default.nix diff --git a/themes/spaceduck/README.org b/modules/themes/spaceduck/README.org similarity index 100% rename from themes/spaceduck/README.org rename to modules/themes/spaceduck/README.org diff --git a/themes/spaceduck/default.nix b/modules/themes/spaceduck/default.nix similarity index 100% rename from themes/spaceduck/default.nix rename to modules/themes/spaceduck/default.nix diff --git a/themes/stella/README.org b/modules/themes/stella/README.org similarity index 100% rename from themes/stella/README.org rename to modules/themes/stella/README.org diff --git a/themes/stella/default.nix b/modules/themes/stella/default.nix similarity index 100% rename from themes/stella/default.nix rename to modules/themes/stella/default.nix diff --git a/themes/summerfruit-dark/README.org b/modules/themes/summerfruit-dark/README.org similarity index 100% rename from themes/summerfruit-dark/README.org rename to modules/themes/summerfruit-dark/README.org diff --git a/themes/summerfruit-dark/default.nix b/modules/themes/summerfruit-dark/default.nix similarity index 100% rename from themes/summerfruit-dark/default.nix rename to modules/themes/summerfruit-dark/default.nix diff --git a/themes/tomorrow-night/README.org b/modules/themes/tomorrow-night/README.org similarity index 100% rename from themes/tomorrow-night/README.org rename to modules/themes/tomorrow-night/README.org diff --git a/themes/tomorrow-night/default.nix b/modules/themes/tomorrow-night/default.nix similarity index 100% rename from themes/tomorrow-night/default.nix rename to modules/themes/tomorrow-night/default.nix diff --git a/themes/twilight/README.org b/modules/themes/twilight/README.org similarity index 100% rename from themes/twilight/README.org rename to modules/themes/twilight/README.org diff --git a/themes/twilight/default.nix b/modules/themes/twilight/default.nix similarity index 100% rename from themes/twilight/default.nix rename to modules/themes/twilight/default.nix diff --git a/themes/ubuntu/README.org b/modules/themes/ubuntu/README.org similarity index 100% rename from themes/ubuntu/README.org rename to modules/themes/ubuntu/README.org diff --git a/themes/ubuntu/default.nix b/modules/themes/ubuntu/default.nix similarity index 100% rename from themes/ubuntu/default.nix rename to modules/themes/ubuntu/default.nix diff --git a/themes/uwunicorn/README.org b/modules/themes/uwunicorn/README.org similarity index 100% rename from themes/uwunicorn/README.org rename to modules/themes/uwunicorn/README.org diff --git a/themes/uwunicorn/default.nix b/modules/themes/uwunicorn/default.nix similarity index 100% rename from themes/uwunicorn/default.nix rename to modules/themes/uwunicorn/default.nix diff --git a/themes/windows-95/README.org b/modules/themes/windows-95/README.org similarity index 100% rename from themes/windows-95/README.org rename to modules/themes/windows-95/README.org diff --git a/themes/windows-95/default.nix b/modules/themes/windows-95/default.nix similarity index 100% rename from themes/windows-95/default.nix rename to modules/themes/windows-95/default.nix diff --git a/themes/woodland/README.org b/modules/themes/woodland/README.org similarity index 100% rename from themes/woodland/README.org rename to modules/themes/woodland/README.org diff --git a/themes/woodland/default.nix b/modules/themes/woodland/default.nix similarity index 100% rename from themes/woodland/default.nix rename to modules/themes/woodland/default.nix diff --git a/themes/xcode-dusk/README.org b/modules/themes/xcode-dusk/README.org similarity index 100% rename from themes/xcode-dusk/README.org rename to modules/themes/xcode-dusk/README.org diff --git a/themes/xcode-dusk/default.nix b/modules/themes/xcode-dusk/default.nix similarity index 100% rename from themes/xcode-dusk/default.nix rename to modules/themes/xcode-dusk/default.nix diff --git a/user/README.org b/modules/user/README.org similarity index 100% rename from user/README.org rename to modules/user/README.org diff --git a/modules/user/art/default.nix b/modules/user/art/default.nix new file mode 100644 index 0000000..02d8158 --- /dev/null +++ b/modules/user/art/default.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.art; +in { + options = { + userSettings.art = { + enable = lib.mkEnableOption "Enable art apps"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + gimp + krita + pinta + inkscape + libresprite + ]; + userSettings.blender.enable = true; + }; +} diff --git a/user/app/blender/applyprefs.py b/modules/user/blender/applyprefs.py similarity index 100% rename from user/app/blender/applyprefs.py rename to modules/user/blender/applyprefs.py diff --git a/modules/user/blender/default.nix b/modules/user/blender/default.nix new file mode 100644 index 0000000..c6a6c89 --- /dev/null +++ b/modules/user/blender/default.nix @@ -0,0 +1,24 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.blender; +in { + options = { + userSettings.blender = { + enable = lib.mkEnableOption "Enable blender"; + }; + }; + + config = { + home.packages = [ pkgs.blender-hip ]; + home.file.".config/blender/extensions/node_pie.zip".source = builtins.fetchurl { + url = "https://github.com/strike-digital/node_pie/releases/download/1.2.38/node_pie_1_2_38.zip"; + sha256 = "sha256:00kscj7dkl80kc482jg3kcw9vhr1n64n44ld2xncr6gxil679fk2"; + }; + home.file.".config/blender/extensions/bool_tool.zip".source = builtins.fetchurl { + name = "bool_tool"; + url = "https://extensions.blender.org/download/sha256:74ecd752ec3eda67153c74ea5a6b22709da2669a6da43264bfa291fc784306b3/add-on-bool-tool-v1.1.2.zip?repository=%2Fapi%2Fv1%2Fextensions%2F&blender_version_min=4.2.0"; + sha256 = "sha256:1cq68dwgr4d2pxj3593dk9ka57bh49mmmskl7hangniyxi9dgv3l"; + }; + }; +} diff --git a/modules/user/bluetooth/default.nix b/modules/user/bluetooth/default.nix new file mode 100644 index 0000000..bbff411 --- /dev/null +++ b/modules/user/bluetooth/default.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.bluetooth; +in { + options = { + userSettings.bluetooth = { + enable = lib.mkEnableOption "Enable bluetooth"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + blueman + ]; + services = { + blueman-applet.enable = true; + }; + }; +} diff --git a/modules/user/browser/brave.nix b/modules/user/browser/brave.nix new file mode 100644 index 0000000..3e40b6b --- /dev/null +++ b/modules/user/browser/brave.nix @@ -0,0 +1,44 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.brave; +in { + options = { + userSettings.brave = { + enable = lib.mkEnableOption "Enable brave browser"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ pkgs.brave ]; + + nixpkgs.config.overlays = [ + (self: super: { + brave = super.brave.override { + commandLineArgs = [ + "--password-store=gnome-libsecret" + "--ignore-gpu-blocklist" + "--enable-gpu-rasterization" + "--enable-accelerated-video-decode" + "--enable-quic" + "--enable-zero-copy" + "--enable-native-gpu-memory-buffers" + "--num-raster-threads=4" + ]; + }; + }) + ]; + + xdg.mimeApps.defaultApplications = lib.mkIf (config.userSettings.browser == "brave" ) { + "text/html" = "brave-browser.desktop"; + "x-scheme-handler/http" = "brave-browser.desktop"; + "x-scheme-handler/https" = "brave-browser.desktop"; + "x-scheme-handler/about" = "brave-browser.desktop"; + "x-scheme-handler/unknown" = "brave-browser.desktop"; + }; + + home.sessionVariables = lib.mkIf (config.userSettings.browser == "brave") { + DEFAULT_BROWSER = "${pkgs.brave}/bin/brave"; + }; + }; +} diff --git a/modules/user/browser/default.nix b/modules/user/browser/default.nix new file mode 100644 index 0000000..f15343a --- /dev/null +++ b/modules/user/browser/default.nix @@ -0,0 +1,30 @@ +{ config, lib, pkgs, ... }: + +let + browser = config.userSettings.browser; +in { + options = { + userSettings.browser = lib.mkOption { + default = "brave"; + description = "Default browser"; + type = lib.types.enum [ "brave" "qutebrowser" "librewolf" ]; + }; + userSettings.spawnBrowser = lib.mkOption { + default = "brave"; + description = "Default browser spawn command"; + type = lib.types.str; + }; + }; + + config = { + userSettings.brave.enable = lib.mkIf (browser == "brave") true; + userSettings.librewolf.enable = lib.mkIf (browser == "librewolf") true; + userSettings.qutebrowser.enable = lib.mkIf (browser == "qutebrowser") true; + + userSettings.spawnBrowser = lib.mkMerge [ + (lib.mkIf ((browser == "brave") || (browser == "librewolf")) browser) + (lib.mkIf (!(config.userSettings.hyprland.hyprprofiles.enable) && (browser == "qutebrowser")) "qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4") + (lib.mkIf config.userSettings.hyprland.hyprprofiles.enable "qutebrowser-hyprprofile") + ]; + }; +} diff --git a/modules/user/browser/librewolf.nix b/modules/user/browser/librewolf.nix new file mode 100644 index 0000000..1c5804a --- /dev/null +++ b/modules/user/browser/librewolf.nix @@ -0,0 +1,51 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.librewolf; +in { + options = { + userSettings.librewolf = { + enable = lib.mkEnableOption "Enable librewolf browser"; + }; + }; + + config = lib.mkIf cfg.enable { + # Module installing librewolf as default browser + home.packages = [ pkgs.librewolf ]; + + home.file.".librewolf/librewolf.overrides.cfg".text = '' + defaultPref("font.size.variable.x-western",20); + defaultPref("browser.toolbars.bookmarks.visibility","always"); + defaultPref("privacy.resisttFingerprinting.letterboxing", true); + defaultPref("network.http.referer.XOriginPolicy",2); + defaultPref("privacy.clearOnShutdown.history",true); + defaultPref("privacy.clearOnShutdown.downloads",true); + defaultPref("privacy.clearOnShutdown.cookies",true); + defaultPref("gfx.webrender.software.opengl",false); + defaultPref("webgl.disabled",true); + + pref("font.size.variable.x-western",20); + pref("browser.toolbars.bookmarks.visibility","always"); + pref("privacy.resisttFingerprinting.letterboxing", true); + pref("network.http.referer.XOriginPolicy",2); + pref("privacy.clearOnShutdown.history",true); + pref("privacy.clearOnShutdown.downloads",true); + pref("privacy.clearOnShutdown.cookies",true); + pref("gfx.webrender.software.opengl",false); + pref("webgl.disabled",true); + ''; + + xdg.mimeApps.defaultApplications = lib.mkIf (config.userSettings.browser == "librewolf") { + "text/html" = "librewolf.desktop"; + "x-scheme-handler/http" = "librewolf.desktop"; + "x-scheme-handler/https" = "librewolf.desktop"; + "x-scheme-handler/about" = "librewolf.desktop"; + "x-scheme-handler/unknown" = "librewolf.desktop"; + }; + + home.sessionVariables = lib.mkIf (config.userSettings.browser == "librewolf") { + DEFAULT_BROWSER = "${pkgs.librewolf}/bin/librewolf"; + }; + }; + +} diff --git a/user/app/browser/qutebrowser-logo.png b/modules/user/browser/qutebrowser-logo.png similarity index 100% rename from user/app/browser/qutebrowser-logo.png rename to modules/user/browser/qutebrowser-logo.png diff --git a/user/app/browser/qutebrowser.nix b/modules/user/browser/qutebrowser.nix similarity index 59% rename from user/app/browser/qutebrowser.nix rename to modules/user/browser/qutebrowser.nix index bab1634..b9205e0 100644 --- a/user/app/browser/qutebrowser.nix +++ b/modules/user/browser/qutebrowser.nix @@ -1,129 +1,163 @@ -{ config, pkgs, userSettings, ... }: -let generateHomepage = name: font: config: - '' - +{ config, lib, pkgs, ... }: +let + cfg = config.userSettings.qutebrowser; + font = config.stylix.fonts.monospace.name; + generateHomepage = name: font: config: + '' + - - My Local Dashboard Awesome Homepage - - - + /*div*/ + div { + margin:auto; + width:50%; + text-align:center; + } + /*class made for ascii art icon*/ + .icon { + line-height:10% + } + + - - -
-
-
-
- -
-
-
-
- -

Welcome to Qutebrowser

-
-

''+name+" "+''Profile

-
- - - + + +
+
+
+
+ +
+
+
+
+ +

Welcome to Qutebrowser

+
+

''+name+" "+''Profile

+
+ +
+ - - ''; -in -{ - - home.packages = [ pkgs.qutebrowser - (pkgs.callPackage ./qute-containers.nix { dmenuCmd = "fuzzel -d"; }) - ]; - home.sessionVariables = { DEFAULT_BROWSER = "${pkgs.qutebrowser}/bin/qutebrowser"; }; - xdg.mimeApps.defaultApplications = { - "text/html" = "org.qutebrowser.qutebrowser.desktop"; - "x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop"; - "x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop"; - "x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop"; - "x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop"; + + ''; + qute-containers = (pkgs.callPackage ({ lib, stdenv, fetchFromGitHub, dmenuCmd ? config.userSettings.dmenuScripts.dmenuCmd, ... }: + let name = "qute-containers"; + version = "unstable"; + dmenu = dmenuCmd; + in + stdenv.mkDerivation { + inherit name version; + + src = fetchFromGitHub { + owner = "s-praveen-kumar"; + repo = "qute-containers"; + rev = "c6164b94104fa8565200b87bfc87a2e08ca15ac7"; + sha256 = "sha256-g684sPSEJTRSk2V8LVrQsNeRIYtaQueRpZeREWtmQKw="; + }; + + phases = "installPhase"; + + postPatch = ''sed -i "s/qutebrowser/qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4/g" container-open''; + + installPhase = '' + mkdir -p $out $out/bin + cp $src/* $out/bin + sed -i 's/DMENU=\"rofi -dmenu\"/DMENU=\"''+dmenu+''\"/g' $out/bin/containers_config + sed -i 's/DMENU_FLAGS//g' $out/bin/container-open + ''; + + meta = { + homepage = "https://github.com/s-praveen-kumar/qute-containers"; + description = "Browser Containers for Qutebrowser"; + license = lib.licenses.mit; + maintainers = []; + }; + })); +in { + options = { + userSettings.qutebrowser = { + enable = lib.mkEnableOption "Enable qutebrowser with my settings"; + }; }; - home.file.".config/qutebrowser/userscripts/container-open".source = "${(pkgs.callPackage ./qute-containers.nix { dmenuCmd = "fuzzel -d"; })}/bin/container-open"; - home.file.".config/qutebrowser/userscripts/containers_config".source = "${(pkgs.callPackage ./qute-containers.nix { dmenuCmd = "fuzzel -d"; })}/bin/containers_config"; - programs.qutebrowser.enable = true; - programs.qutebrowser.extraConfig = '' + config = lib.mkIf cfg.enable { + home.packages = [ pkgs.qutebrowser + #qute-containers # TODO disabled for debugging + ]; + +# home.file.".config/qutebrowser/userscripts/container-open".source = "${qute-containers}/bin/container-open"; +# home.file.".config/qutebrowser/userscripts/containers_config".source = "${qute-containers}/bin/containers_config"; + + programs.qutebrowser.enable = true; + programs.qutebrowser.extraConfig = '' import sys import os.path secretsExists = False @@ -137,7 +171,7 @@ if (os.path.isfile(secretFile)): quickmarksFile = os.path.join(os.path.dirname(__file__),'quickmarks') quickmarksHtmlFilePath = os.path.join(os.path.dirname(__file__),'quickmarks.html') quickmarksHtmlFile = open(quickmarksHtmlFilePath,"w") -quickmarksHtmlFileText = 'My Local Dashboard Awesome Homepage



Quickmarks


' +quickmarksHtmlFileText = 'My Local Dashboard Awesome Homepage



Quickmarks


' with open(quickmarksFile) as myQuickmarks: for line in myQuickmarks: quickmarkData = line.split() @@ -372,7 +406,7 @@ c.colors.tabs.selected.odd.bg = base02 c.colors.tabs.selected.even.fg = base05 c.colors.tabs.selected.even.bg = base02 -font = "''+userSettings.font+''" +font = "''+font+''" c.fonts.default_family = font c.fonts.default_size = '14pt' @@ -383,21 +417,34 @@ c.fonts.web.family.sans_serif = font c.fonts.web.family.fixed = font c.fonts.web.family.fantasy = font c.fonts.web.family.cursive = font - ''; - - home.file.".config/qutebrowser/containers".text = '' + ''; + + home.file.".config/qutebrowser/containers".text = '' Gamedev Teaching Youtube - ''; + ''; + + home.file.".config/qutebrowser/qute-home.html".text = generateHomepage "Default" font config; + home.file.".config/qutebrowser/logo.png".source = ./qutebrowser-logo.png; + home.file.".browser/Gamedev/config/qute-home.html".text = generateHomepage "Gamedev" font config; + home.file.".browser/Gamedev/config/logo.png".source = ./qutebrowser-logo.png; + home.file.".browser/Teaching/config/qute-home.html".text = generateHomepage "Teaching" font config; + home.file.".browser/Teaching/config/logo.png".source = ./qutebrowser-logo.png; + home.file.".browser/Youtube/config/qute-home.html".text = generateHomepage "Youtube" font config; + home.file.".browser/Youtube/config/logo.png".source = ./qutebrowser-logo.png; - home.file.".config/qutebrowser/qute-home.html".text = generateHomepage "Default" userSettings.font config; - home.file.".config/qutebrowser/logo.png".source = ./qutebrowser-logo.png; - home.file.".browser/Gamedev/config/qute-home.html".text = generateHomepage "Gamedev" userSettings.font config; - home.file.".browser/Gamedev/config/logo.png".source = ./qutebrowser-logo.png; - home.file.".browser/Teaching/config/qute-home.html".text = generateHomepage "Teaching" userSettings.font config; - home.file.".browser/Teaching/config/logo.png".source = ./qutebrowser-logo.png; - home.file.".browser/Youtube/config/qute-home.html".text = generateHomepage "Youtube" userSettings.font config; - home.file.".browser/Youtube/config/logo.png".source = ./qutebrowser-logo.png; + xdg.mimeApps.defaultApplications = lib.mkIf (config.userSettings.browser == "qutebrowser" ) { + "text/html" = "org.qutebrowser.qutebrowser.desktop"; + "x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop"; + "x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop"; + "x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop"; + "x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop"; + }; + home.sessionVariables = lib.mkIf (config.userSettings.browser == "qutebrowser") { + DEFAULT_BROWSER = "${pkgs.qutebrowser}/bin/qutebrowser"; + }; + + }; } diff --git a/modules/user/default.nix b/modules/user/default.nix new file mode 100644 index 0000000..0567ef8 --- /dev/null +++ b/modules/user/default.nix @@ -0,0 +1,29 @@ +{ lib, ... }: + +with lib; +let + # Recursively constructs an attrset of a given folder, recursing on directories, value of attrs is the filetype + getDir = dir: mapAttrs + (file: type: + if type == "directory" then getDir "${dir}/${file}" else type + ) + (builtins.readDir dir); + + # Collects all files of a directory as a list of strings of paths + files = dir: collect isString (mapAttrsRecursive (path: type: concatStringsSep "/" path) (getDir dir)); + + # Filters out directories that don't end with .nix or are this file, also makes the strings absolute + importAll = dir: map + (file: ./. + "/${file}") + (filter + (file: hasSuffix ".nix" file && file != "default.nix" && + ! lib.hasPrefix "x/taffybar/" file && + ! lib.hasSuffix "-hm.nix" file) + (files dir)); + +in +{ + + imports = importAll ./.; + +} diff --git a/modules/user/dmenu-scripts/default.nix b/modules/user/dmenu-scripts/default.nix new file mode 100644 index 0000000..f7de2bb --- /dev/null +++ b/modules/user/dmenu-scripts/default.nix @@ -0,0 +1,14 @@ +{ config, lib, ...}: + +{ + options = { + userSettings.dmenuScripts = { + enable = lib.mkEnableOption "Enable collection of dmenu scripts"; + dmenuCmd = lib.mkOption { + default = "rofi -show dmenu"; + description = "dmenu command"; + type = lib.types.str; + }; + }; + }; +} diff --git a/modules/user/dmenu-scripts/networkmanager-dmenu.nix b/modules/user/dmenu-scripts/networkmanager-dmenu.nix new file mode 100644 index 0000000..3c1716c --- /dev/null +++ b/modules/user/dmenu-scripts/networkmanager-dmenu.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.dmenuScripts; + dmenuCmd = cfg.dmenuCmd; +in { + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ networkmanager_dmenu networkmanagerapplet ]; + + home.file.".config/networkmanager-dmenu/config.ini".text = '' + [dmenu] + dmenu_command = ''+dmenuCmd+'' + + compact = True + wifi_chars = ▂▄▆█ + list_saved = True + + [editor] + terminal = alacritty + # gui_if_available = (Default: True) + ''; + }; +} diff --git a/modules/user/editor/default.nix b/modules/user/editor/default.nix new file mode 100644 index 0000000..c8223af --- /dev/null +++ b/modules/user/editor/default.nix @@ -0,0 +1,30 @@ +{ config, lib, pkgs, ... }: + +let + editor = config.userSettings.editor; + term = config.userSettings.terminal; +in { + options = { + userSettings.editor = lib.mkOption { + default = "emacs"; + description = "Default editor"; + type = lib.types.enum [ "emacs" ]; + # TODO add more editors + #type = lib.types.enum [ "emacs" "vim" "nvim" "neovide" "nano" "micro" "vscodium" "kate" "pulsar" ]; + }; + userSettings.spawnEditor = lib.mkOption { + default = ""; + description = "Command to spawn editor"; + }; + }; + + config = { + userSettings.emacs.enable = lib.mkIf (config.userSettings.editor == "emacs") true; + userSettings.spawnEditor = lib.mkMerge [ + (lib.mkIf (editor == "emacs") "emacsclient -c -a 'emacs'") + (lib.mkIf (editor == "neovide") "neovide -- --listen /tmp/nvimsocket") + (lib.mkIf (builtins.elem editor [ "vim" "nvim" "nano" "micro" ]) ("exec " + term + " -e " + editor)) + (lib.mkIf (!(builtins.elem editor [ "emacs" "vim" "nvim" "neovide" "nano" "micro"])) editor) + ]; + }; +} diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix new file mode 100644 index 0000000..d2c03ef --- /dev/null +++ b/modules/user/emacs/default.nix @@ -0,0 +1,74 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.emacs; +in { + options = { + userSettings.emacs = { + enable = lib.mkEnableOption "Enable emacs"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + (pkgs.emacsWithPackagesFromUsePackage { + config = ./init.el; + package = pkgs.emacs-pgtk; + alwaysEnsure = false; + extraEmacsPackages = epkgs: with epkgs; [ + org-modern olivetti + command-log-mode + vertico corfu hotfuzz orderless + evil evil-collection evil-snipe evil-owl evil-vimish-fold + dashboard doom-themes doom-modeline + nerd-icons nerd-icons-dired nerd-icons-corfu + nerd-icons-ibuffer nerd-icons-completion + yasnippet shackle + projectile treemacs treemacs-projectile + treemacs-evil treemacs-nerd-icons + treesit-grammars.with-all-grammars + git-timemachine wgrep + magit magit-file-icons magit-todos + undo-fu undo-fu-session + org-roam org-node org-node-fakeroam + vterm vterm-toggle sudo-edit + direnv + gdscript-mode + nix-mode + python python-mode + lsp-mode flycheck lsp-ui lsp-treemacs + # fix ultra-scroll + (epkgs.callPackage ( + { lib, fetchurl, trivialBuild }: + + trivialBuild { + pname = "ultra-scroll"; + version = "0.2.0"; + + src = fetchGit { + url = "https://github.com/jdtsmith/ultra-scroll.git"; + rev = "64ad7be02e11317576498dabb15c92cf31e2c04c"; + ref = "main"; + }; + + meta = with lib; { + description = "scroll Emacs like lightning"; + homepage = "https://github.com/jdtsmith/ultra-scroll"; + license = licenses.gpl3; + platforms = platforms.all; + }; + } + ) {}) + ]; + }) + fira-code + nerd-fonts.fira-code + nil + ]; + home.file.".config/emacs/init.el".source = ./init.el; + home.file.".config/emacs/themes/doom-stylix-theme.el".source = config.lib.stylix.colors { + template = builtins.readFile ./lib/doom-stylix-theme.el.mustache; + extension = ".el"; + }; + }; +} diff --git a/user/app/emacs/init.el b/modules/user/emacs/init.el similarity index 99% rename from user/app/emacs/init.el rename to modules/user/emacs/init.el index 4813f44..18eb187 100644 --- a/user/app/emacs/init.el +++ b/modules/user/emacs/init.el @@ -142,7 +142,6 @@ :after (org markdown git-timemachine)) (use-package ultra-scroll - :defer t :init (setq scroll-step 1 scroll-margin 0 diff --git a/user/app/emacs/doom-stylix-theme.el.mustache b/modules/user/emacs/lib/doom-stylix-theme.el.mustache similarity index 100% rename from user/app/emacs/doom-stylix-theme.el.mustache rename to modules/user/emacs/lib/doom-stylix-theme.el.mustache diff --git a/user/app/emacs/lib/line-wrapping-and-numbers.el b/modules/user/emacs/lib/line-wrapping-and-numbers.el similarity index 100% rename from user/app/emacs/lib/line-wrapping-and-numbers.el rename to modules/user/emacs/lib/line-wrapping-and-numbers.el diff --git a/modules/user/engineering/default.nix b/modules/user/engineering/default.nix new file mode 100644 index 0000000..e76158f --- /dev/null +++ b/modules/user/engineering/default.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.engineering; +in { + options = { + userSettings.engineering = { + enable = lib.mkEnableOption "Enable engineering programs"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + freecad + openscad + kicad + cura-appimage + ]; + }; +} diff --git a/modules/user/flatpak/default.nix b/modules/user/flatpak/default.nix new file mode 100644 index 0000000..66a8e2d --- /dev/null +++ b/modules/user/flatpak/default.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.flatpak; +in { + options = { + userSettings.flatpak = { + enable = lib.mkEnableOption "Enable flatpak support"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ pkgs.flatpak ]; + home.sessionVariables = { + XDG_DATA_DIRS = "$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share"; # lets flatpak work + }; + + #services.flatpak.enable = true; + #services.flatpak.packages = [ { appId = "com.kde.kdenlive"; origin = "flathub"; } ]; + #services.flatpak.update.onActivation = true; + }; +} diff --git a/modules/user/git/git.nix b/modules/user/git/git.nix new file mode 100644 index 0000000..e8b723c --- /dev/null +++ b/modules/user/git/git.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, osConfig, ... }: + +let + cfg = config.userSettings.git; +in { + options = { + userSettings.git = { + enable = lib.mkEnableOption "Enable git"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ pkgs.git ]; + programs.git.enable = true; + programs.git.userName = config.userSettings.name; + programs.git.userEmail = config.userSettings.email; + programs.git.extraConfig = { + init.defaultBranch = "main"; + safe.directory = [ osConfig.systemSettings.dotfilesDir (config.home.homeDirectory + "/.cache/nix/tarball-cache") ]; + }; + }; +} diff --git a/modules/user/godot/default.nix b/modules/user/godot/default.nix new file mode 100644 index 0000000..467604c --- /dev/null +++ b/modules/user/godot/default.nix @@ -0,0 +1,197 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.godot; +in { + options = { + userSettings.godot = { + enable = lib.mkEnableOption "Enable godot"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + godot_4 + ]; + + # ~/.config/godot must be owned by another user in order for this to work + # does not need to be recursively owned, however + + # TODO fix other colors + home.file.".config/godot/editor_settings-4.3.tres".text = '' + [gd_resource type="EditorSettings" format=3] + + [resource] + interface/editor/separate_distraction_mode = true + interface/theme/preset = "Custom" + interface/theme/spacing_preset = "Custom" + interface/theme/base_color = Color(''+config.lib.stylix.colors.base00-dec-r+'',''+config.lib.stylix.colors.base00-dec-g+'', ''+config.lib.stylix.colors.base00-dec-b+'', 0.8) + + interface/theme/accent_color = Color(''+config.lib.stylix.colors.base08-dec-r+'',''+config.lib.stylix.colors.base08-dec-g+'', ''+config.lib.stylix.colors.base08-dec-b+'', 1) + + interface/theme/contrast = 0.3 + interface/theme/icon_saturation = 1.55 + interface/theme/relationship_line_opacity = 0.35 + interface/theme/border_size = 1 + interface/theme/corner_radius = 6 + interface/theme/additional_spacing = 1 + interface/touchscreen/enable_pan_and_scale_gestures = true + interface/touchscreen/scale_gizmo_handles = 2.0 + interface/multi_window/enable = false + interface/multi_window/restore_windows_on_load = false + filesystem/external_programs/raster_image_editor = "krita" + filesystem/external_programs/vector_image_editor = "inkscape" + filesystem/external_programs/3d_model_editor = "blender" + filesystem/external_programs/terminal_emulator = "''+config.userSettings.terminal+''" + + filesystem/directories/default_project_path = "/home/''+config.home.username+''/Projects" + + text_editor/theme/highlighting/symbol_color = Color(0.67, 0.79, 1, 1) + text_editor/theme/highlighting/keyword_color = Color(1, 0.44, 0.52, 1) + text_editor/theme/highlighting/control_flow_keyword_color = Color(1, 0.55, 0.8, 1) + text_editor/theme/highlighting/base_type_color = Color(0.26, 1, 0.76, 1) + text_editor/theme/highlighting/engine_type_color = Color(0.56, 1, 0.86, 1) + text_editor/theme/highlighting/user_type_color = Color(0.78, 1, 0.93, 1) + text_editor/theme/highlighting/comment_color = Color(0.764706, 0.769608, 0.77451, 0.5) + text_editor/theme/highlighting/doc_comment_color = Color(0.6, 0.7, 0.8, 0.8) + text_editor/theme/highlighting/string_color = Color(1, 0.93, 0.63, 1) + text_editor/theme/highlighting/background_color = Color(0.0323529, 0.0431373, 0.0539216, 1) + text_editor/theme/highlighting/completion_background_color = Color(0.0588235, 0.0784314, 0.0980392, 1) + text_editor/theme/highlighting/completion_selected_color = Color(1, 1, 1, 0.07) + text_editor/theme/highlighting/completion_existing_color = Color(1, 1, 1, 0.14) + text_editor/theme/highlighting/completion_font_color = Color(0.764706, 0.769608, 0.77451, 1) + text_editor/theme/highlighting/text_color = Color(0.764706, 0.769608, 0.77451, 1) + text_editor/theme/highlighting/line_number_color = Color(0.764706, 0.769608, 0.77451, 0.5) + text_editor/theme/highlighting/safe_line_number_color = Color(0.764706, 0.923529, 0.77451, 0.75) + text_editor/theme/highlighting/caret_color = Color(1, 1, 1, 1) + text_editor/theme/highlighting/selection_color = Color(0.941176, 0.443137, 0.470588, 0.4) + text_editor/theme/highlighting/brace_mismatch_color = Color(1, 0.47, 0.42, 1) + text_editor/theme/highlighting/current_line_color = Color(1, 1, 1, 0.07) + text_editor/theme/highlighting/line_length_guideline_color = Color(0.0588235, 0.0784314, 0.0980392, 1) + text_editor/theme/highlighting/word_highlighted_color = Color(1, 1, 1, 0.07) + text_editor/theme/highlighting/number_color = Color(0.63, 1, 0.88, 1) + text_editor/theme/highlighting/function_color = Color(0.34, 0.7, 1, 1) + text_editor/theme/highlighting/member_variable_color = Color(0.736, 0.88, 1, 1) + text_editor/theme/highlighting/mark_color = Color(1, 0.47, 0.42, 0.3) + text_editor/theme/highlighting/breakpoint_color = Color(1, 0.47, 0.42, 1) + text_editor/theme/highlighting/code_folding_color = Color(1, 1, 1, 0.27) + text_editor/theme/highlighting/search_result_color = Color(1, 1, 1, 0.07) + text_editor/appearance/whitespace/draw_tabs = false + text_editor/behavior/indent/type = 1 + text_editor/behavior/indent/size = 2 + text_editor/behavior/files/trim_trailing_whitespace_on_save = true + editors/panning/2d_editor_panning_scheme = 1 + editors/panning/sub_editors_panning_scheme = 1 + editors/panning/simple_panning = true + project_manager/directory_naming_convention = 3 + asset_library/available_urls = { + "godotengine.org (Official)": "https://godotengine.org/asset-library/api" + } + asset_library/use_threads = true + export/android/java_sdk_path = "" + export/android/android_sdk_path = "" + export/android/debug_keystore = "/home/emmet/.local/share/godot/keystores/debug.keystore" + export/android/debug_keystore_user = "androiddebugkey" + export/android/debug_keystore_pass = "android" + export/android/force_system_user = false + export/android/shutdown_adb_on_exit = true + export/android/one_click_deploy_clear_previous_install = false + export/android/use_wifi_for_remote_debug = false + export/android/wifi_remote_debug_host = "localhost" + export/macos/rcodesign = "" + export/web/http_host = "localhost" + export/web/http_port = 8060 + export/web/use_tls = false + export/web/tls_key = "" + export/web/tls_certificate = "" + export/windows/rcedit = "" + export/windows/osslsigncode = "" + export/windows/wine = "/home/emmet/.nix-profile/bin/wine64" + _default_feature_profile = "" + interface/editors/show_scene_tree_root_selection = true + interface/editors/derive_script_globals_by_name = true + docks/scene_tree/ask_before_deleting_related_animation_tracks = true + _use_favorites_root_selection = false + filesystem/file_server/port = 6010 + filesystem/file_server/password = "" + editors/3d/manipulator_gizmo_size = 80 + editors/3d/manipulator_gizmo_opacity = 0.9 + editors/3d/navigation/show_viewport_rotation_gizmo = true + editors/3d/navigation/show_viewport_navigation_gizmo = false + text_editor/behavior/files/auto_reload_and_parse_scripts_on_save = true + text_editor/behavior/files/open_dominant_script_on_scene_change = false + text_editor/external/use_external_editor = false + text_editor/external/exec_path = "" + text_editor/script_list/script_temperature_enabled = true + text_editor/script_list/script_temperature_history_size = 15 + text_editor/script_list/group_help_pages = true + text_editor/script_list/sort_scripts_by = 0 + text_editor/script_list/list_script_names_as = 0 + text_editor/external/exec_flags = "{file}" + version_control/username = "" + version_control/ssh_public_key_path = "" + version_control/ssh_private_key_path = "" + editors/bone_mapper/handle_colors/unset = Color(0.3, 0.3, 0.3, 1) + editors/bone_mapper/handle_colors/set = Color(0.1, 0.6, 0.25, 1) + editors/bone_mapper/handle_colors/missing = Color(0.8, 0.2, 0.8, 1) + editors/bone_mapper/handle_colors/error = Color(0.8, 0.2, 0.2, 1) + network/debug_adapter/remote_port = 6006 + network/debug_adapter/request_timeout = 1000 + network/debug_adapter/sync_breakpoints = false + editors/3d_gizmos/gizmo_settings/path3d_tilt_disk_size = 0.8 + editors/3d_gizmos/gizmo_colors/path_tilt = Color(1, 1, 0.4, 0.9) + editors/3d_gizmos/gizmo_colors/skeleton = Color(1, 0.8, 0.4, 1) + editors/3d_gizmos/gizmo_colors/selected_bone = Color(0.8, 0.3, 0, 1) + editors/3d_gizmos/gizmo_settings/bone_axis_length = 0.1 + editors/3d_gizmos/gizmo_settings/bone_shape = 1 + editors/3d_gizmos/gizmo_colors/csg = Color(0, 0.4, 1, 0.15) + editors/grid_map/editor_side = 1 + editors/grid_map/palette_min_width = 230 + editors/grid_map/preview_size = 64 + export/ssh/ssh = "" + export/ssh/scp = "" + network/language_server/remote_host = "127.0.0.1" + network/language_server/remote_port = 6005 + network/language_server/enable_smart_resolve = true + network/language_server/show_native_symbols_in_editor = false + network/language_server/use_thread = false + network/language_server/poll_limit_usec = 100000 + text_editor/theme/highlighting/gdscript/function_definition_color = Color(0.4, 0.9, 1, 1) + text_editor/theme/highlighting/gdscript/global_function_color = Color(0.64, 0.64, 0.96, 1) + text_editor/theme/highlighting/gdscript/node_path_color = Color(0.72, 0.77, 0.49, 1) + text_editor/theme/highlighting/gdscript/node_reference_color = Color(0.39, 0.76, 0.35, 1) + text_editor/theme/highlighting/gdscript/annotation_color = Color(1, 0.7, 0.45, 1) + text_editor/theme/highlighting/gdscript/string_name_color = Color(1, 0.76, 0.65, 1) + text_editor/theme/highlighting/comment_markers/critical_color = Color(0.77, 0.35, 0.35, 1) + text_editor/theme/highlighting/comment_markers/warning_color = Color(0.72, 0.61, 0.48, 1) + text_editor/theme/highlighting/comment_markers/notice_color = Color(0.56, 0.67, 0.51, 1) + text_editor/theme/highlighting/comment_markers/critical_list = "ALERT,ATTENTION,CAUTION,CRITICAL,DANGER,SECURITY" + text_editor/theme/highlighting/comment_markers/warning_list = "BUG,DEPRECATED,FIXME,HACK,TASK,TBD,TODO,WARNING" + text_editor/theme/highlighting/comment_markers/notice_list = "INFO,NOTE,NOTICE,TEST,TESTING" + editors/3d_gizmos/gizmo_colors/camera = Color(0.8, 0.4, 0.8, 1) + editors/3d_gizmos/gizmo_colors/stream_player_3d = Color(0.4, 0.8, 1, 1) + editors/3d_gizmos/gizmo_colors/occluder = Color(0.8, 0.5, 1, 1) + editors/3d_gizmos/gizmo_colors/visibility_notifier = Color(0.8, 0.5, 0.7, 1) + editors/3d_gizmos/gizmo_colors/particles = Color(0.8, 0.7, 0.4, 1) + editors/3d_gizmos/gizmo_colors/particle_attractor = Color(1, 0.7, 0.5, 1) + editors/3d_gizmos/gizmo_colors/particle_collision = Color(0.5, 0.7, 1, 1) + editors/3d_gizmos/gizmo_colors/reflection_probe = Color(0.6, 1, 0.5, 1) + editors/3d_gizmos/gizmo_colors/decal = Color(0.6, 0.5, 1, 1) + editors/3d_gizmos/gizmo_colors/voxel_gi = Color(0.5, 1, 0.6, 1) + editors/3d_gizmos/gizmo_colors/lightmap_lines = Color(0.5, 0.6, 1, 1) + editors/3d_gizmos/gizmo_colors/lightprobe_lines = Color(0.5, 0.6, 1, 1) + editors/3d_gizmos/gizmo_colors/joint_body_a = Color(0.6, 0.8, 1, 1) + editors/3d_gizmos/gizmo_colors/joint_body_b = Color(0.6, 0.9, 1, 1) + editors/3d_gizmos/gizmo_colors/fog_volume = Color(0.5, 0.7, 1, 1) + text_editor/help/sort_functions_alphabetically = true + metadata/script_setup_templates_dictionary = { + "AnimatedSprite2D": "0NodeDefault", + "Area2D": "0NodeDefault", + "CanvasLayer": "0NodeDefault", + "Node": "0NodeDefault", + "Node2D": "0NodeDefault" + } + metadata/export_template_download_directory = "/home/emmet/.cache/godot" + ''; + }; +} diff --git a/modules/user/home.nix b/modules/user/home.nix new file mode 100644 index 0000000..b8aa3cc --- /dev/null +++ b/modules/user/home.nix @@ -0,0 +1,6 @@ +{ config, lib, pkgs, inputs, ... }: + +{ + imports = [ inputs.chaotic.homeManagerModules.default ]; + +} diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix new file mode 100644 index 0000000..7e3bcb2 --- /dev/null +++ b/modules/user/hyprland/default.nix @@ -0,0 +1,786 @@ +{ config, lib, pkgs, inputs, ... }: +let + cfg = config.userSettings.hyprland; + font = config.stylix.fonts.monospace.name; + term = config.userSettings.terminal; + spawnEditor = config.userSettings.spawnEditor; + spawnBrowser = config.userSettings.spawnBrowser; +in +{ + options = { + userSettings.hyprland = { + enable = lib.mkEnableOption "Enable hyprland"; + }; + }; + + config = { + userSettings.alacritty.enable = true; + userSettings.kitty.enable = true; + userSettings.japanese.enable = true; + userSettings.dmenuScripts = { + enable = true; + dmenuCmd = "fuzzel -d"; + }; + userSettings.hyprland.hyprprofiles.enable = lib.mkDefault true; + userSettings.stylix.enable = true; + + home.sessionVariables = { + NIXOS_OZONE_WL = 1; + XDG_CURRENT_DESKTOP = "Hyprland"; + XDG_SESSION_DESKTOP = "Hyprland"; + XDG_SESSION_TYPE = "wayland"; + WLR_DRM_DEVICES = "/dev/dri/card2:/dev/dri/card1"; + GDK_BACKEND = "wayland,x11,*"; + QT_QPA_PLATFORM = "wayland;xcb"; + QT_QPA_PLATFORMTHEME = lib.mkForce "qt5ct"; + QT_AUTO_SCREEN_SCALE_FACTOR = 1; + QT_WAYLAND_DISABLE_WINDOWDECORATION = 1; + CLUTTER_BACKEND = "wayland"; + GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"; + GSK_RENDERER = "gl"; + }; + + gtk.cursorTheme = { + package = pkgs.quintom-cursor-theme; + name = if (config.stylix.polarity == "light") then "Quintom_Ink" else "Quintom_Snow"; + size = 36; + }; + + wayland.windowManager.hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; + plugins = [ ]; + settings = { }; + systemd.variables = ["--all"]; + extraConfig = '' + + exec-once = hyprctl setcursor ${config.gtk.cursorTheme.name} ${builtins.toString config.gtk.cursorTheme.size} + exec-once = sleep 10 && nextcloud + exec-once = iio-hyprland + exec-once = hyprprofile Default + + exec-once = ydotoold + exec-once = sleep 10 && caffeine + #exec-once = STEAM_FRAME_FORCE_CLOSE=1 steam -silent + exec-once = nm-applet + exec-once = blueman-applet + exec-once = GOMAXPROCS=1 syncthing --no-browser + exec-once = protonmail-bridge --noninteractive + exec-once = eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2 + exec-once = hyprland-monitor-attached ~/.local/bin/eww-reload-bars.sh + exec-once = emacs --daemon + + exec-once = hypridle + exec-once = sleep 5 && libinput-gestures + exec-once = obs-notification-mute-daemon + + exec-once = hyprpaper + + bezier = wind, 0.05, 0.9, 0.1, 1.05 + bezier = winIn, 0.1, 1.1, 0.1, 1.0 + bezier = winOut, 0.3, -0.3, 0, 1 + bezier = liner, 1, 1, 1, 1 + bezier = linear, 0.0, 0.0, 1.0, 1.0 + + animations { + enabled = yes + animation = windowsIn, 1, 6, winIn, popin + animation = windowsOut, 1, 5, winOut, popin + animation = windowsMove, 1, 5, wind, slide + animation = border, 1, 10, default + animation = borderangle, 1, 100, linear, loop + animation = fade, 1, 10, default + animation = workspaces, 1, 5, wind + animation = windows, 1, 6, wind, slide + animation = specialWorkspace, 1, 6, default, slidefadevert -50% + } + + general { + layout = master + border_size = 5 + col.active_border = 0xff'' + config.lib.stylix.colors.base08 + " " + ''0xff'' + config.lib.stylix.colors.base09 + " " + ''0xff'' + config.lib.stylix.colors.base0A + " " + ''0xff'' + config.lib.stylix.colors.base0B + " " + ''0xff'' + config.lib.stylix.colors.base0C + " " + ''0xff'' + config.lib.stylix.colors.base0D + " " + ''0xff'' + config.lib.stylix.colors.base0E + " " + ''0xff'' + config.lib.stylix.colors.base0F + " " + ''270deg + + col.inactive_border = 0xff'' + config.lib.stylix.colors.base02 + '' + + resize_on_border = true + gaps_in = 7 + gaps_out = 7 + } + + cursor { + no_warps = false + inactive_timeout = 30 + } + + bind=SUPER,code:9,exec,nwggrid-wrapper + bind=SUPER,code:66,exec,nwggrid-wrapper + bind=SUPER,SPACE,fullscreen,1 + bind=SUPERSHIFT,F,fullscreen,0 + bind=SUPER,Y,workspaceopt,allfloat + bind=ALT,TAB,cyclenext + bind=ALT,TAB,bringactivetotop + bind=ALTSHIFT,TAB,cyclenext,prev + bind=ALTSHIFT,TAB,bringactivetotop + bind=SUPER,V,exec,wl-copy $(wl-paste | tr '\n' ' ') + bind=SUPERSHIFT,T,exec,screenshot-ocr + bind=CTRLALT,Delete,exec,hyprctl kill + bind=SUPERSHIFT,K,exec,hyprctl kill + + bind=,code:172,exec,mpc toggle + bind=,code:208,exec,mpc toggle + bind=,code:209,exec,mpc toggle + bind=,code:174,exec,mpc stop + bind=,code:171,exec,mpc next + bind=,code:173,exec,mpc prev + + bind = SUPER,R,pass,^(com\.obsproject\.Studio)$ + bind = SUPERSHIFT,R,pass,^(com\.obsproject\.Studio)$ + + bind=SUPER,RETURN,exec,'' + term + '' + + bind=SUPERSHIFT,RETURN,exec,'' + term + " " + '' --class float_term + + bind=SUPER,A,exec,'' + spawnEditor + '' + + bind=SUPER,S,exec,'' + spawnBrowser + '' + + bind=SUPERCTRL,S,exec,container-open # qutebrowser only + + bind=SUPERCTRL,P,pin + + bind=SUPER,code:47,exec,fuzzel + bind=SUPER,X,exec,fnottctl dismiss + bind=SUPERSHIFT,X,exec,fnottctl dismiss all + bind=SUPER,Q,killactive + bind=SUPERSHIFT,Q,exit + bindm=SUPER,mouse:272,movewindow + bindm=SUPER,mouse:273,resizewindow + bind=SUPER,T,togglefloating + bind=,code:148,exec,''+ term + " "+''-e numbat + + bind=,code:107,exec,grim -g "$(slurp)" + bind=SHIFT,code:107,exec,grim -g "$(slurp -o)" + bind=SUPER,code:107,exec,grim + bind=CTRL,code:107,exec,grim -g "$(slurp)" - | wl-copy + bind=SHIFTCTRL,code:107,exec,grim -g "$(slurp -o)" - | wl-copy + bind=SUPERCTRL,code:107,exec,grim - | wl-copy + + bind=,code:122,exec,swayosd-client --output-volume lower + bind=,code:123,exec,swayosd-client --output-volume raise + bind=,code:121,exec,swayosd-client --output-volume mute-toggle + bind=,code:256,exec,swayosd-client --output-volume mute-toggle + bind=SHIFT,code:122,exec,swayosd-client --output-volume lower + bind=SHIFT,code:123,exec,swayosd-client --output-volume raise + bind=,code:232,exec,swayosd-client --brightness lower + bind=,code:233,exec,swayosd-client --brightness raise + bind=,code:237,exec,brightnessctl --device='asus::kbd_backlight' set 1- + bind=,code:238,exec,brightnessctl --device='asus::kbd_backlight' set +1 + bind=,code:255,exec,airplane-mode + bind=SUPER,C,exec,wl-copy $(hyprpicker) + + bind=SUPERSHIFT,S,exec,systemctl suspend + bindl=,switch:on:Lid Switch,exec,loginctl lock-session + bind=SUPERCTRL,L,exec,loginctl lock-session + + bind=SUPER,H,movefocus,l + bind=SUPER,J,movefocus,d + bind=SUPER,K,movefocus,u + bind=SUPER,L,movefocus,r + + bind=SUPERSHIFT,H,movewindow,l + bind=SUPERSHIFT,J,movewindow,d + bind=SUPERSHIFT,K,movewindow,u + bind=SUPERSHIFT,L,movewindow,r + + bind=SUPER,1,focusworkspaceoncurrentmonitor,1 + bind=SUPER,2,focusworkspaceoncurrentmonitor,2 + bind=SUPER,3,focusworkspaceoncurrentmonitor,3 + bind=SUPER,4,focusworkspaceoncurrentmonitor,4 + bind=SUPER,5,focusworkspaceoncurrentmonitor,5 + bind=SUPER,6,focusworkspaceoncurrentmonitor,6 + bind=SUPER,7,focusworkspaceoncurrentmonitor,7 + bind=SUPER,8,focusworkspaceoncurrentmonitor,8 + bind=SUPER,9,focusworkspaceoncurrentmonitor,9 + + bind=SUPERCTRL,right,exec,hyprnome + bind=SUPERCTRL,left,exec,hyprnome --previous + bind=SUPERSHIFT,right,exec,hyprnome --move + bind=SUPERSHIFT,left,exec,hyprnome --previous --move + + bind=SUPERSHIFT,1,movetoworkspace,1 + bind=SUPERSHIFT,2,movetoworkspace,2 + bind=SUPERSHIFT,3,movetoworkspace,3 + bind=SUPERSHIFT,4,movetoworkspace,4 + bind=SUPERSHIFT,5,movetoworkspace,5 + bind=SUPERSHIFT,6,movetoworkspace,6 + bind=SUPERSHIFT,7,movetoworkspace,7 + bind=SUPERSHIFT,8,movetoworkspace,8 + bind=SUPERSHIFT,9,movetoworkspace,9 + + exec-once = alacritty --class scratch_term + exec-once = kitty --class scratch_ranger -e ranger + exec-once = alacritty --class scratch_numbat -e numbat + exec-once = kitty --class scratch_music -e ncmpcpp + exec-once = alacritty --class scratch_btm -e btm + exec-once = element-desktop + exec-once = pavucontrol + + bind=SUPER,Z,exec,if hyprctl clients | grep scratch_term; then echo "scratch_term respawn not needed"; else alacritty --class scratch_term; fi + bind=SUPER,Z,togglespecialworkspace,scratch_term + bind=SUPER,F,exec,if hyprctl clients | grep scratch_ranger; then echo "scratch_ranger respawn not needed"; else kitty --class scratch_ranger -e ranger; fi + bind=SUPER,F,togglespecialworkspace,scratch_ranger + bind=SUPER,N,exec,if hyprctl clients | grep scratch_numbat; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_numbat -e numbat; fi + bind=SUPER,N,togglespecialworkspace,scratch_numbat + bind=SUPER,M,exec,if hyprctl clients | grep scratch_music; then echo "scratch_music respawn not needed"; else kitty --class scratch_music -e ncmpcpp; fi + bind=SUPER,M,togglespecialworkspace,scratch_music + bind=SUPER,B,exec,if hyprctl clients | grep scratch_btm; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_btm -e btm; fi + bind=SUPER,B,togglespecialworkspace,scratch_btm + bind=SUPER,D,exec,if hyprctl clients | grep Element; then echo "scratch_ranger respawn not needed"; else element-desktop; fi + bind=SUPER,D,togglespecialworkspace,scratch_element + bind=SUPER,code:172,exec,togglespecialworkspace,scratch_pavucontrol + bind=SUPER,code:172,exec,if hyprctl clients | grep pavucontrol; then echo "scratch_ranger respawn not needed"; else pavucontrol; fi + + $scratchpadsize = size 80% 85% + + $scratch_term = class:^(scratch_term)$ + windowrulev2 = float,$scratch_term + windowrulev2 = $scratchpadsize,$scratch_term + windowrulev2 = workspace special:scratch_term silent ,$scratch_term + windowrulev2 = center,$scratch_term + + $float_term = class:^(float_term)$ + windowrulev2 = float,$float_term + windowrulev2 = center,$float_term + + $scratch_ranger = class:^(scratch_ranger)$ + windowrulev2 = float,$scratch_ranger + windowrulev2 = $scratchpadsize,$scratch_ranger + windowrulev2 = workspace special:scratch_ranger silent,$scratch_ranger + windowrulev2 = center,$scratch_ranger + + $scratch_numbat = class:^(scratch_numbat)$ + windowrulev2 = float,$scratch_numbat + windowrulev2 = $scratchpadsize,$scratch_numbat + windowrulev2 = workspace special:scratch_numbat silent,$scratch_numbat + windowrulev2 = center,$scratch_numbat + + $scratch_btm = class:^(scratch_btm)$ + windowrulev2 = float,$scratch_btm + windowrulev2 = $scratchpadsize,$scratch_btm + windowrulev2 = workspace special:scratch_btm silent,$scratch_btm + windowrulev2 = center,$scratch_btm + + windowrulev2 = float,class:^(Element)$ + windowrulev2 = size 85% 90%,class:^(Element)$ + windowrulev2 = workspace special:scratch_element silent,class:^(Element)$ + windowrulev2 = center,class:^(Element)$ + + $scratch_music = class:^(scratch_music)$ + windowrulev2 = float,$scratch_music + windowrulev2 = $scratchpadsize,$scratch_music + windowrulev2 = workspace special:scratch_music silent,$scratch_music + windowrulev2 = center,$scratch_music + + $savetodisk = title:^(Save to Disk)$ + windowrulev2 = float,$savetodisk + windowrulev2 = size 70% 75%,$savetodisk + windowrulev2 = center,$savetodisk + + $pavucontrol = class:^(org.pulseaudio.pavucontrol)$ + windowrulev2 = float,$pavucontrol + windowrulev2 = size 86% 40%,$pavucontrol + windowrulev2 = move 50% 6%,$pavucontrol + windowrulev2 = workspace special silent,$pavucontrol + windowrulev2 = opacity 0.80,$pavucontrol + + $miniframe = title:\*Minibuf.* + windowrulev2 = float,$miniframe + windowrulev2 = size 64% 50%,$miniframe + windowrulev2 = move 18% 25%,$miniframe + windowrulev2 = animation popin 1 20,$miniframe + + windowrulev2 = float,class:^(pokefinder)$ + windowrulev2 = float,class:^(Waydroid)$ + + windowrulev2 = float,title:(Blender Render) + windowrulev2 = size 86% 85%,title:(Blender Render) + windowrulev2 = center,title:(Blender Render) + windowrulev2 = float,class:^(org.inkscape.Inkscape)$ + windowrulev2 = float,class:^(pinta)$ + windowrulev2 = float,class:^(krita)$ + windowrulev2 = float,class:^(Gimp) + windowrulev2 = float,class:^(Gimp) + windowrulev2 = float,class:^(libresprite)$ + windowrulev2 = float,title:(Open Images) + windowrulev2 = size 86% 85%,title:(Open Images) + windowrulev2 = center,title:(Open Images) + windowrulev2 = float,title:(Create new document) + windowrulev2 = size 86% 85%,title:(Create new document) + windowrulev2 = center,title:(Create new document) + windowrulev2 = size 86% 85%,title:(Create new document) + windowrulev2 = float,title:(Create New Node) + windowrulev2 = size 70% 70%,title:(Create New Node) + windowrulev2 = center,title:(Create New Node) + windowrulev2 = float,title:(Resource) + windowrulev2 = size 70% 70%,title:(Resource) + windowrulev2 = center,title:(Resource) + windowrulev2 = tile,title:(Godot) + + windowrulev2 = opacity 0.80,title:ORUI + + windowrulev2 = opacity 1.0,class:^(org.qutebrowser.qutebrowser),fullscreen:1 + windowrulev2 = opacity 0.85,class:^(Element)$ + windowrulev2 = opacity 0.85,class:^(Logseq)$ + windowrulev2 = opacity 1.0,class:^(Brave-browser),fullscreen:1 + windowrulev2 = opacity 1.0,class:^(librewolf),fullscreen:1 + windowrulev2 = opacity 0.85,title:^(My Local Dashboard Awesome Homepage - qutebrowser)$ + windowrulev2 = opacity 0.85,title:\[.*\] - My Local Dashboard Awesome Homepage + windowrulev2 = opacity 0.85,class:^(org.keepassxc.KeePassXC)$ + windowrulev2 = opacity 0.85,class:^(org.gnome.Nautilus)$ + windowrulev2 = opacity 0.85,class:^(org.gnome.Nautilus)$ + + windowrulev2 = opacity 0.85,initialTitle:^(Notes)$,initialClass:^(Brave-browser)$ + + layerrule = blur,waybar + layerrule = xray 1,waybar + blurls = waybar + layerrule = ignorezero, eww + layerrule = xray 1,eww + layerrule = blur,launcher # fuzzel + blurls = launcher # fuzzel + layerrule = blur,gtk-layer-shell + layerrule = xray 1,gtk-layer-shell + layerrule = ignorezero, gtk-layer-shell + layerrule = blur,eww + layerrule = xray 1,eww + layerrule = ignorezero, eww + layerrule = animation popin 80%, eww + blurls = gtk-layer-shell + layerrule = blur,~nwggrid + layerrule = xray 1,~nwggrid + layerrule = animation fade,~nwggrid + blurls = ~nwggrid + + bind=SUPER,equal, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 + 0.5}')" + bind=SUPER,minus, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 - 0.5}')" + + bind=SUPER,I,exec,networkmanager_dmenu + bind=SUPER,P,exec,keepmenu + bind=SUPERSHIFT,P,exec,hyprprofile-dmenu + bind=SUPERCTRL,R,exec,phoenix refresh + + # 3 monitor setup + monitor=eDP-1,1920x1080@300,900x1080,1 + monitor=HDMI-A-1,1920x1080,1920x0,1 + monitor=DP-1,1920x1080,0x0,1 + + # hdmi tv + #monitor=eDP-1,1920x1080,1920x0,1 + #monitor=HDMI-A-1,1920x1080,0x0,1 + + # hdmi work projector + #monitor=eDP-1,1920x1080,1920x0,1 + #monitor=HDMI-A-1,1920x1200,0x0,1 + + xwayland { + force_zero_scaling = true + } + + binds { + movefocus_cycles_fullscreen = false + } + + input { + kb_layout = us + kb_options = caps:escape + repeat_delay = 450 + repeat_rate = 50 + accel_profile = adaptive + follow_mouse = 2 + float_switch_override_focus = 0 + } + + misc { + disable_hyprland_logo = true + mouse_move_enables_dpms = true + enable_swallow = true + swallow_regex = (scratch_term)|(Alacritty)|(kitty) + font_family = '' + font + '' + + } + decoration { + rounding = 8 + dim_special = 0.0 + blur { + enabled = true + size = 5 + passes = 2 + ignore_opacity = true + contrast = 1.17 + brightness = '' + (if (config.stylix.polarity == "dark") then "0.65" else "1.45") + '' + + xray = true + special = true + popups = true + } + } + + ''; + xwayland = { enable = true; }; + systemd.enable = true; + }; + + home.packages = (with pkgs; [ + hyprland-monitor-attached + caffeine-ng + alacritty + kitty + killall + polkit_gnome + eww + nwg-launchers + papirus-icon-theme + (pkgs.writeScriptBin "nwggrid-wrapper" '' + #!/bin/sh + if pgrep -x "nwggrid-server" > /dev/null + then + nwggrid -client + else + GDK_PIXBUF_MODULE_FILE=${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache nwggrid-server -layer-shell-exclusive-zone -1 -g adw-gtk3 -o 0.55 -b ${config.lib.stylix.colors.base00} + fi + '') + libva-utils + libinput-gestures + gsettings-desktop-schemas + (pkgs.makeDesktopItem { + name = "nwggrid"; + desktopName = "Application Launcher"; + exec = "nwggrid-wrapper"; + terminal = false; + type = "Application"; + noDisplay = true; + icon = "${config.home.homeDirectory}/.local/share/pixmaps/hyprland-logo-stylix.svg"; + }) + hyprnome + wlr-randr + wtype + ydotool + wl-clipboard + hyprland-protocols + hyprpicker + inputs.hyprlock.packages.${pkgs.system}.default + hypridle + hyprpaper + fnott + keepmenu + pinentry-gnome3 + wev + grim + slurp + libsForQt5.qt5.qtwayland + qt6.qtwayland + xdg-utils + wlsunset + pavucontrol + pamixer + tesseract4 + (pkgs.writeScriptBin "workspace-on-monitor" '' + #!/bin/sh + hyprctl monitors -j | jq ".[$1] | .activeWorkspace.id" + '') + (pkgs.writeScriptBin "open-under-ranger" '' + #!/bin/sh + command="$1" + echo $command + file="''${*:2}" + file=''${file// /\\ } + echo $file + workspace=$(hyprctl monitors -j | jq ".[] | select(.specialWorkspace.name == \"special:scratch_ranger\") | .activeWorkspace.id") + if [ -z "''${workspace}" ]; then + hyprctl dispatch exec -- "$command"; + else + hyprctl dispatch exec "[workspace $workspace]" -- "$command" "$file"; + fi + hyprctl dispatch togglespecialworkspace scratch_ranger + '') + (pkgs.writeScriptBin "screenshot-ocr" '' + #!/bin/sh + imgname="/tmp/screenshot-ocr-$(date +%Y%m%d%H%M%S).png" + txtname="/tmp/screenshot-ocr-$(date +%Y%m%d%H%M%S)" + txtfname=$txtname.txt + grim -g "$(slurp)" $imgname; + tesseract $imgname $txtname; + wl-copy -n < $txtfname + '') + (pkgs.writeScriptBin "sct" '' + #!/bin/sh + killall wlsunset &> /dev/null; + if [ $# -eq 1 ]; then + temphigh=$(( $1 + 1 )) + templow=$1 + wlsunset -t $templow -T $temphigh &> /dev/null & + else + killall wlsunset &> /dev/null; + fi + '') + (pkgs.writeScriptBin "obs-notification-mute-daemon" '' + #!/bin/sh + while true; do + if pgrep -x .obs-wrapped > /dev/null; + then + pkill -STOP fnott; + else + pkill -CONT fnott; + fi + sleep 10; + done + '') + (pkgs.writeScriptBin "suspend-unless-render" '' + #!/bin/sh + if pgrep -x nixos-rebuild > /dev/null || pgrep -x home-manager > /dev/null || pgrep -x kdenlive > /dev/null || pgrep -x FL64.exe > /dev/null || pgrep -x blender > /dev/null || pgrep -x flatpak > /dev/null; + then echo "Shouldn't suspend"; sleep 10; else echo "Should suspend"; systemctl suspend; fi + '') + ]); + home.file.".local/bin/eww-reload-bars.sh" = { + text = ''#!/bin/sh + eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2;''; + executable = true; + }; + home.file.".config/hypr/hypridle.conf".text = '' + general { + lock_cmd = pgrep hyprlock || hyprlock + before_sleep_cmd = loginctl lock-session + ignore_dbus_inhibit = false + } + + #listener { + # timeout = 150 # in seconds + # on-timeout = hyprctl dispatch dpms off + # on-resume = hyprctl dispatch dpms on + #} + listener { + timeout = 165 # in seconds + on-timeout = loginctl lock-session + } + listener { + timeout = 180 # in seconds + #timeout = 5400 # in seconds + on-timeout = systemctl suspend + on-resume = hyprctl dispatch dpms on + } + ''; + home.file.".config/hypr/hyprlock.conf".text = '' + background { + monitor = + path = screenshot + + # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations + blur_passes = 4 + blur_size = 5 + noise = 0.0117 + contrast = 0.8916 + brightness = 0.8172 + vibrancy = 0.1696 + vibrancy_darkness = 0.0 + } + + input-field { + monitor = + size = 200, 50 + outline_thickness = 3 + dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = false + dots_rounding = -1 # -1 default circle, -2 follow input-field rounding + outer_color = rgb(${config.lib.stylix.colors.base07-rgb-r},${config.lib.stylix.colors.base07-rgb-g},${config.lib.stylix.colors.base07-rgb-b}) + inner_color = rgb(${config.lib.stylix.colors.base00-rgb-r},${config.lib.stylix.colors.base00-rgb-g},${config.lib.stylix.colors.base00-rgb-b}) + font_color = rgb(${config.lib.stylix.colors.base07-rgb-r},${config.lib.stylix.colors.base07-rgb-g},${config.lib.stylix.colors.base07-rgb-b}) + fade_on_empty = true + fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered. + placeholder_text = Input Password... # Text rendered in the input box when it's empty. + hide_input = false + rounding = -1 # -1 means complete rounding (circle/oval) + check_color = rgb(${config.lib.stylix.colors.base0A-rgb-r},${config.lib.stylix.colors.base0A-rgb-g},${config.lib.stylix.colors.base0A-rgb-b}) + fail_color = rgb(${config.lib.stylix.colors.base08-rgb-r},${config.lib.stylix.colors.base08-rgb-g},${config.lib.stylix.colors.base08-rgb-b}) + fail_text = $FAIL ($ATTEMPTS) # can be set to empty + fail_transition = 300 # transition time in ms between normal outer_color and fail_color + capslock_color = -1 + numlock_color = -1 + bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) + invert_numlock = false # change color if numlock is off + swap_font_color = false # see below + + position = 0, -20 + halign = center + valign = center + } + + label { + monitor = + text = Screen Locked + color = rgb(${config.lib.stylix.colors.base07-rgb-r},${config.lib.stylix.colors.base07-rgb-g},${config.lib.stylix.colors.base07-rgb-b}) + font_size = 25 + font_family = ${font} + + rotate = 0 # degrees, counter-clockwise + + position = 0, 160 + halign = center + valign = center + } + + label { + monitor = + text = $TIME12 + color = rgb(${config.lib.stylix.colors.base07-rgb-r},${config.lib.stylix.colors.base07-rgb-g},${config.lib.stylix.colors.base07-rgb-b}) + font_size = 20 + font_family = ${font} + rotate = 0 # degrees, counter-clockwise + + position = 0, 80 + halign = center + valign = center + } + ''; + services.swayosd.enable = true; + services.swayosd.topMargin = 0.5; + services.cbatticon = { + enable = true; + iconType = "symbolic"; + }; + home.file.".config/eww/eww.yuck".source = ./eww/eww.yuck; + home.file = { + ".config/eww/eww.scss".source = config.lib.stylix.colors { + template = builtins.readFile ./eww/eww.scss.mustache; + extension = ".scss"; + }; + }; + home.file.".config/nwg-launchers/nwggrid/style.css".text = '' + button, label, image { + background: none; + border-style: none; + box-shadow: none; + color: #'' + config.lib.stylix.colors.base07 + ''; + + font-size: 20px; + } + + button { + padding: 5px; + margin: 5px; + text-shadow: none; + } + + button:hover { + background-color: rgba('' + config.lib.stylix.colors.base07-rgb-r + "," + config.lib.stylix.colors.base07-rgb-g + "," + config.lib.stylix.colors.base07-rgb-b + "," + ''0.15); + } + + button:focus { + box-shadow: 0 0 10px; + } + + button:checked { + background-color: rgba('' + config.lib.stylix.colors.base07-rgb-r + "," + config.lib.stylix.colors.base07-rgb-g + "," + config.lib.stylix.colors.base07-rgb-b + "," + ''0.15); + } + + #searchbox { + background: none; + border-color: #'' + config.lib.stylix.colors.base07 + ''; + + color: #'' + config.lib.stylix.colors.base07 + ''; + + margin-top: 20px; + margin-bottom: 20px; + + font-size: 20px; + } + + #separator { + background-color: rgba('' + config.lib.stylix.colors.base00-rgb-r + "," + config.lib.stylix.colors.base00-rgb-g + "," + config.lib.stylix.colors.base00-rgb-b + "," + ''0.55); + + color: #'' + config.lib.stylix.colors.base07 + ''; + margin-left: 500px; + margin-right: 500px; + margin-top: 10px; + margin-bottom: 10px + } + + #description { + margin-bottom: 20px + } + ''; + home.file.".config/nwg-launchers/nwggrid/terminal".text = "alacritty -e"; + + services.udiskie.enable = true; + services.udiskie.tray = "always"; + programs.fuzzel.enable = true; + programs.fuzzel.package = pkgs.fuzzel; + programs.fuzzel.settings = { + main = { + font = font + ":size=20"; + dpi-aware = "no"; + show-actions = "yes"; + terminal = "${pkgs.alacritty}/bin/alacritty"; + }; + colors = { + background = config.lib.stylix.colors.base00 + "bf"; + text = config.lib.stylix.colors.base07 + "ff"; + match = config.lib.stylix.colors.base05 + "ff"; + selection = config.lib.stylix.colors.base08 + "ff"; + selection-text = config.lib.stylix.colors.base00 + "ff"; + selection-match = config.lib.stylix.colors.base05 + "ff"; + border = config.lib.stylix.colors.base08 + "ff"; + }; + border = { + width = 3; + radius = 7; + }; + }; + services.fnott.enable = true; + services.fnott.settings = { + main = { + anchor = "bottom-right"; + stacking-order = "top-down"; + min-width = 400; + title-font = font + ":size=14"; + summary-font = font + ":size=12"; + body-font = font + ":size=11"; + border-size = 0; + }; + low = { + background = config.lib.stylix.colors.base00 + "e6"; + title-color = config.lib.stylix.colors.base03 + "ff"; + summary-color = config.lib.stylix.colors.base03 + "ff"; + body-color = config.lib.stylix.colors.base03 + "ff"; + idle-timeout = 150; + max-timeout = 30; + default-timeout = 8; + }; + normal = { + background = config.lib.stylix.colors.base00 + "e6"; + title-color = config.lib.stylix.colors.base07 + "ff"; + summary-color = config.lib.stylix.colors.base07 + "ff"; + body-color = config.lib.stylix.colors.base07 + "ff"; + idle-timeout = 150; + max-timeout = 30; + default-timeout = 8; + }; + critical = { + background = config.lib.stylix.colors.base00 + "e6"; + title-color = config.lib.stylix.colors.base08 + "ff"; + summary-color = config.lib.stylix.colors.base08 + "ff"; + body-color = config.lib.stylix.colors.base08 + "ff"; + idle-timeout = 0; + max-timeout = 0; + default-timeout = 0; + }; + }; + home.file.".config/hypr/hyprpaper.conf".text = '' + preload = ''+config.stylix.image+'' + + wallpaper = ,''+config.stylix.image+'' + + ''; + + }; +} diff --git a/user/wm/hyprland/eww/eww.scss.mustache b/modules/user/hyprland/eww/eww.scss.mustache similarity index 100% rename from user/wm/hyprland/eww/eww.scss.mustache rename to modules/user/hyprland/eww/eww.scss.mustache diff --git a/user/wm/hyprland/eww/eww.yuck b/modules/user/hyprland/eww/eww.yuck similarity index 100% rename from user/wm/hyprland/eww/eww.yuck rename to modules/user/hyprland/eww/eww.yuck diff --git a/modules/user/hyprland/hyprprofiles/default.nix b/modules/user/hyprland/hyprprofiles/default.nix new file mode 100644 index 0000000..e672d72 --- /dev/null +++ b/modules/user/hyprland/hyprprofiles/default.nix @@ -0,0 +1,76 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.userSettings.hyprland.hyprprofiles; + dmenuCmd = config.userSettings.dmenuScripts.dmenuCmd; + qutebrowserEnabled = config.userSettings.qutebrowser.enable; + qutebrowserDefault = (config.userSettings.browser == "qutebrowser"); +in +{ + options = { + userSettings.hyprland.hyprprofiles = { + enable = lib.mkEnableOption "Enable hyprprofile profile switcher"; + # TODO make option for list of profiles + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ + (pkgs.writeScriptBin "hyprprofile" '' + #!/bin/sh + prevprofile="$(cat ~/.hyprprofile)" + newprofile="$1" + if [ $# -eq 1 ]; then + if [ $newprofile = "Default" ]; then + echo "" > ~/.hyprprofile; + else + echo $newprofile > ~/.hyprprofile; + fi + if [ -f ~/.config/hyprprofiles/$prevprofile/exit-hook.sh ]; then + ~/.config/hyprprofiles/$prevprofile/exit-hook.sh; + fi + if [ -f ~/.config/hyprprofiles/$newprofile/start-hook.sh ]; then + ~/.config/hyprprofiles/$newprofile/start-hook.sh; + fi + fi + '') + (pkgs.writeScriptBin "hyprprofile-dmenu" '' + #!/bin/sh + choice="$(\ls ~/.config/hyprprofiles | ''+dmenuCmd+'')"; + hyprprofile $choice; + '')] ++ + lib.optionals qutebrowserEnabled [ + (pkgs.writeScriptBin "qutebrowser-hyprprofile" '' + #!/bin/sh + profile="$(cat ~/.hyprprofile)" + if [[ $profile ]]; then + container-open $profile $1; + else + qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4 $1; + fi + '') + (pkgs.makeDesktopItem { + name = "qutebrowser-hyprprofile"; + desktopName = "Qutebrowser Hyprprofile"; + exec = "qutebrowser-hyprprofile %u"; + categories = ["Network" "WebBrowser"]; + keywords = ["Browser"]; + terminal = false; + type = "Application"; + noDisplay = false; + icon = "qutebrowser"; + }) + ]; + xdg.mimeApps.defaultApplications = lib.optionals qutebrowserDefault (lib.mkForce { + "text/html" = "qutebrowser-hyprprofile.desktop"; + "x-scheme-handler/http" = "qutebrowser-hyprprofile.desktop"; + "x-scheme-handler/https" = "qutebrowser-hyprprofile.desktop"; + "x-scheme-handler/about" = "qutebrowser-hyprprofile.desktop"; + "x-scheme-handler/unknown" = "qutebrowser-hyprprofile.desktop"; + }); + home.file.".config/hyprprofiles/" = { + source = ./profiles; + recursive = true; + executable = true; + }; + }; +} diff --git a/user/wm/hyprland/hyprprofiles/profiles/Default/start-hook.sh b/modules/user/hyprland/hyprprofiles/profiles/Default/start-hook.sh similarity index 100% rename from user/wm/hyprland/hyprprofiles/profiles/Default/start-hook.sh rename to modules/user/hyprland/hyprprofiles/profiles/Default/start-hook.sh diff --git a/user/wm/hyprland/hyprprofiles/profiles/Gamdev/start-hook.sh b/modules/user/hyprland/hyprprofiles/profiles/Gamdev/start-hook.sh similarity index 100% rename from user/wm/hyprland/hyprprofiles/profiles/Gamdev/start-hook.sh rename to modules/user/hyprland/hyprprofiles/profiles/Gamdev/start-hook.sh diff --git a/user/wm/hyprland/hyprprofiles/profiles/Teaching/start-hook.sh b/modules/user/hyprland/hyprprofiles/profiles/Teaching/start-hook.sh similarity index 100% rename from user/wm/hyprland/hyprprofiles/profiles/Teaching/start-hook.sh rename to modules/user/hyprland/hyprprofiles/profiles/Teaching/start-hook.sh diff --git a/user/wm/hyprland/hyprprofiles/profiles/Tech/start-hook.sh b/modules/user/hyprland/hyprprofiles/profiles/Tech/start-hook.sh similarity index 100% rename from user/wm/hyprland/hyprprofiles/profiles/Tech/start-hook.sh rename to modules/user/hyprland/hyprprofiles/profiles/Tech/start-hook.sh diff --git a/modules/user/japanese/default.nix b/modules/user/japanese/default.nix new file mode 100644 index 0000000..d916379 --- /dev/null +++ b/modules/user/japanese/default.nix @@ -0,0 +1,121 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.japanese; +in { + options = { + userSettings.japanese = { + enable = lib.mkEnableOption "Enable Japanese input"; + }; + }; + + config = lib.mkIf cfg.enable { + i18n.inputMethod = { + enabled = "fcitx5"; + fcitx5.addons = with pkgs; [ + fcitx5-mozc + fcitx5-gtk + ]; + }; + home.file.".config/fcitx5/config".text = '' + [Hotkey] + # Enumerate when press trigger key repeatedly + EnumerateWithTriggerKeys=True + # Temporally switch between first and current Input Method + AltTriggerKeys= + # Enumerate Input Method Forward + EnumerateForwardKeys= + # Enumerate Input Method Backward + EnumerateBackwardKeys= + # Skip first input method while enumerating + EnumerateSkipFirst=False + # Toggle embedded preedit + TogglePreedit= + + [Hotkey/TriggerKeys] + 0=Super+comma + + [Hotkey/EnumerateGroupForwardKeys] + 0=Super+space + + [Hotkey/EnumerateGroupBackwardKeys] + 0=Shift+Super+space + + [Hotkey/ActivateKeys] + 0=Hangul_Hanja + + [Hotkey/DeactivateKeys] + 0=Hangul_Romaja + + [Hotkey/PrevPage] + 0=Up + + [Hotkey/NextPage] + 0=Down + + [Hotkey/PrevCandidate] + 0=Shift+Tab + + [Hotkey/NextCandidate] + 0=Tab + + [Behavior] + # Active By Default + ActiveByDefault=False + # Share Input State + ShareInputState=No + # Show preedit in application + PreeditEnabledByDefault=True + # Show Input Method Information when switch input method + ShowInputMethodInformation=True + # Show Input Method Information when changing focus + showInputMethodInformationWhenFocusIn=False + # Show compact input method information + CompactInputMethodInformation=True + # Show first input method information + ShowFirstInputMethodInformation=True + # Default page size + DefaultPageSize=5 + # Override Xkb Option + OverrideXkbOption=False + # Custom Xkb Option + CustomXkbOption= + # Force Enabled Addons + EnabledAddons= + # Force Disabled Addons + DisabledAddons= + # Preload input method to be used by default + PreloadInputMethod=True + # Allow input method in the password field + AllowInputMethodForPassword=False + # Show preedit text when typing password + ShowPreeditForPassword=False + # Interval of saving user data in minutes + AutoSavePeriod=30 + ''; +# home.file.".config/fcitx5/profile".text = '' +# [Groups/0] +# # Group Name +# Name=Default +# # Layout +# Default Layout=us +# # Default Input Method +# DefaultIM=mozc +# +# [Groups/0/Items/0] +# # Name +# Name=keyboard-us +# # Layout +# Layout= +# +# [Groups/0/Items/1] +# # Name +# Name=mozc +# # Layout +# Layout= +# +# [GroupOrder] +# 0=Default +# ''; + }; +} diff --git a/modules/user/keepass/default.nix b/modules/user/keepass/default.nix new file mode 100644 index 0000000..7711999 --- /dev/null +++ b/modules/user/keepass/default.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.keepass; +in { + options = { + userSettings.keepass = { + enable = lib.mkEnableOption "Enable keepass password manager"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + keepassxc + keepmenu + ]; + }; +} diff --git a/modules/user/media/default.nix b/modules/user/media/default.nix new file mode 100644 index 0000000..4729d21 --- /dev/null +++ b/modules/user/media/default.nix @@ -0,0 +1,42 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.media; +in { + options = { + userSettings.media = { + enable = lib.mkEnableOption "Enable media playback apps"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + vlc + #yt-dlp_git # TODO disabled for debugging + mpv mpc + ncmpcpp + ffmpeg + ]; + + services.mpd = rec { + enable = true; + musicDirectory = config.xdg.userDirs.music+"/Songs"; + playlistDirectory = config.xdg.userDirs.music+"/Playlists"; + dbFile = musicDirectory+"/mpd.db"; + extraConfig = '' + audio_output { + type "pipewire" + name "PipeWire Sound Server" + } + ''; + }; + + programs.ncmpcpp.bindings = [ + { key = "j"; command = "scroll_down"; } + { key = "k"; command = "scroll_up"; } + { key = "J"; command = [ "select_item" "scroll_down" ]; } + { key = "K"; command = [ "select_item" "scroll_up" ]; } + ]; + + }; +} diff --git a/modules/user/music/default.nix b/modules/user/music/default.nix new file mode 100644 index 0000000..97cba87 --- /dev/null +++ b/modules/user/music/default.nix @@ -0,0 +1,69 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.music; +in { + options = { + userSettings.music = { + enable = lib.mkEnableOption "Enable apps for making music"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + ardour + rosegarden + tenacity + mediainfo + easytag + bottles + # The following requires 64-bit FL Studio (FL64) to be installed to a bottle + # With a bottle name of "FL Studio" + (pkgs.writeShellScriptBin "flstudio" '' + #!/bin/sh + if [ -z "$1" ] + then + bottles-cli run -b "FL Studio" -p FL64 + #flatpak run --command=bottles-cli com.usebottles.bottles run -b FL\ Studio -p FL64 + else + filepath=$(winepath --windows "$1") + echo \'"$filepath"\' + bottles-cli run -b "FL Studio" -p "FL64" --args \'"$filepath"\' + #flatpak run --command=bottles-cli com.usebottles.bottles run -b FL\ Studio -p FL64 -args "$filepath" + fi + '') + (pkgs.makeDesktopItem { + name = "flstudio"; + desktopName = "FL Studio 64"; + exec = "flstudio %U"; + terminal = false; + type = "Application"; + icon = "flstudio"; + mimeTypes = ["application/octet-stream"]; + }) + (stdenv.mkDerivation { + name = "flstudio-icon"; + # icon from https://www.reddit.com/r/MacOS/comments/jtmp7z/i_made_icons_for_discord_spotify_and_fl_studio_in/ + src = [ ./flstudio.png ]; + + unpackPhase = '' + for srcFile in $src; do + # Copy file into build dir + cp $srcFile ./ + done + ''; + + installPhase = '' + mkdir -p $out $out/share $out/share/pixmaps + ls $src + ls + cp $src $out/share/pixmaps/flstudio.png + ''; + }) + ]; + + xdg.mimeApps.associations.added = { + "application/octet-stream" = "flstudio.desktop;"; + }; + }; +} diff --git a/user/pkgs/flstudio.png b/modules/user/music/flstudio.png similarity index 100% rename from user/pkgs/flstudio.png rename to modules/user/music/flstudio.png diff --git a/modules/user/nix/default.nix b/modules/user/nix/default.nix new file mode 100644 index 0000000..aeb4fd5 --- /dev/null +++ b/modules/user/nix/default.nix @@ -0,0 +1,31 @@ +{ config, lib, pkgs, inputs, ... }: + +let + caches = import inputs.secrets.caches; +in { + config = { + nix = { + package = lib.mkForce pkgs.nix; + settings = { + substituters = + (lib.optionals (caches ? urls) caches.urls) ++ + [ + "https://cache.nixos.org" + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; + trusted-public-keys = + (lib.optionals (caches ? publicKeys) caches.publicKeys) ++ + [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + trusted-users = [ "@wheel" ]; + auto-optimise-store = true; + download-buffer-size = 500000000; + }; + }; + home.stateVersion = "22.11"; + }; +} diff --git a/modules/user/office/default.nix b/modules/user/office/default.nix new file mode 100644 index 0000000..b266d81 --- /dev/null +++ b/modules/user/office/default.nix @@ -0,0 +1,33 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.office; +in { + options = { + userSettings.office = { + enable = lib.mkEnableOption "Enable my office programs"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + shared-mime-info + nautilus + libreoffice-still + mate.atril + xournalpp + adwaita-icon-theme + newsflash + foliate + gnome-maps + seahorse + element-desktop + openvpn + ]; + services.syncthing.enable = true; + services.nextcloud-client = { + enable = true; + startInBackground = true; + }; + }; +} diff --git a/user/app/ranger/README.org b/modules/user/ranger/README.org similarity index 100% rename from user/app/ranger/README.org rename to modules/user/ranger/README.org diff --git a/user/app/ranger/colorschemes/hail.py b/modules/user/ranger/colorschemes/hail.py similarity index 100% rename from user/app/ranger/colorschemes/hail.py rename to modules/user/ranger/colorschemes/hail.py diff --git a/user/app/ranger/commands.py b/modules/user/ranger/commands.py similarity index 100% rename from user/app/ranger/commands.py rename to modules/user/ranger/commands.py diff --git a/user/app/ranger/commands_full.py b/modules/user/ranger/commands_full.py similarity index 100% rename from user/app/ranger/commands_full.py rename to modules/user/ranger/commands_full.py diff --git a/modules/user/ranger/ranger.nix b/modules/user/ranger/ranger.nix new file mode 100644 index 0000000..cbf5df6 --- /dev/null +++ b/modules/user/ranger/ranger.nix @@ -0,0 +1,88 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.ranger; +in { + options = { + userSettings.ranger = { + enable = lib.mkEnableOption "Enable ranger file manager"; + }; + }; + + config = lib.mkIf cfg.enable { + nixpkgs.overlays = [ + (self: super: + { + ranger = super.ranger.overrideAttrs (oldAttrs: rec { + preConfigure = '' + substituteInPlace ranger/__init__.py \ + --replace "DEFAULT_PAGER = 'less'" "DEFAULT_PAGER = '${lib.getBin pkgs.bat}/bin/bat'" + + # give image previews out of the box when building with w3m + substituteInPlace ranger/config/rc.conf \ + --replace "set preview_images false" "set preview_images true" + + # adds this patch: https://github.com/ranger/ranger/pull/1758 + # fixes a bug for kitty users that use image previews + substituteInPlace ranger/ext/img_display.py \ + --replace "self.image_id -= 1" "self.image_id = max(0, self.image_id - 1)" + + # fixes the .desktop file + substituteInPlace doc/ranger.desktop \ + --replace "Icon=utilities-terminal" "Icon=user-desktop" + substituteInPlace doc/ranger.desktop \ + --replace "Terminal=true" "Terminal=false" + substituteInPlace doc/ranger.desktop \ + --replace "Exec=ranger" "Exec=kitty -e ranger %U" + ''; + }); + } + ) + ]; + + home.packages = with pkgs; [ + ranger + ripdrag + highlight + poppler_utils + librsvg + ffmpegthumbnailer + # TODO fix cbx script + (pkgs.writeScriptBin "cbx" '' + # this lets my copy and paste images and/or plaintext of files directly out of ranger + if [ "$#" -le "2" ]; then + if [ "$1" = "copy" -o "$1" = "cut" ]; then + if [ "$XDG_SESSION_TYPE" = "wayland" ]; then + wl-copy < $2; + else + # xclip -selection clipboard -t $(file -b --mime-type $2) -i $2; + xclip -selection clipboard -t image/png -i $2; + fi + fi + fi + '') + ]; + + xdg.mimeApps.associations.added = { + "inode/directory" = "ranger.desktop"; + }; + home.file.".config/ranger/rc.conf".source = ./rc.conf; + home.file.".config/ranger/rifle.conf".source = ./rifle.conf; + home.file.".config/ranger/scope.sh" = { + source = ./scope.sh; + executable = true; + }; + home.file.".config/ranger/commands.py" = { + source = ./commands.py; + executable = true; + }; + home.file.".config/ranger/commands_full.py" = { + source = ./commands_full.py; + executable = true; + }; + home.file.".config/ranger/colorschemes/hail.py" = { + source = ./colorschemes/hail.py; + executable = true; + }; + }; +} diff --git a/user/app/ranger/rc.conf b/modules/user/ranger/rc.conf similarity index 100% rename from user/app/ranger/rc.conf rename to modules/user/ranger/rc.conf diff --git a/user/app/ranger/rifle.conf b/modules/user/ranger/rifle.conf similarity index 99% rename from user/app/ranger/rifle.conf rename to modules/user/ranger/rifle.conf index 092ab3d..3fa8c4d 100644 --- a/user/app/ranger/rifle.conf +++ b/modules/user/ranger/rifle.conf @@ -86,7 +86,7 @@ ext blend~, has blender, X, flag f = open-under-ranger blender "$@" &>/dev/null ext xopp, has xournalpp, X, flag f = open-under-ranger xournalpp "$@" &>/dev/null ext xopp~, has blender, X, flag f = open-under-ranger xournalpp "$@" &>/dev/null ext helio, has helio, X, flag f = open-under-ranger helio "$@" &>/dev/null -ext kdenlive, has kdenlive-accel, X, flag f = open-under-ranger kdenlive-accel "$@" &>/dev/null +ext kdenlive, has kdenlive, X, flag f = open-under-ranger kdenlive "$@" &>/dev/null ext flp, has flstudio, X, flag f = open-under-ranger flstudio "$@" &>/dev/null ext 3mf, has Cura, X, flag f = open-under-ranger Cura "$@" &>/dev/null ext 3mf, has curax, X, flag f = open-under-ranger curax "$@" &>/dev/null diff --git a/user/app/ranger/scope.sh b/modules/user/ranger/scope.sh similarity index 100% rename from user/app/ranger/scope.sh rename to modules/user/ranger/scope.sh diff --git a/modules/user/recording/default.nix b/modules/user/recording/default.nix new file mode 100644 index 0000000..240dfcf --- /dev/null +++ b/modules/user/recording/default.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.recording; +in { + options = { + userSettings.recording = { + enable = lib.mkEnableOption "Enable studio recording and editing programs"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + obs-studio + kdenlive + tenacity + ardour + ]; + }; +} diff --git a/modules/user/remote/default.nix b/modules/user/remote/default.nix new file mode 100644 index 0000000..f28a671 --- /dev/null +++ b/modules/user/remote/default.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.remote; +in { + options = { + userSettings.remote = { + enable = lib.mkEnableOption "Enable programs for controlling remote machines"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + remmina + sshfs + ]; + }; +} diff --git a/modules/user/shell/default.nix b/modules/user/shell/default.nix new file mode 100644 index 0000000..1caf946 --- /dev/null +++ b/modules/user/shell/default.nix @@ -0,0 +1,63 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.shell; +in { + options = { + userSettings.shell = { + enable = lib.mkEnableOption "Enable fancy zsh with some necessary CLI utilities"; + }; + }; + + config = lib.mkIf cfg.enable { + programs.zsh = { + enable = true; + enableAutosuggestions = true; + syntaxHighlighting.enable = true; + enableCompletion = true; + shellAliases = { + ls = "eza --icons -l -T -L=1"; + cat = "bat"; + htop = "btm"; + fd = "fd -Lu"; + w3m = "w3m -no-cookie -v"; + neofetch = "disfetch"; + fetch = "disfetch"; + gitfetch = "onefetch"; + "," = "comma"; + ",," = "comma-shell"; + }; + initExtra = '' + PROMPT=" ◉ %U%F{magenta}%n%f%u@%U%F{blue}%m%f%u:%F{yellow}%~%f + %F{green}→%f " + RPROMPT="%F{red}▂%f%F{yellow}▄%f%F{green}▆%f%F{cyan}█%f%F{blue}▆%f%F{magenta}▄%f%F{white}▂%f" + [ $TERM = "dumb" ] && unsetopt zle && PS1='$ ' + bindkey '^P' history-beginning-search-backward + bindkey '^N' history-beginning-search-forward + ''; + }; + + programs.bash = { + enable = true; + enableCompletion = true; + shellAliases = config.programs.zsh.shellAliases; + }; + + home.packages = with pkgs; [ + gnugrep gnused w3m + bat eza bottom fd bc + direnv nix-direnv + ]; + + programs.neovim = { + enable = true; + viAlias = true; + vimAlias = true; + }; + + programs.direnv.enable = true; + programs.direnv.enableZshIntegration = true; + programs.direnv.nix-direnv.enable = true; + programs.direnv.nix-direnv.package = pkgs.nix-direnv-flakes; + }; +} diff --git a/modules/user/shell/term-apps-extra.nix b/modules/user/shell/term-apps-extra.nix new file mode 100644 index 0000000..d85ef9e --- /dev/null +++ b/modules/user/shell/term-apps-extra.nix @@ -0,0 +1,46 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.shell.extraApps; +in { + options = { + userSettings.shell.extraApps = { + enable = lib.mkEnableOption "Add some fun but mostly useless CLI apps"; + }; + }; + + config = lib.mkIf cfg.enable { + # Fun CLI apps that aren't necessary + home.packages = with pkgs; [ + # Command Line + disfetch lolcat cowsay + starfetch + (stdenv.mkDerivation { + name = "pokemon-colorscripts"; + version = "unstable"; + + src = fetchFromGitLab { + owner = "phoneybadger"; + repo = "pokemon-colorscripts"; + rev = "0483c85b93362637bdd0632056ff986c07f30868"; + sha256 = "sha256-rj0qKYHCu9SyNsj1PZn1g7arjcHuIDGHwubZg/yJt7A="; + }; + + installPhase = '' + mkdir -p $out $out/bin $out/opt + cp -rf $src/colorscripts $out/opt + cp $src/pokemon-colorscripts.py $out/opt + cp $src/pokemon.json $out/opt + ln -s $out/opt/pokemon-colorscripts.py $out/bin/pokemon-colorscripts + ''; + + meta = { + homepage = "https://github.com/Admiral-Fish/PokeFinder"; + description = "CLI utility to print out images of pokemon to terminal"; + license = lib.licenses.mit; + maintainers = []; + }; + }) + ]; + }; +} diff --git a/modules/user/shell/term-apps.nix b/modules/user/shell/term-apps.nix new file mode 100644 index 0000000..8b9b8d3 --- /dev/null +++ b/modules/user/shell/term-apps.nix @@ -0,0 +1,66 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.shell.apps; +in { + options = { + userSettings.shell.apps = { + enable = lib.mkEnableOption "Enable a collection of additional useful CLI apps"; + }; + }; + + config = lib.mkIf cfg.enable { + # Collection of useful CLI apps + home.packages = with pkgs; [ + # Command Line + killall + libnotify + timer + brightnessctl + gnugrep + bat eza fd bottom ripgrep + rsync + zip unzip + w3m + pandoc + hwinfo + pciutils + numbat + (pkgs.writeShellScriptBin "airplane-mode" '' + #!/bin/sh + connectivity="$(nmcli n connectivity)" + if [ "$connectivity" == "full" ] + then + nmcli n off + else + nmcli n on + fi + '') + (pkgs.writeScriptBin "comma" '' + if [ "$#" = 0 ]; then + echo "usage: comma PKGNAME... [EXECUTABLE]"; + elif [ "$#" = 1 ]; then + nix-shell -p $1 --run $1; + elif [ "$#" = 2 ]; then + nix-shell -p $1 --run $2; + else + echo "error: too many arguments"; + echo "usage: comma PKGNAME... [EXECUTABLE]"; + fi + '') + (pkgs.writeScriptBin "comma-shell" '' + if [ "$#" = 0 ]; then + echo "usage: comma-shell PKGNAME1 [PKGNAME2 PKGNAME3...]"; + else + nix-shell -p $@ + fi + '') + ]; + + programs.zsh.shellAliases = { + w3m = "w3m -no-cookie -v"; + "," = "comma"; + ",," = "comma-shell"; + }; + }; +} diff --git a/user/style/Trolltech.conf.mustache b/modules/user/stylix/Trolltech.conf.mustache similarity index 100% rename from user/style/Trolltech.conf.mustache rename to modules/user/stylix/Trolltech.conf.mustache diff --git a/modules/user/stylix/default.nix b/modules/user/stylix/default.nix new file mode 100644 index 0000000..05dc088 --- /dev/null +++ b/modules/user/stylix/default.nix @@ -0,0 +1,127 @@ +{ config, lib, pkgs, inputs, osConfig, ... }: + +let + cfg = config.userSettings.stylix; + theme = import (./. + "../../../themes"+("/"+config.userSettings.stylix.theme)); +in +{ + options = { + userSettings.stylix = { + enable = lib.mkEnableOption "Enable stylix theming"; + }; + userSettings.stylix.theme = lib.mkOption { + default = if (osConfig.stylix.enable) then osConfig.systemSettings.stylix.theme else "io"; + type = lib.types.enum (builtins.attrNames (lib.filterAttrs (name: type: type == "directory") (builtins.readDir ../../themes))); + description = "Theme for stylix to use for the user. A list of themes can be found in the `themes` directory."; + }; + }; + + # for whatever reason, I can't import stylix hmModule if the nixosModule is imported + imports = lib.optionals (!osConfig.stylix.enable) [ inputs.stylix.homeManagerModules.stylix ]; + + config = lib.mkIf cfg.enable { + stylix.enable = true; + home.file.".currenttheme".text = config.userSettings.stylix.theme; + stylix.autoEnable = false; + stylix.polarity = theme.polarity; + stylix.image = pkgs.fetchurl { + url = theme.backgroundUrl; + sha256 = theme.backgroundSha256; + }; + stylix.base16Scheme = theme; + + stylix.fonts = { + # TODO abstract fonts into an option + monospace = { + name = "FiraCode Nerd Font"; + package = pkgs.nerd-fonts.fira-code; + }; + serif = { + name = "FiraCode Nerd Font"; + package = pkgs.nerd-fonts.fira-code; + }; + sansSerif = { + name = "FiraCode Nerd Font"; + package = pkgs.nerd-fonts.fira-code; + }; + emoji = { + name = "Noto Color Emoji"; + package = pkgs.noto-fonts-emoji-blob-bin; + }; + sizes = { + terminal = 18; + applications = 12; + popups = 12; + desktop = 12; + }; + }; + + # move into alacritty config + stylix.targets.alacritty.enable = false; + programs.alacritty.settings = { + colors = { + # TODO revisit these color mappings + # these are just the default provided from stylix + # but declared directly due to alacritty v3.0 breakage + primary.background = "#"+config.lib.stylix.colors.base00; + primary.foreground = "#"+config.lib.stylix.colors.base07; + cursor.text = "#"+config.lib.stylix.colors.base00; + cursor.cursor = "#"+config.lib.stylix.colors.base07; + normal.black = "#"+config.lib.stylix.colors.base00; + normal.red = "#"+config.lib.stylix.colors.base08; + normal.green = "#"+config.lib.stylix.colors.base0B; + normal.yellow = "#"+config.lib.stylix.colors.base0A; + normal.blue = "#"+config.lib.stylix.colors.base0D; + normal.magenta = "#"+config.lib.stylix.colors.base0E; + normal.cyan = "#"+config.lib.stylix.colors.base0B; + normal.white = "#"+config.lib.stylix.colors.base05; + bright.black = "#"+config.lib.stylix.colors.base03; + bright.red = "#"+config.lib.stylix.colors.base09; + bright.green = "#"+config.lib.stylix.colors.base01; + bright.yellow = "#"+config.lib.stylix.colors.base02; + bright.blue = "#"+config.lib.stylix.colors.base04; + bright.magenta = "#"+config.lib.stylix.colors.base06; + bright.cyan = "#"+config.lib.stylix.colors.base0F; + bright.white = "#"+config.lib.stylix.colors.base07; + }; + font.size = config.stylix.fonts.sizes.terminal; + font.normal.family = config.stylix.fonts.monospace.name; + }; + + # move into kitty config + stylix.targets.kitty.enable = true; + + stylix.targets.gtk.enable = true; + + home.file = { + ".config/qt5ct/colors/oomox-current.conf".source = config.lib.stylix.colors { + template = builtins.readFile ./oomox-current.conf.mustache; + extension = ".conf"; + }; + ".config/Trolltech.conf".source = config.lib.stylix.colors { + template = builtins.readFile ./Trolltech.conf.mustache; + extension = ".conf"; + }; + ".config/kdeglobals".source = config.lib.stylix.colors { + template = builtins.readFile ./Trolltech.conf.mustache; + extension = ""; + }; + ".config/qt5ct/qt5ct.conf".text = pkgs.lib.mkBefore (builtins.readFile ./qt5ct.conf); + }; + home.packages = with pkgs; [ + libsForQt5.qt5ct pkgs.libsForQt5.breeze-qt5 libsForQt5.breeze-icons pkgs.noto-fonts-monochrome-emoji + ]; + qt = { + enable = true; + style.package = pkgs.libsForQt5.breeze-qt5; + style.name = "breeze-dark"; + platformTheme = "kde"; + }; + + fonts.fontconfig.defaultFonts = { + monospace = [ config.stylix.fonts.monospace.name ]; + sansSerif = [ config.stylix.fonts.sansSerif.name ]; + serif = [ config.stylix.fonts.serif.name ]; + }; + }; +} diff --git a/user/style/oomox-current.conf.mustache b/modules/user/stylix/oomox-current.conf.mustache similarity index 100% rename from user/style/oomox-current.conf.mustache rename to modules/user/stylix/oomox-current.conf.mustache diff --git a/user/style/qt5ct.conf b/modules/user/stylix/qt5ct.conf similarity index 100% rename from user/style/qt5ct.conf rename to modules/user/stylix/qt5ct.conf diff --git a/modules/user/terminal/alacritty.nix b/modules/user/terminal/alacritty.nix new file mode 100644 index 0000000..4bc00bf --- /dev/null +++ b/modules/user/terminal/alacritty.nix @@ -0,0 +1,19 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.alacritty; +in { + options = { + userSettings.alacritty = { + enable = lib.mkEnableOption "Enable alacritty"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ pkgs.alacritty ]; + programs.alacritty.enable = true; + programs.alacritty.settings = { + window.opacity = lib.mkForce 0.85; + }; + }; +} diff --git a/modules/user/terminal/default.nix b/modules/user/terminal/default.nix new file mode 100644 index 0000000..426beac --- /dev/null +++ b/modules/user/terminal/default.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: + +{ + options = { + userSettings.terminal = lib.mkOption { + default = "alacritty"; + description = "Default terminal"; + type = lib.types.enum [ "alacritty" "kitty" ]; + }; + }; + + config = { + userSettings.alacritty.enable = lib.mkDefault (config.userSettings.browser == "brave"); + userSettings.kitty.enable = lib.mkDefault (config.userSettings.browser == "librewolf"); + }; +} diff --git a/modules/user/terminal/kitty.nix b/modules/user/terminal/kitty.nix new file mode 100644 index 0000000..93d6a3e --- /dev/null +++ b/modules/user/terminal/kitty.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.kitty; +in { + options = { + userSettings.kitty = { + enable = lib.mkEnableOption "Enable kitty"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ pkgs.kitty ]; + programs.kitty.enable = true; + programs.kitty.settings = { + background_opacity = lib.mkForce "0.85"; + modify_font = "cell_width 90%"; + }; + }; +} diff --git a/modules/user/userInfo/default.nix b/modules/user/userInfo/default.nix new file mode 100644 index 0000000..c36cdb0 --- /dev/null +++ b/modules/user/userInfo/default.nix @@ -0,0 +1,18 @@ +{ config, lib, pkgs, ... }: + +{ + options = { + userSettings = { + name = lib.mkOption { + default = ""; + description = "User full name"; + type = lib.types.str; + }; + email = lib.mkOption { + default = ""; + description = "User email"; + type = lib.types.str; + }; + }; + }; +} diff --git a/modules/user/virtualization/virtual-machines/default.nix b/modules/user/virtualization/virtual-machines/default.nix new file mode 100644 index 0000000..df1da32 --- /dev/null +++ b/modules/user/virtualization/virtual-machines/default.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.userSettings.virtualization.virtualMachines; +in { + options = { + userSettings.virtualization.virtualMachines = { + enable = lib.mkEnableOption "Enable helpful VM apps"; + }; + }; + + config = lib.mkIf cfg.enable { + # Various packages related to virtualization, compatability and sandboxing + home.packages = with pkgs; [ + # Virtual Machines and wine + libvirt + virt-manager + qemu + uefi-run + lxc + swtpm + bottles + + # Filesystems + dosfstools + ]; + + home.file.".config/libvirt/qemu.conf".text = '' + nvram = ["/run/libvirt/nix-ovmf/OVMF_CODE.fd:/run/libvirt/nix-ovmf/OVMF_VARS.fd"] + ''; + }; +} diff --git a/modules/user/xdg/default.nix b/modules/user/xdg/default.nix new file mode 100644 index 0000000..1d75a34 --- /dev/null +++ b/modules/user/xdg/default.nix @@ -0,0 +1,39 @@ +{config, lib, pkgs, ... }: + +let + cfg = config.userSettings.xdg; +in { + options = { + userSettings.xdg = { + enable = lib.mkEnableOption "Enable xdg user dirs with my xdg directory structure"; + }; + }; + + config = lib.mkIf cfg.enable { + # TODO fix mime associations, most of them are totally broken :( + xdg.enable = true; + xdg.userDirs = { + enable = true; + createDirectories = true; + music = "${config.home.homeDirectory}/Media/Music"; + videos = "${config.home.homeDirectory}/Media/Videos"; + pictures = "${config.home.homeDirectory}/Media/Pictures"; + templates = "${config.home.homeDirectory}/Templates"; + download = "${config.home.homeDirectory}/Downloads"; + documents = "${config.home.homeDirectory}/Documents"; + desktop = null; + publicShare = null; + extraConfig = { + XDG_DOTFILES_DIR = "${config.home.homeDirectory}/.dotfiles"; + XDG_ARCHIVE_DIR = "${config.home.homeDirectory}/Archive"; + XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects"; + XDG_CLOUD_DIR = "${config.home.homeDirectory}/Drive"; + XDG_BOOK_DIR = "${config.home.homeDirectory}/Media/Books"; + XDG_VM_DIR = "${config.home.homeDirectory}/Machines"; + XDG_NOTES_DIR = "${config.home.homeDirectory}/Notes"; + }; + }; + xdg.mime.enable = true; + xdg.mimeApps.enable = true; + }; +} diff --git a/patches/README.org b/patches/README.org index e91c04d..182f565 100644 --- a/patches/README.org +++ b/patches/README.org @@ -5,9 +5,10 @@ Since I use =nixpkgs-unstable= (I am an Arch user by heart), there are some case With Nix, I /could/ just rollback everything and wait to update until an upstream patch fixes things, but if it's a quick fix, I'd rather just patch it in immediately so that everything else can stay up to date. +Patches end up in and out of this directory. Ideally, there shouldn't be any patches here! + ** List of Patches Here is a list of patches in this directory, along with a more detailed description of why it's necessary: | Patch | Reason | |------------------------------+----------------------------------------------------------------------------------------------| -| [[./emacs-no-version-check.patch][emacs-no-version-check.patch]] | [[https://github.com/NixOS/nixpkgs/commit/35ccb9db3f4f0872f05d175cf53d0e1f87ff09ea][35ccb9d]] breaks my nix-doom-emacs install by preventing home-manager from building. This patches undoes this commit. | diff --git a/profiles/homelab/README.org b/profiles/homelab/README.org deleted file mode 100644 index 0e0a4ba..0000000 --- a/profiles/homelab/README.org +++ /dev/null @@ -1,3 +0,0 @@ -#+title: Homelab Template - -This is a template system configuration to be installed as a homelab/server! diff --git a/profiles/homelab/base.nix b/profiles/homelab/base.nix deleted file mode 100644 index 4666e51..0000000 --- a/profiles/homelab/base.nix +++ /dev/null @@ -1,92 +0,0 @@ -{ lib, pkgs, systemSettings, userSettings, ... }: - -{ - imports = - [ ../../system/hardware-configuration.nix - ../../system/hardware/time.nix # Network time sync - ../../system/security/firewall.nix - ../../system/security/doas.nix - ../../system/security/gpg.nix - ( import ../../system/app/docker.nix {storageDriver = null; inherit pkgs userSettings lib;} ) - ]; - - # Fix nix path - nix.nixPath = [ "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos" - "nixos-config=$HOME/dotfiles/system/configuration.nix" - "/nix/var/nix/profiles/per-user/root/channels" - ]; - - # Ensure nix flakes are enabled - nix.extraOptions = '' - experimental-features = nix-command flakes - ''; - - # I'm sorry Stallman-taichou - nixpkgs.config.allowUnfree = true; - - # Kernel modules - boot.kernelModules = [ "i2c-dev" "i2c-piix4" ]; - - # Bootloader - # Use systemd-boot if uefi, default to grub otherwise - boot.loader.systemd-boot.enable = if (systemSettings.bootMode == "uefi") then true else false; - boot.loader.efi.canTouchEfiVariables = if (systemSettings.bootMode == "uefi") then true else false; - boot.loader.efi.efiSysMountPoint = systemSettings.bootMountPath; # does nothing if running bios rather than uefi - boot.loader.grub.enable = if (systemSettings.bootMode == "uefi") then false else true; - boot.loader.grub.device = systemSettings.grubDevice; # does nothing if running uefi rather than bios - - # Networking - networking.hostName = systemSettings.hostname; # Define your hostname. - networking.networkmanager.enable = true; # Use networkmanager - - # Timezone and locale - time.timeZone = systemSettings.timezone; # time zone - i18n.defaultLocale = systemSettings.locale; - i18n.extraLocaleSettings = { - LC_ADDRESS = systemSettings.locale; - LC_IDENTIFICATION = systemSettings.locale; - LC_MEASUREMENT = systemSettings.locale; - LC_MONETARY = systemSettings.locale; - LC_NAME = systemSettings.locale; - LC_NUMERIC = systemSettings.locale; - LC_PAPER = systemSettings.locale; - LC_TELEPHONE = systemSettings.locale; - LC_TIME = systemSettings.locale; - }; - - # User account - users.users.${userSettings.username} = { - isNormalUser = true; - description = userSettings.name; - extraGroups = [ "networkmanager" "wheel" ]; - packages = with pkgs; []; - uid = 1000; - }; - - # System packages - environment.systemPackages = with pkgs; [ - vim - wget - zsh - git - rclone - rdiff-backup - rsnapshot - cryptsetup - gocryptfs - attic-client - ]; - - programs.fuse.userAllowOther = true; - - services.haveged.enable = true; - - # I use zsh btw - environment.shells = with pkgs; [ zsh ]; - users.defaultUserShell = pkgs.zsh; - programs.zsh.enable = true; - - # It is ok to leave this unchanged for compatibility purposes - system.stateVersion = "22.11"; - -} diff --git a/profiles/homelab/configuration.nix b/profiles/homelab/configuration.nix deleted file mode 100644 index f589ee8..0000000 --- a/profiles/homelab/configuration.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ userSettings, ... }: - -{ - imports = [ ./base.nix - ( import ../../system/security/sshd.nix { - authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDaeejVJwUVrIZSo1isbu+gkQ7+8ftCgCsczy3OclkEVWHyRTqlG6yp74hr3j8ZNsOhov7c2Q6RqC8oy669hlxi/y9BsvtlI7sBr94oAKFOmkCS4RiK72ngJjBvI0vbk89wQQjmAd3r8B7ZcedpNOC8CkHu8SebKdYPRIUvAbPc3fTEt7DsJkazAepZCB8LEhUp57FAqQ/Ezlt3X/1uwNq5S0EbE9Zm+nUpEfSqR9apY2neKWLyGiCxpK3dzyNOuulCxvtVz+ie2sTk/6SxM+qWEoVVxhdwyxPihEjgC0EvtG0S5mVh5JmcjRkJOzzBHJuw+6r8yWn/AxGdIsoJ4rKNxH1XH1iLHgCraOLOUjUNlmejTcQPu6o92a79fdz2gCHT/BuIjfCW7MErAC3YSmF45TSur/kiWCBaTqYo06pgbQ3w1vKg7fievQlQzsutmg47RvJp6fb74yxuOdVg39cShQu/l8r6zqm21JAeUaaIp4P/0MrAIMOOVUhbK0QgsNElO4yn0ZKH8wGIF8xORh7ikxUIAyq8C41gjJiO2sAFJc3M8DhduQU3X0lHB7U0Qyu+8ZXn05+zdFPXJ73LKc7DCcLkppRXJsdHLSDEFdWqFnV7o08B4qZkPMT4pmvhwhY0Pf1fwavOqxuTstzw18gUGyQzl0foQi0Qrmdazsp2Qw== emmet@snowfire"]; - inherit userSettings; }) - ]; -} diff --git a/profiles/homelab/home.nix b/profiles/homelab/home.nix deleted file mode 100644 index cb76da8..0000000 --- a/profiles/homelab/home.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ pkgs, userSettings, ... }: - -{ - # Home Manager needs a bit of information about you and the paths it should - # manage. - home.username = userSettings.username; - home.homeDirectory = "/home/"+userSettings.username; - - programs.home-manager.enable = true; - - imports = [ - ../../user/shell/sh.nix # My zsh and bash config - ../../user/app/ranger/ranger.nix # My ranger file manager config - ../../user/app/git/git.nix # My git config - ]; - - home.stateVersion = "22.11"; # Please read the comment before changing. - - home.packages = with pkgs; [ - # Core - zsh - git - ]; - -} diff --git a/profiles/nix-on-droid/README.org b/profiles/nix-on-droid/README.org deleted file mode 100644 index eed6617..0000000 --- a/profiles/nix-on-droid/README.org +++ /dev/null @@ -1,3 +0,0 @@ -#+title: I need Emacs on the go! - -This is my =Nix on Droid= profile, which is a minimal installation I use on Android. This (obviously) requires [[https://github.com/nix-community/nix-on-droid][nix-on-droid]] to be installed. I essentially just use this for Emacs and some CLI apps. diff --git a/profiles/nix-on-droid/configuration.nix b/profiles/nix-on-droid/configuration.nix deleted file mode 100644 index ad9ed92..0000000 --- a/profiles/nix-on-droid/configuration.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ config, lib, pkgs, pkgs-stable, systemSettings, userSettings, inputs, ... }: - -{ - # Simply install just the packages - environment.packages = with pkgs; [ - # User-facing stuff that you really really want to have - vim # or some other editor, e.g. nano or neovim - - # Some common stuff that people expect to have - procps - killall - diffutils - findutils - utillinux - tzdata - hostname - man - gnugrep - gnupg - gnused - gnutar - bzip2 - gzip - xz - zip - unzip - git - ]; - - # Backup etc files instead of failing to activate generation if a file already exists in /etc - environment.etcBackupExtension = ".bak"; - - # Read the changelog before changing this value - system.stateVersion = "23.11"; - - # Set up nix for flakes - nix.extraOptions = '' - experimental-features = nix-command flakes - ''; - - # Set your time zone - #time.timeZone = "Europe/Berlin"; - - # Configure home-manager - home-manager = { - backupFileExtension = "hm-bak"; - useGlobalPkgs = true; - - config = ./home.nix; - - extraSpecialArgs = { - # pass config variables from above - inherit pkgs-stable; - inherit systemSettings; - inherit userSettings; - inherit inputs; - }; - }; -} diff --git a/profiles/nix-on-droid/home.nix b/profiles/nix-on-droid/home.nix deleted file mode 100644 index c2f896c..0000000 --- a/profiles/nix-on-droid/home.nix +++ /dev/null @@ -1,50 +0,0 @@ -{ config, pkgs, userSettings, ... }: - -{ - programs.home-manager.enable = true; - - imports = [ - ../../user/shell/sh.nix # My zsh and bash config - ../../user/shell/cli-collection.nix # Useful CLI apps - ../../user/app/ranger/ranger.nix # My ranger file manager config - ../../user/app/git/git.nix # My git config - ../../user/style/stylix.nix # Styling and themes for my apps - ]; - - home.stateVersion = "22.11"; # Please read the comment before changing. - - home.packages = with pkgs; [ - # Core - zsh - git - ]; - - xdg.enable = true; - xdg.userDirs = { - enable = true; - createDirectories = true; - music = "${config.home.homeDirectory}/Media/Music"; - videos = "${config.home.homeDirectory}/Media/Videos"; - pictures = "${config.home.homeDirectory}/Media/Pictures"; - templates = "${config.home.homeDirectory}/Templates"; - download = "${config.home.homeDirectory}/Downloads"; - documents = "${config.home.homeDirectory}/Documents"; - desktop = null; - publicShare = null; - extraConfig = { - XDG_DOTFILES_DIR = "${config.home.homeDirectory}/.dotfiles"; - XDG_ARCHIVE_DIR = "${config.home.homeDirectory}/Archive"; - XDG_ORG_DIR = "${config.home.homeDirectory}/Org"; - XDG_BOOK_DIR = "${config.home.homeDirectory}/Media/Books"; - }; - }; - xdg.mime.enable = true; - xdg.mimeApps.enable = true; - - home.sessionVariables = { - EDITOR = userSettings.editor; - }; - - news.display = "silent"; - -} diff --git a/profiles/personal/configuration.nix b/profiles/personal/configuration.nix deleted file mode 100644 index 9aff188..0000000 --- a/profiles/personal/configuration.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ ... }: -{ - imports = - [ ../work/configuration.nix # Personal is essentially work system + games - ../../system/hardware-configuration.nix - ../../system/app/gamemode.nix - ../../system/app/prismlauncher.nix - ]; -} diff --git a/profiles/personal/home.nix b/profiles/personal/home.nix deleted file mode 100644 index cacd0db..0000000 --- a/profiles/personal/home.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ config, pkgs, userSettings, ... }: - -{ - # Home Manager needs a bit of information about you and the paths it should - # manage. - home.username = userSettings.username; - home.homeDirectory = "/home/"+userSettings.username; - - programs.home-manager.enable = true; - - imports = [ ../work/home.nix # Personal is essentially work system + games - ]; - - home.stateVersion = "22.11"; # Please read the comment before changing. - - home.packages = with pkgs; [ - # Core - zsh - alacritty - brave - git - syncthing - ]; - - xdg.enable = true; - -} diff --git a/profiles/work/README.org b/profiles/work/README.org deleted file mode 100644 index 3f6d8af..0000000 --- a/profiles/work/README.org +++ /dev/null @@ -1,3 +0,0 @@ -#+title: No time for games! - -This is my =Work= profile, including all the things I need to be efficient for the various hats I wear, and /not/ including distracting things such as games and social apps! diff --git a/profiles/work/configuration.nix b/profiles/work/configuration.nix deleted file mode 100644 index 383eda1..0000000 --- a/profiles/work/configuration.nix +++ /dev/null @@ -1,166 +0,0 @@ -{ pkgs, lib, systemSettings, userSettings, ... }: -{ - imports = - [ ../../system/hardware-configuration.nix - ../../system/hardware/systemd.nix # systemd config - ../../system/hardware/kernel.nix # Kernel config - ../../system/hardware/power.nix # Power management - ../../system/hardware/time.nix # Network time sync - ../../system/hardware/opengl.nix - ../../system/hardware/printing.nix - ../../system/hardware/bluetooth.nix - (./. + "../../../system/wm"+("/"+userSettings.wm)+".nix") # My window manager - #../../system/app/flatpak.nix - ../../system/app/virtualization.nix - ( import ../../system/app/docker.nix {storageDriver = null; inherit pkgs userSettings lib;} ) - ../../system/security/doas.nix - ../../system/security/gpg.nix - ../../system/security/blocklist.nix - ../../system/security/firewall.nix - ../../system/security/firejail.nix - ../../system/security/openvpn.nix - ../../system/security/automount.nix - ../../system/style/stylix.nix - ]; - - # Fix nix path - nix.nixPath = [ "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos" - "nixos-config=$HOME/dotfiles/system/configuration.nix" - "/nix/var/nix/profiles/per-user/root/channels" - ]; - - # Ensure nix flakes are enabled - nix.extraOptions = '' - experimental-features = nix-command flakes - ''; - - # Substituters - nix.settings = { - substituters = [ - "https://cache.nixos.org" - "https://hyprland.cachix.org" - "https://nix-community.cachix.org" - ]; - trusted-public-keys = [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - ]; - }; - - # wheel group gets trusted access to nix daemon - nix.settings.trusted-users = [ "@wheel" ]; - - # I'm sorry Stallman-taichou - nixpkgs.config.allowUnfree = true; - - # Kernel modules - boot.kernelModules = [ "i2c-dev" "i2c-piix4" "cpufreq_powersave" ]; - - # Bootloader - # Use systemd-boot if uefi, default to grub otherwise - boot.loader.systemd-boot.enable = if (systemSettings.bootMode == "uefi") then true else false; - boot.loader.systemd-boot.editor = false; - boot.loader.efi.canTouchEfiVariables = if (systemSettings.bootMode == "uefi") then true else false; - boot.loader.efi.efiSysMountPoint = systemSettings.bootMountPath; # does nothing if running bios rather than uefi - boot.loader.grub.enable = if (systemSettings.bootMode == "uefi") then false else true; - boot.loader.grub.device = systemSettings.grubDevice; # does nothing if running uefi rather than bios - - # Silent Boot - # https://wiki.archlinux.org/title/Silent_boot - boot.kernelParams = [ - "quiet" - "splash" - "vga=current" - "rd.systemd.show_status=false" - "rd.udev.log_level=3" - "udev.log_priority=3" - ]; - boot.consoleLogLevel = 0; - boot.initrd.systemd.enable = true; - # https://github.com/NixOS/nixpkgs/pull/108294 - boot.initrd.verbose = false; - - boot.plymouth.enable = true; - #boot.plymouth.themePackages = with pkgs; [ nixos-bgrt-plymouth ]; - #boot.plymouth.theme = "NixOS BGRT"; - - # Networking - networking.hostName = systemSettings.hostname; # Define your hostname. - networking.networkmanager.enable = true; # Use networkmanager - - # Timezone and locale - time.timeZone = systemSettings.timezone; # time zone - i18n.defaultLocale = systemSettings.locale; - i18n.extraLocaleSettings = { - LC_ADDRESS = systemSettings.locale; - LC_IDENTIFICATION = systemSettings.locale; - LC_MEASUREMENT = systemSettings.locale; - LC_MONETARY = systemSettings.locale; - LC_NAME = systemSettings.locale; - LC_NUMERIC = systemSettings.locale; - LC_PAPER = systemSettings.locale; - LC_TELEPHONE = systemSettings.locale; - LC_TIME = systemSettings.locale; - }; - - # User account - users.users.${userSettings.username} = { - isNormalUser = true; - description = userSettings.name; - extraGroups = [ "networkmanager" "wheel" "input" "dialout" "video" "render" ]; - packages = []; - uid = 1000; - }; - - # System packages - environment.systemPackages = with pkgs; [ - vim - wget - zsh - git - cryptsetup - home-manager - wpa_supplicant - attic-client - (pkgs.writeScriptBin "comma" '' - if [ "$#" = 0 ]; then - echo "usage: comma PKGNAME... [EXECUTABLE]"; - elif [ "$#" = 1 ]; then - nix-shell -p $1 --run $1; - elif [ "$#" = 2 ]; then - nix-shell -p $1 --run $2; - else - echo "error: too many arguments"; - echo "usage: comma PKGNAME... [EXECUTABLE]"; - fi - '') - (pkgs.writeScriptBin "comma-shell" '' - if [ "$#" = 0 ]; then - echo "usage: comma-shell PKGNAME1 [PKGNAME2 PKGNAME3...]"; - else - nix-shell -p $@ - fi - '') - - ]; - - # I use zsh btw - environment.shells = with pkgs; [ zsh ]; - users.defaultUserShell = pkgs.zsh; - programs.zsh.enable = true; - - fonts.fontDir.enable = true; - - xdg.portal = { - enable = true; - extraPortals = [ - pkgs.xdg-desktop-portal - pkgs.xdg-desktop-portal-gtk - ]; - }; - - # It is ok to leave this unchanged for compatibility purposes - system.stateVersion = "22.11"; - -} diff --git a/profiles/work/home.nix b/profiles/work/home.nix deleted file mode 100644 index 55dc553..0000000 --- a/profiles/work/home.nix +++ /dev/null @@ -1,276 +0,0 @@ -{ config, pkgs, pkgs-stable, userSettings, ... }: - -{ - # Home Manager needs a bit of information about you and the paths it should - # manage. - home.username = userSettings.username; - home.homeDirectory = "/home/"+userSettings.username; - - programs.home-manager.enable = true; - - imports = [ - (./. + "../../../user/wm"+("/"+userSettings.wm+"/"+userSettings.wm)+".nix") # My window manager selected from flake - ../../user/shell/sh.nix # My zsh and bash config - ../../user/shell/cli-collection.nix # Useful CLI apps - ../../user/app/emacs # Emacs config that I'm currently rebuilding - ../../user/app/ranger/ranger.nix # My ranger file manager config - ../../user/app/git/git.nix # My git config - ../../user/app/blender # My blender config - ../../user/app/keepass/keepass.nix # My password manager - (./. + "../../../user/app/browser"+("/"+userSettings.browser)+".nix") # My default browser selected from flake - ../../user/app/virtualization/virtualization.nix # Virtual machines - #../../user/app/flatpak/flatpak.nix # Flatpaks - ../../user/style/stylix.nix # Styling and themes for my apps - ../../user/hardware/bluetooth.nix # Bluetooth - ]; - - # TODO make nix path follow flakes - - nix.package = pkgs.nix; - nix.settings = { - substituters = [ - "https://cache.nixos.org" - "https://hyprland.cachix.org" - "https://nix-community.cachix.org" - ]; - trusted-public-keys = [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - ]; - }; - - home.stateVersion = "22.11"; # Please read the comment before changing. - - home.packages = (with pkgs; [ - # Core - zsh - alacritty - brave - qutebrowser - git - syncthing - - # Office - nextcloud-client - (pkgs-stable.libreoffice-fresh) - geary - mate.atril - openboard - xournalpp - adwaita-icon-theme - shared-mime-info - glib - newsflash - foliate - nautilus - gnome-calendar - seahorse - gnome-maps - openvpn - protonmail-bridge - texliveSmall - numbat - element-desktop - - openai-whisper-cpp - - wine64 - bottles - # The following requires 64-bit FL Studio (FL64) to be installed to a bottle - # With a bottle name of "FL Studio" - (pkgs.writeShellScriptBin "flstudio" '' - #!/bin/sh - if [ -z "$1" ] - then - bottles-cli run -b "FL Studio" -p FL64 - #flatpak run --command=bottles-cli com.usebottles.bottles run -b FL\ Studio -p FL64 - else - filepath=$(winepath --windows "$1") - echo \'"$filepath"\' - bottles-cli run -b "FL Studio" -p "FL64" --args \'"$filepath"\' - #flatpak run --command=bottles-cli com.usebottles.bottles run -b FL\ Studio -p FL64 -args "$filepath" - fi - '') - (pkgs.makeDesktopItem { - name = "flstudio"; - desktopName = "FL Studio 64"; - exec = "flstudio %U"; - terminal = false; - type = "Application"; - icon = "flstudio"; - mimeTypes = ["application/octet-stream"]; - }) - (stdenv.mkDerivation { - name = "flstudio-icon"; - # icon from https://www.reddit.com/r/MacOS/comments/jtmp7z/i_made_icons_for_discord_spotify_and_fl_studio_in/ - src = [ ../../user/pkgs/flstudio.png ]; - - unpackPhase = '' - for srcFile in $src; do - # Copy file into build dir - cp $srcFile ./ - done - ''; - - installPhase = '' - mkdir -p $out $out/share $out/share/pixmaps - ls $src - ls - cp $src $out/share/pixmaps/flstudio.png - ''; - }) - - # Media - gimp - krita - pinta - inkscape - godot_4 - vlc - mpv - ncmpcpp - mpc - yt-dlp_git - blender-hip - freecad - libresprite - (pkgs.appimageTools.wrapType2 { - name = "Cura"; - pname = "Cura"; - version = "5.9.0"; - src = fetchurl { - url = "https://github.com/Ultimaker/Cura/releases/download/5.9.0/UltiMaker-Cura-5.9.0-linux-X64.AppImage"; - hash = "sha256-STtVeM4Zs+PVSRO3cI0LxnjRDhOxSlttZF+2RIXnAp4="; - }; - extraPkgs = pkgs: with pkgs; []; - }) - (pkgs.makeDesktopItem { - name = "Cura"; - desktopName = "Cura"; - exec = "env QT_QPA_PLATFORM=xcb Cura %i"; - terminal = false; - type = "Application"; - }) - (pkgs-stable.curaengine_stable) - openscad - (stdenv.mkDerivation { - name = "cura-slicer"; - version = "0.0.7"; - src = fetchFromGitHub { - owner = "Spiritdude"; - repo = "Cura-CLI-Wrapper"; - rev = "ff076db33cfefb770e1824461a6336288f9459c7"; - sha256 = "sha256-BkvdlqUqoTYEJpCCT3Utq+ZBU7g45JZFJjGhFEXPXi4="; - }; - phases = "installPhase"; - installPhase = '' - mkdir -p $out $out/bin $out/share $out/share/cura-slicer - cp $src/cura-slicer $out/bin - cp $src/settings/fdmprinter.def.json $out/share/cura-slicer - cp $src/settings/base.ini $out/share/cura-slicer - sed -i 's+#!/usr/bin/perl+#! /usr/bin/env nix-shell\n#! nix-shell -i perl -p perl538 perl538Packages.JSON+g' $out/bin/cura-slicer - sed -i 's+/usr/share+/home/${userSettings.username}/.nix-profile/share+g' $out/bin/cura-slicer - ''; - propagatedBuildInputs = with pkgs-stable; [ - curaengine_stable - ]; - }) - obs-studio - ffmpeg - (pkgs.writeScriptBin "kdenlive-accel" '' - #!/bin/sh - DRI_PRIME=0 kdenlive "$1" - '') - movit - mediainfo - libmediainfo - audio-recorder - cheese - #ardour - #rosegarden - tenacity - - # Various dev packages - remmina - sshfs - texinfo - libffi zlib - nodePackages.ungit - ventoy - kdenlive - ]); - - services.syncthing.enable = true; - services.nextcloud-client = { - enable = true; - startInBackground = true; - }; - - services.mpd = rec { - enable = true; - musicDirectory = config.xdg.userDirs.music+"/Songs"; - playlistDirectory = config.xdg.userDirs.music+"/Playlists"; - dbFile = musicDirectory+"/mpd.db"; - extraConfig = '' - audio_output { - type "pipewire" - name "PipeWire Sound Server" - } - ''; - }; - - programs.ncmpcpp.bindings = [ - { key = "j"; command = "scroll_down"; } - { key = "k"; command = "scroll_up"; } - { key = "J"; command = [ "select_item" "scroll_down" ]; } - { key = "K"; command = [ "select_item" "scroll_up" ]; } - ]; - - xdg.enable = true; - xdg.userDirs = { - enable = true; - createDirectories = true; - music = "${config.home.homeDirectory}/Media/Music"; - videos = "${config.home.homeDirectory}/Media/Videos"; - pictures = "${config.home.homeDirectory}/Media/Pictures"; - templates = "${config.home.homeDirectory}/Templates"; - download = "${config.home.homeDirectory}/Downloads"; - documents = "${config.home.homeDirectory}/Documents"; - desktop = null; - publicShare = null; - extraConfig = { - XDG_DOTFILES_DIR = "${config.home.homeDirectory}/.dotfiles"; - XDG_ARCHIVE_DIR = "${config.home.homeDirectory}/Archive"; - XDG_PROJECTS_DIR = "${config.home.homeDirectory}/Projects"; - XDG_CLOUD_DIR = "${config.home.homeDirectory}/Drive"; - XDG_BOOK_DIR = "${config.home.homeDirectory}/Media/Books"; - XDG_VM_DIR = "${config.home.homeDirectory}/Machines"; - XDG_NOTES_DIR = "${config.home.homeDirectory}/Notes"; - }; - }; - xdg.mime.enable = true; - xdg.mimeApps.enable = true; - xdg.mimeApps.associations.added = { - # TODO fix mime associations, most of them are totally broken :( - "application/octet-stream" = "flstudio.desktop;"; - }; - - home.sessionVariables = { - EDITOR = userSettings.editor; - SPAWNEDITOR = userSettings.spawnEditor; - TERM = userSettings.term; - BROWSER = userSettings.browser; - }; - - news.display = "silent"; - - gtk.iconTheme = { - package = pkgs.papirus-icon-theme; - name = if (config.stylix.polarity == "dark") then "Papirus-Dark" else "Papirus-Light"; - }; - - services.pasystray.enable = true; - services.pasystray.extraOptions = [ "--no-notify" ]; - -} diff --git a/profiles/worklab/README.org b/profiles/worklab/README.org deleted file mode 100644 index b1c5ff7..0000000 --- a/profiles/worklab/README.org +++ /dev/null @@ -1,3 +0,0 @@ -#+title: Worklab Template - -This is literally just my homelab configuration, but setup to work with the ssh keys on my work computer. Used for small servers at work. diff --git a/profiles/worklab/configuration.nix b/profiles/worklab/configuration.nix deleted file mode 100644 index 91b5179..0000000 --- a/profiles/worklab/configuration.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ userSettings, ... }: - -{ - imports = [ ../homelab/base.nix - ( import ../../system/security/sshd.nix { - authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDBW6X3nd54sLK5UOvkyxBZ0dC57+xXKsAkr6XyP3k64gsFNahIYZGyZ+E9DdGIP1SZPDkwlcnGfFTPo/dPq5QjxtBmAOd/q4hIb5mqojNfOwqZQVwHjzLYSiGBaMVe4XAGCoNxTwXTimVU8wtyvlmBJzuOLmxZq9tRBpN3g+PT5HT1S9mrrQ4l5Y+2CNTwfga6/+/H1g4hpYG6H9qdIWOrel1hWvGUH3A1d/5mJIx3GkOAl7WBReQNbwlTm/8mkIcNBMtp3JQg5yuTQ6dLGwMOspMB5sGSCnaDx6CrelQglRihxkunW9ktA2MYaIn3l5fNwaHilW63d0sb9Y/Rr/bFKybmGYVY4PR9+tQg4D4YqofkSfRKmB98dtxUZg4yduXjxCYrhDTDseCjXACncItdD9TmxabaBQtWiWIGmX3bhx31SoctwdpS+mzbB5WVIVb/Fo/cOvPj6ugB5ZQf2uH+U5nsGVYsSsNGS1zVDybeILr1z2ne2AcaqwB5Z7iz/E0=" ]; - inherit userSettings; }) - ]; -} diff --git a/profiles/worklab/home.nix b/profiles/worklab/home.nix deleted file mode 100644 index 96bcc74..0000000 --- a/profiles/worklab/home.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ ... }: - -{ - imports = [ ../homelab/home.nix ]; -} diff --git a/profiles/wsl/README.org b/profiles/wsl/README.org deleted file mode 100644 index cce6367..0000000 --- a/profiles/wsl/README.org +++ /dev/null @@ -1,7 +0,0 @@ -#+title: Trying to use a computer without Linux is hard - -WARNING: I haven't used Windows for a very long time, so this profile is unmaintained. - -This is my =WSL= profile, which is a minimal installation I use on Windows underneath WSL. This (obviously) requires [[https://github.com/nix-community/NixOS-WSL][NixOS-WSL]] to be installed. I essentially just use this for Emacs, some useful CLI apps I can't live without (namely ranger), and LibreOffice, which runs strangely slow on Windows (hmm, I wonder why? It's not like Microsoft has a competing office suite or anything...) - -The [[./nixos-wsl][nixos-wsl]] directory is taken directly from [[https://github.com/nix-community/NixOS-WSL][NixOS-WSL]] and merely patched slightly to allow it to run with the unstable channel of nixpkgs. diff --git a/profiles/wsl/configuration.nix b/profiles/wsl/configuration.nix deleted file mode 100644 index f09bfea..0000000 --- a/profiles/wsl/configuration.nix +++ /dev/null @@ -1,110 +0,0 @@ -{ lib, pkgs, systemSettings, userSettings, ... }: - -with lib; -let - nixos-wsl = import ./nixos-wsl; -in -{ - imports = - [ nixos-wsl.nixosModules.wsl - ../../system/hardware/kernel.nix # Kernel config - ../../system/hardware/systemd.nix # systemd config - ../../system/hardware/time.nix # Network time sync - ../../system/hardware/opengl.nix - ../../system/hardware/printing.nix - ../../system/hardware/bluetooth.nix - ../../system/security/doas.nix - ../../system/security/gpg.nix - ../../system/security/blocklist.nix - ../../system/security/firewall.nix - ../../system/security/firejail.nix - ../../system/style/stylix.nix - ]; - - wsl = { - enable = true; - automountPath = "/mnt"; - defaultUser = userSettings.username; - startMenuLaunchers = true; - - # Enable native Docker support - # docker-native.enable = true; - - # Enable integration with Docker Desktop (needs to be installed) - # docker-desktop.enable = true; - - }; - - # Fix nix path - nix.nixPath = [ "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos" - "nixos-config=$HOME/dotfiles/system/configuration.nix" - "/nix/var/nix/profiles/per-user/root/channels" - ]; - - # Experimental features - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - - # Ensure nix flakes are enabled - nix.extraOptions = '' - experimental-features = nix-command flakes - ''; - - # I'm sorry Stallman-taichou - nixpkgs.config.allowUnfree = true; - - # Kernel modules - boot.kernelModules = [ "i2c-dev" "i2c-piix4" "cpufreq_powersave" ]; - - # Networking - networking.hostName = systemSettings.hostname; # Define your hostname. - - # Timezone and locale - time.timeZone = systemSettings.timezone; # time zone - i18n.defaultLocale = systemSettings.locale; - i18n.extraLocaleSettings = { - LC_ADDRESS = systemSettings.locale; - LC_IDENTIFICATION = systemSettings.locale; - LC_MEASUREMENT = systemSettings.locale; - LC_MONETARY = systemSettings.locale; - LC_NAME = systemSettings.locale; - LC_NUMERIC = systemSettings.locale; - LC_PAPER = systemSettings.locale; - LC_TELEPHONE = systemSettings.locale; - LC_TIME = systemSettings.locale; - }; - - # User account - users.users.${userSettings.username} = { - isNormalUser = true; - description = userSettings.name; - extraGroups = [ "networkmanager" "wheel" ]; - packages = with pkgs; []; - uid = 1000; - }; - - # System packages - environment.systemPackages = with pkgs; [ - vim - wget - zsh - git - home-manager - ]; - - # I use zsh btw - environment.shells = with pkgs; [ zsh ]; - users.defaultUserShell = pkgs.zsh; - programs.zsh.enable = true; - - xdg.portal = { - enable = true; - extraPortals = [ - pkgs.xdg-desktop-portal - pkgs.xdg-desktop-portal-gtk - ]; - }; - - # It is ok to leave this unchanged for compatibility purposes - system.stateVersion = "22.05"; - -} diff --git a/profiles/wsl/home.nix b/profiles/wsl/home.nix deleted file mode 100644 index 164b89f..0000000 --- a/profiles/wsl/home.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ config, pkgs, userSettings, ... }: - -{ - # Home Manager needs a bit of information about you and the paths it should - # manage. - home.username = userSettings.username; - home.homeDirectory = "/home/"+userSettings.username; - - programs.home-manager.enable = true; - - imports = [ - ../../user/shell/sh.nix # My zsh and bash config - ../../user/shell/cli-collection.nix # Useful CLI apps - ../../user/app/doom-emacs/doom.nix # My doom emacs config - ../../user/app/ranger/ranger.nix # My ranger file manager config - ../../user/app/git/git.nix # My git config - ../../user/style/stylix.nix # Styling and themes for my apps - ]; - - home.stateVersion = "22.11"; # Please read the comment before changing. - - home.packages = with pkgs; [ - # Core - zsh - git - syncthing - - # Office - libreoffice-fresh - - # Various dev packages - texinfo - libffi zlib - nodePackages.ungit - ]; - - services.syncthing.enable = true; - - xdg.enable = true; - xdg.userDirs = { - enable = true; - createDirectories = true; - music = "${config.home.homeDirectory}/Media/Music"; - videos = "${config.home.homeDirectory}/Media/Videos"; - pictures = "${config.home.homeDirectory}/Media/Pictures"; - templates = "${config.home.homeDirectory}/Templates"; - download = "${config.home.homeDirectory}/Downloads"; - documents = "${config.home.homeDirectory}/Documents"; - desktop = null; - publicShare = null; - extraConfig = { - XDG_DOTFILES_DIR = "${config.home.homeDirectory}/.dotfiles"; - XDG_ARCHIVE_DIR = "${config.home.homeDirectory}/Archive"; - XDG_ORG_DIR = "${config.home.homeDirectory}/Org"; - XDG_BOOK_DIR = "${config.home.homeDirectory}/Media/Books"; - }; - }; - xdg.mime.enable = true; - xdg.mimeApps.enable = true; - - home.sessionVariables = { - EDITOR = userSettings.editor; - }; - - news.display = "silent"; - -} diff --git a/profiles/wsl/nixos-wsl/LICENSE b/profiles/wsl/nixos-wsl/LICENSE deleted file mode 100755 index ef51da2..0000000 --- a/profiles/wsl/nixos-wsl/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [yyyy] [name of copyright owner] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/profiles/wsl/nixos-wsl/README.md b/profiles/wsl/nixos-wsl/README.md deleted file mode 100755 index b3a4ff9..0000000 --- a/profiles/wsl/nixos-wsl/README.md +++ /dev/null @@ -1,112 +0,0 @@ -

- NixOS on WSL
-
Matrix Chat - nixpkgs 22.05 - Downloads -

- -A minimal root filesystem for running NixOS on WSL. It can be used with -[DistroLauncher](https://github.com/microsoft/WSL-DistroLauncher) as -`install.tar.gz` or as input to `wsl --import --version 2`. - -## Quick start - -First, [download the latest release\'s installer](https://github.com/nix-community/NixOS-WSL/releases/latest). - -Then open up a Terminal, PowerShell or Command Prompt and run: - -```sh -wsl --import NixOS .\NixOS\ nixos-wsl-installer.tar.gz --version 2 -``` - -This sets up a new WSL distribution `NixOS` that is installed under -`.\NixOS`. `nixos-wsl-installer.tar.gz` is the path to the file you -downloaded earlier. You might need to change this path or change to the download directory first. - -You can now run NixOS: - -```sh -wsl -d NixOS -``` - -The installer will unpack the file system and subsequently start NixOS. -A few warnings about file systems and locales will pop up. You can -safely ignore them. After systemd has started, you should be greeted -with a bash prompt inside your fresh NixOS installation. - -If you want to make NixOS your default distribution, you can do so with - -```sh -wsl -s NixOS -``` - -## Building your own system tarball - -This requires access to a system that already has Nix installed. Please refer to the [Nix installation guide](https://nixos.org/guides/install-nix.html) if that\'s not the case. - -If you have a flakes-enabled Nix, you can use the following command to -build your own tarball instead of relying on a prebuilt one: - -```cmd -nix build github:nix-community/NixOS-WSL#nixosConfigurations.mysystem.config.system.build.installer -``` - -Or, if you want to build with local changes, run inside your checkout: - -```cmd -nix build .#nixosConfigurations.mysystem.config.system.build.installer -``` - -Without a flakes-enabled Nix, you can build a tarball using: - -```cmd -nix-build -A nixosConfigurations.mysystem.config.system.build.installer -``` - -The resulting installer tarball can then be found under -`./result/tarball/nixos-wsl-installer.tar.gz`. - -You can also build a rootfs tarball without wrapping it in the installer -by replacing `installer` with `tarball` in the above commands. The -rootfs tarball can then be found under -`./result/tarball/nixos-wsl-x86_64-linux.tar.gz`. - -## Design - -Getting NixOS to run under WSL requires some workarounds: - -### systemd support - -WSL comes with its own (non-substitutable) init system while NixOS uses -systemd. Simply starting systemd later on does not work out of the box, -because systemd as system instance refuses to start if it is not PID 1. -This unfortunate combination is resolved in two ways: - -- the user\'s default shell is replaced by a wrapper script that acts - is init system and then drops to the actual shell -- systemd is started in its own PID namespace; therefore, it is PID 1. - The shell wrapper (see above) enters the systemd namespace before - dropping to the shell. - -### Installer - -Usually WSL distributions ship as a tarball of their root file system. -These tarballs however, can not contain any hard-links due to the way -they are unpacked by WSL, resulting in an \"Unspecified Error\". By -default some Nix-derivations will contain hard-links when they are -built. This results in system tarballs that can not be imported into -WSL. To circumvent this problem, the rootfs tarball is wrapped in that -of a minimal distribution (the installer), that is packaged without any -hard-links. When the installer system is started for the first time, it -overwrites itself with the contents of the rootfs tarball. - -## License - -Apache License, Version 2.0. See `LICENSE` or for details. - -## Further links - -- [DistroLauncher](https://github.com/microsoft/WSL-DistroLauncher) -- [A quick way into a systemd \"bottle\" for WSL](https://github.com/arkane-systems/genie) -- [NixOS in Windows Store for Windows Subsystem for Linux](https://github.com/NixOS/nixpkgs/issues/30391) -- [wsl2-hacks](https://github.com/shayne/wsl2-hacks) diff --git a/profiles/wsl/nixos-wsl/default.nix b/profiles/wsl/nixos-wsl/default.nix deleted file mode 100755 index 873ece4..0000000 --- a/profiles/wsl/nixos-wsl/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -(import - ( - let - lock = builtins.fromJSON (builtins.readFile ./flake.lock); - in - fetchTarball { - url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; - sha256 = lock.nodes.flake-compat.locked.narHash; - } - ) - { - src = ./.; - }).defaultNix diff --git a/profiles/wsl/nixos-wsl/flake.lock b/profiles/wsl/nixos-wsl/flake.lock deleted file mode 100755 index ba649f6..0000000 --- a/profiles/wsl/nixos-wsl/flake.lock +++ /dev/null @@ -1,59 +0,0 @@ -{ - "nodes": { - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1650374568, - "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "b4a34015c698c7793d592d66adbab377907a2be8", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-utils": { - "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1660318005, - "narHash": "sha256-g9WCa9lVUmOV6dYRbEPjv/TLOR5hamjeCcKExVGS3OQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "5c211b47aeadcc178c5320afd4e74c7eed5c389f", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "ref": "nixos-22.05", - "type": "indirect" - } - }, - "root": { - "inputs": { - "flake-compat": "flake-compat", - "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/profiles/wsl/nixos-wsl/flake.nix b/profiles/wsl/nixos-wsl/flake.nix deleted file mode 100755 index 8a62b47..0000000 --- a/profiles/wsl/nixos-wsl/flake.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ - description = "NixOS WSL"; - - inputs = { - nixpkgs.url = "nixpkgs/nixos-22.05"; - flake-utils.url = "github:numtide/flake-utils"; - - flake-compat = { - url = "github:edolstra/flake-compat"; - flake = false; - }; - }; - - outputs = { self, nixpkgs, flake-utils, ... }: - { - - nixosModules.wsl = { - imports = [ - ./modules/build-tarball.nix - ./modules/docker-desktop.nix - ./modules/docker-native.nix - ./modules/installer.nix - ./modules/interop.nix - ./modules/wsl-distro.nix - ]; - }; - - nixosConfigurations.mysystem = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - ./configuration.nix - ]; - }; - - } // - flake-utils.lib.eachSystem - (with flake-utils.lib.system; [ "x86_64-linux" "aarch64-linux" ]) - (system: - let - pkgs = import nixpkgs { inherit system; }; - in - { - checks.check-format = pkgs.runCommand "check-format" - { - buildInputs = with pkgs; [ nixpkgs-fmt ]; - } '' - nixpkgs-fmt --check ${./.} - mkdir $out # success - ''; - - devShell = pkgs.mkShell { - nativeBuildInputs = with pkgs; [ nixpkgs-fmt ]; - }; - } - ); -} diff --git a/profiles/wsl/nixos-wsl/modules/build-tarball.nix b/profiles/wsl/nixos-wsl/modules/build-tarball.nix deleted file mode 100755 index feba78d..0000000 --- a/profiles/wsl/nixos-wsl/modules/build-tarball.nix +++ /dev/null @@ -1,97 +0,0 @@ -{ config, pkgs, lib, ... }: -with builtins; with lib; -let - pkgs2storeContents = l: map (x: { object = x; symlink = "none"; }) l; - - nixpkgs = lib.cleanSource pkgs.path; - - channelSources = pkgs.runCommand "nixos-${config.system.nixos.version}" - { preferLocalBuild = true; } - '' - mkdir -p $out - cp -prd ${nixpkgs.outPath} $out/nixos - chmod -R u+w $out/nixos - if [ ! -e $out/nixos/nixpkgs ]; then - ln -s . $out/nixos/nixpkgs - fi - echo -n ${toString config.system.nixos.revision} > $out/nixos/.git-revision - echo -n ${toString config.system.nixos.versionSuffix} > $out/nixos/.version-suffix - echo ${toString config.system.nixos.versionSuffix} | sed -e s/pre// > $out/nixos/svn-revision - ''; - - preparer = pkgs.writeShellScriptBin "wsl-prepare" '' - set -e - - mkdir -m 0755 ./bin ./etc - mkdir -m 1777 ./tmp - - # WSL requires a /bin/sh - only temporary, NixOS's activate will overwrite - ln -s ${config.users.users.root.shell} ./bin/sh - - # WSL also requires a /bin/mount, otherwise the host fs isn't accessible - ln -s /nix/var/nix/profiles/system/sw/bin/mount ./bin/mount - - # Set system profile - system=${config.system.build.toplevel} - ./$system/sw/bin/nix-store --store `pwd` --load-db < ./nix-path-registration - rm ./nix-path-registration - ./$system/sw/bin/nix-env --store `pwd` -p ./nix/var/nix/profiles/system --set $system - - # Set channel - mkdir -p ./nix/var/nix/profiles/per-user/root - ./$system/sw/bin/nix-env --store `pwd` -p ./nix/var/nix/profiles/per-user/root/channels --set ${channelSources} - mkdir -m 0700 -p ./root/.nix-defexpr - ln -s /nix/var/nix/profiles/per-user/root/channels ./root/.nix-defexpr/channels - - # It's now a NixOS! - touch ./etc/NIXOS - - # Write wsl.conf so that it is present when NixOS is started for the first time - cp ${config.environment.etc."wsl.conf".source} ./etc/wsl.conf - - ${lib.optionalString config.wsl.tarball.includeConfig '' - # Copy the system configuration - mkdir -p ./etc/nixos/nixos-wsl - cp -R ${lib.cleanSource ../.}/. ./etc/nixos/nixos-wsl - mv ./etc/nixos/nixos-wsl/configuration.nix ./etc/nixos/configuration.nix - # Patch the import path to avoid having a flake.nix in /etc/nixos - sed -i 's|import \./default\.nix|import \./nixos-wsl|' ./etc/nixos/configuration.nix - ''} - ''; - -in -{ - - options.wsl.tarball = { - includeConfig = mkOption { - type = types.bool; - default = true; - description = "Whether or not to copy the system configuration into the tarball"; - }; - }; - - - config = mkIf config.wsl.enable { - # These options make no sense without the wsl-distro module anyway - - system.build.tarball = pkgs.callPackage "${nixpkgs}/nixos/lib/make-system-tarball.nix" { - # No contents, structure will be added by prepare script - contents = [ ]; - - fileName = "nixos-wsl-${pkgs.hostPlatform.system}"; - - storeContents = pkgs2storeContents [ - config.system.build.toplevel - channelSources - preparer - ]; - - extraCommands = "${preparer}/bin/wsl-prepare"; - - # Use gzip - compressCommand = "gzip"; - compressionExtension = ".gz"; - }; - - }; -} diff --git a/profiles/wsl/nixos-wsl/modules/docker-desktop.nix b/profiles/wsl/nixos-wsl/modules/docker-desktop.nix deleted file mode 100755 index ade86e9..0000000 --- a/profiles/wsl/nixos-wsl/modules/docker-desktop.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ config, lib, pkgs, ... }: -with builtins; with lib; { - - imports = [ - (mkRenamedOptionModule [ "wsl" "docker" ] [ "wsl" "docker-desktop" ]) - ]; - - options.wsl.docker-desktop = with types; { - enable = mkEnableOption "Docker Desktop integration"; - }; - - config = - let - cfg = config.wsl.docker-desktop; - in - mkIf (config.wsl.enable && cfg.enable) { - - environment.systemPackages = with pkgs; [ - docker - docker-compose - ]; - - systemd.services.docker-desktop-proxy = { - description = "Docker Desktop proxy"; - script = '' - ${config.wsl.automountPath}/wsl/docker-desktop/docker-desktop-user-distro proxy --docker-desktop-root ${config.wsl.automountPath}/wsl/docker-desktop - ''; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - Restart = "on-failure"; - RestartSec = "30s"; - }; - }; - - users.groups.docker.members = [ - config.wsl.defaultUser - ]; - - }; - -} diff --git a/profiles/wsl/nixos-wsl/modules/docker-native.nix b/profiles/wsl/nixos-wsl/modules/docker-native.nix deleted file mode 100755 index 35d10ef..0000000 --- a/profiles/wsl/nixos-wsl/modules/docker-native.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ config, lib, pkgs, ... }: -with builtins; with lib; { - - options.wsl.docker-native = with types; { - enable = mkEnableOption "Native Docker integration in NixOS."; - - addToDockerGroup = mkOption { - type = bool; - default = config.security.sudo.wheelNeedsPassword; - description = '' - Wether to add the default user to the docker group. - - This is not recommended, if you have a password, because it essentially permits unauthenticated root access. - ''; - }; - }; - - config = - let - cfg = config.wsl.docker-native; - in - mkIf (config.wsl.enable && cfg.enable) { - nixpkgs.overlays = [ - (self: super: { - docker = super.docker.override { iptables = pkgs.iptables-legacy; }; - }) - ]; - - environment.systemPackages = with pkgs; [ - docker - docker-compose - ]; - - virtualisation.docker.enable = true; - - users.groups.docker.members = lib.mkIf cfg.addToDockerGroup [ - config.wsl.defaultUser - ]; - }; -} diff --git a/profiles/wsl/nixos-wsl/modules/installer.nix b/profiles/wsl/nixos-wsl/modules/installer.nix deleted file mode 100755 index 45d191a..0000000 --- a/profiles/wsl/nixos-wsl/modules/installer.nix +++ /dev/null @@ -1,73 +0,0 @@ -{ config, lib, pkgs, ... }: -with builtins; with lib; { - - config = mkIf config.wsl.enable ( - let - mkTarball = pkgs.callPackage "${lib.cleanSource pkgs.path}/nixos/lib/make-system-tarball.nix"; - - pkgs2storeContents = map (x: { object = x; symlink = "none"; }); - - rootfs = let tarball = config.system.build.tarball; in "${tarball}/tarball/${tarball.fileName}.tar${tarball.extension}"; - - installer = pkgs.writeScript "installer.sh" '' - #!${pkgs.busybox}/bin/sh - BASEPATH=$PATH - export PATH=$BASEPATH:${pkgs.busybox}/bin # Add busybox to path - - set -e - cd / - - echo "Unpacking root file system..." - ${pkgs.pv}/bin/pv ${rootfs} | tar xz - - echo "Activating nix configuration..." - /nix/var/nix/profiles/system/activate - PATH=$BASEPATH:/run/current-system/sw/bin # Use packages from target system - - echo "Cleaning up installer files..." - nix-collect-garbage - rm /nix-path-registration - - echo "Optimizing store..." - nix-store --optimize - - # Don't package the shell here, it's contained in the rootfs - exec ${builtins.unsafeDiscardStringContext config.users.users.root.shell} "$@" - ''; - - # Set installer.sh as the root shell - passwd = pkgs.writeText "passwd" '' - root:x:0:0:System administrator:/root:${installer} - ''; - in - { - - system.build.installer = mkTarball { - fileName = "nixos-wsl-installer"; - compressCommand = "gzip"; - compressionExtension = ".gz"; - extraArgs = "--hard-dereference"; - - storeContents = with pkgs; pkgs2storeContents [ - installer - ]; - - contents = [ - { source = config.environment.etc."wsl.conf".source; target = "/etc/wsl.conf"; } - { source = config.environment.etc."fstab".source; target = "/etc/fstab"; } - { source = passwd; target = "/etc/passwd"; } - { source = "${pkgs.busybox}/bin/busybox"; target = "/bin/sh"; } - { source = "${pkgs.busybox}/bin/busybox"; target = "/bin/mount"; } - ]; - - extraCommands = pkgs.writeShellScript "prepare" '' - export PATH=$PATH:${pkgs.coreutils}/bin - mkdir -p bin - ln -s /init bin/wslpath - ''; - }; - - } - ); - -} diff --git a/profiles/wsl/nixos-wsl/modules/interop.nix b/profiles/wsl/nixos-wsl/modules/interop.nix deleted file mode 100755 index b7babfb..0000000 --- a/profiles/wsl/nixos-wsl/modules/interop.nix +++ /dev/null @@ -1,88 +0,0 @@ -{ lib, pkgs, config, ... }: - -with builtins; with lib; -{ - imports = [ - (mkRenamedOptionModule [ "wsl" "compatibility" "interopPreserveArgvZero" ] [ "wsl" "interop" "preserveArgvZero" ]) - ]; - - options.wsl.interop = with types; { - register = mkOption { - type = bool; - default = false; # Use the existing registration by default - description = "Explicitly register the binfmt_misc handler for Windows executables"; - }; - - includePath = mkOption { - type = bool; - default = true; - description = "Include Windows PATH in WSL PATH"; - }; - - preserveArgvZero = mkOption { - type = nullOr bool; - default = null; - description = '' - Register binfmt interpreter for Windows executables with 'preserves argv[0]' flag. - - Default (null): autodetect, at some performance cost. - To avoid the performance cost, set this to true for WSL Preview 0.58 and up, - or to false for any older versions, including pre-Microsoft Store and Windows 10. - ''; - }; - }; - - config = - let - cfg = config.wsl.interop; - in - mkIf config.wsl.enable { - - boot.binfmt.registrations = mkIf cfg.register { - WSLInterop = - let - compat = cfg.preserveArgvZero; - - # WSL Preview 0.58 and up registers the /init binfmt interp for Windows executable - # with the "preserve argv[0]" flag, so if you run `./foo.exe`, the interp gets invoked - # as `/init foo.exe ./foo.exe`. - # argv[0] --^ ^-- actual path - # - # Older versions expect to be called without the argv[0] bit, simply as `/init ./foo.exe`. - # - # We detect that by running `/init /known-not-existing-path.exe` and checking the exit code: - # the new style interp expects at least two arguments, so exits with exit code 1, - # presumably meaning "parsing error"; the old style interp attempts to actually run - # the executable, fails to find it, and exits with 255. - compatWrapper = pkgs.writeShellScript "nixos-wsl-binfmt-hack" '' - /init /nixos-wsl-does-not-exist.exe - [ $? -eq 255 ] && shift - exec /init "$@" - ''; - - # use the autodetect hack if unset, otherwise call /init directly - interpreter = if compat == null then compatWrapper else "/init"; - - # enable for the wrapper and autodetect hack - preserveArgvZero = if compat == false then false else true; - in - { - magicOrExtension = "MZ"; - fixBinary = true; - wrapInterpreterInShell = false; - inherit interpreter preserveArgvZero; - }; - }; - - # Include Windows %PATH% in Linux $PATH. - environment.extraInit = mkIf cfg.includePath ''PATH="$PATH:$WSLPATH"''; - - warnings = - let - registrations = config.boot.binfmt.registrations; - in - optional (!(registrations ? WSLInterop) && (length (attrNames config.boot.binfmt.registrations)) != 0) "Having any binfmt registrations without re-registering WSLInterop (wsl.interop.register) will break running .exe files from WSL2"; - }; - - -} diff --git a/profiles/wsl/nixos-wsl/modules/wsl-distro.nix b/profiles/wsl/nixos-wsl/modules/wsl-distro.nix deleted file mode 100755 index 6b95c3d..0000000 --- a/profiles/wsl/nixos-wsl/modules/wsl-distro.nix +++ /dev/null @@ -1,139 +0,0 @@ -{ lib, pkgs, config, ... }: - -with builtins; with lib; -{ - options.wsl = with types; - let - coercedToStr = coercedTo (oneOf [ bool path int ]) (toString) str; - in - { - enable = mkEnableOption "support for running NixOS as a WSL distribution"; - automountPath = mkOption { - type = str; - default = "/mnt"; - description = "The path where windows drives are mounted (e.g. /mnt/c)"; - }; - automountOptions = mkOption { - type = str; - default = "metadata,uid=1000,gid=100"; - description = "Options to use when mounting windows drives"; - }; - defaultUser = mkOption { - type = str; - default = "nixos"; - description = "The name of the default user"; - }; - startMenuLaunchers = mkEnableOption "shortcuts for GUI applications in the windows start menu"; - wslConf = mkOption { - type = attrsOf (attrsOf (oneOf [ str int bool ])); - description = "Entries that are added to /etc/wsl.conf"; - }; - }; - - config = - let - cfg = config.wsl; - syschdemd = import ../syschdemd.nix { inherit lib pkgs config; inherit (cfg) automountPath defaultUser; defaultUserHome = config.users.users.${cfg.defaultUser}.home; }; - in - mkIf cfg.enable { - - wsl.wslConf = { - automount = { - enabled = true; - mountFsTab = true; - root = "${cfg.automountPath}/"; - options = cfg.automountOptions; - }; - network = { - generateResolvConf = mkDefault true; - generateHosts = mkDefault true; - }; - }; - - # WSL is closer to a container than anything else - boot.isContainer = true; - - environment.noXlibs = lib.mkForce false; # override xlibs not being installed (due to isContainer) to enable the use of GUI apps - hardware.opengl.enable = true; # Enable GPU acceleration - - environment = { - - etc = { - "wsl.conf".text = generators.toINI { } cfg.wslConf; - - # DNS settings are managed by WSL - hosts.enable = !config.wsl.wslConf.network.generateHosts; - "resolv.conf".enable = !config.wsl.wslConf.network.generateResolvConf; - }; - - systemPackages = [ - (pkgs.runCommand "wslpath" { } '' - mkdir -p $out/bin - ln -s /init $out/bin/wslpath - '') - ]; - }; - - networking.dhcpcd.enable = false; - - users.users.${cfg.defaultUser} = { - isNormalUser = true; - uid = 1000; - extraGroups = [ "wheel" ]; # Allow the default user to use sudo - }; - - users.users.root = { - shell = "${syschdemd}/bin/syschdemd"; - # Otherwise WSL fails to login as root with "initgroups failed 5" - extraGroups = [ "root" ]; - }; - - security.sudo = { - extraConfig = '' - Defaults env_keep+=INSIDE_NAMESPACE - ''; - wheelNeedsPassword = mkDefault false; # The default user will not have a password by default - }; - - system.activationScripts = { - copy-launchers = mkIf cfg.startMenuLaunchers ( - stringAfter [ ] '' - for x in applications icons; do - echo "Copying /usr/share/$x" - mkdir -p /usr/share/$x - ${pkgs.rsync}/bin/rsync -ar --delete $systemConfig/sw/share/$x/. /usr/share/$x - done - '' - ); - populateBin = stringAfter [ ] '' - echo "setting up /bin..." - ln -sf /init /bin/wslpath - ln -sf ${pkgs.bashInteractive}/bin/bash /bin/sh - ln -sf ${pkgs.util-linux}/bin/mount /bin/mount - ''; - }; - - systemd = { - # Disable systemd units that don't make sense on WSL - services = { - "serial-getty@ttyS0".enable = false; - "serial-getty@hvc0".enable = false; - "getty@tty1".enable = false; - "autovt@".enable = false; - firewall.enable = false; - systemd-resolved.enable = false; - systemd-udevd.enable = false; - }; - - tmpfiles.rules = [ - # Don't remove the X11 socket - "d /tmp/.X11-unix 1777 root root" - ]; - - # Don't allow emergency mode, because we don't have a console. - enableEmergencyMode = false; - }; - - warnings = (optional (config.systemd.services.systemd-resolved.enable && config.wsl.wslConf.network.generateResolvConf) "systemd-resolved is enabled, but resolv.conf is managed by WSL"); - }; -} diff --git a/profiles/wsl/nixos-wsl/syschdemd.nix b/profiles/wsl/nixos-wsl/syschdemd.nix deleted file mode 100755 index 406dd86..0000000 --- a/profiles/wsl/nixos-wsl/syschdemd.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ lib -, pkgs -, config -, automountPath -, defaultUser -, defaultUserHome ? "/home/${defaultUser}" -, ... -}: - -pkgs.substituteAll { - name = "syschdemd"; - src = ./syschdemd.sh; - dir = "bin"; - isExecutable = true; - - buildInputs = with pkgs; [ daemonize ]; - - inherit defaultUser defaultUserHome; - inherit (pkgs) daemonize; - inherit (config.security) wrapperDir; - fsPackagesPath = lib.makeBinPath config.system.fsPackages; - - systemdWrapper = pkgs.writeShellScript "systemd-wrapper.sh" '' - mount -t binfmt_misc binfmt_misc /proc/sys/fs/binfmt_misc || true - mount --make-rshared ${automountPath} - exec systemd - ''; -} diff --git a/profiles/wsl/nixos-wsl/syschdemd.sh b/profiles/wsl/nixos-wsl/syschdemd.sh deleted file mode 100755 index 6223cda..0000000 --- a/profiles/wsl/nixos-wsl/syschdemd.sh +++ /dev/null @@ -1,78 +0,0 @@ -#! @shell@ - -set -e - -sw="/nix/var/nix/profiles/system/sw/bin" -systemPath=$(${sw}/readlink -f /nix/var/nix/profiles/system) - -function start_systemd { - echo "Starting systemd..." >&2 - - PATH=/run/current-system/systemd/lib/systemd:@fsPackagesPath@ \ - LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive \ - @daemonize@/bin/daemonize /run/current-system/sw/bin/unshare -fp --mount-proc @systemdWrapper@ - - # Wait until systemd has been started to prevent a race condition from occuring - while ! $sw/pgrep -xf systemd | $sw/tail -n1 >/run/systemd.pid; do - $sw/sleep 1s - done - - # Wait for systemd to start services - status=1 - while [[ $status -gt 0 ]]; do - $sw/sleep 1 - status=0 - $sw/nsenter -t $(/dev/null || - status=$? - done -} - -# Needs root to work -if [[ $EUID -ne 0 ]]; then - echo "[ERROR] Requires root! :( Make sure the WSL default user is set to root" >&2 - exit 1 -fi - -if [ ! -e "/run/current-system" ]; then - LANG="C.UTF-8" /nix/var/nix/profiles/system/activate -fi - -if [ ! -e "/run/systemd.pid" ]; then - start_systemd -fi - -userShell=$($sw/getent passwd @defaultUser@ | $sw/cut -d: -f7) -if [[ $# -gt 0 ]]; then - # wsl seems to prefix with "-c" - shift - cmd="$@" -else - cmd="$userShell" -fi - -# Pass external environment but filter variables specific to root user. -exportCmd="$(export -p | $sw/grep -vE ' (HOME|LOGNAME|SHELL|USER)='); export WSLPATH=\"$PATH\"; export INSIDE_NAMESPACE=true" - -if [[ -z "${INSIDE_NAMESPACE:-}" ]]; then - - # Test whether systemd is still alive if it was started previously - if ! [ -d "/proc/$( (Default: True) - ''; -} diff --git a/user/app/emacs/default.nix b/user/app/emacs/default.nix deleted file mode 100644 index b330d83..0000000 --- a/user/app/emacs/default.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ config, pkgs, ... }: -{ - home.packages = with pkgs; [ - (pkgs.emacsWithPackagesFromUsePackage { - config = ./init.el; - package = pkgs.emacs-pgtk; - alwaysEnsure = false; - extraEmacsPackages = epkgs: with epkgs; [ - org-modern olivetti - command-log-mode - vertico corfu hotfuzz orderless - evil evil-collection evil-snipe evil-owl evil-vimish-fold - dashboard doom-themes doom-modeline - nerd-icons nerd-icons-dired nerd-icons-corfu - nerd-icons-ibuffer nerd-icons-completion - yasnippet shackle - projectile treemacs treemacs-projectile - treemacs-evil treemacs-nerd-icons - treesit-grammars.with-all-grammars - git-timemachine wgrep - magit magit-file-icons magit-todos - undo-fu undo-fu-session - org-roam org-node org-node-fakeroam - vterm vterm-toggle sudo-edit - direnv - gdscript-mode - nix-mode - python python-mode - lsp-mode flycheck lsp-ui lsp-treemacs - (epkgs.callPackage ./ultra-scroll.nix {}) - ]; - }) - fira-code - nerd-fonts.fira-code - nil - ]; - home.file.".config/emacs/init.el".source = ./init.el; - home.file.".config/emacs/themes/doom-stylix-theme.el".source = config.lib.stylix.colors { - template = builtins.readFile ./doom-stylix-theme.el.mustache; - extension = ".el"; - }; -} diff --git a/user/app/emacs/ultra-scroll.nix b/user/app/emacs/ultra-scroll.nix deleted file mode 100644 index 113351d..0000000 --- a/user/app/emacs/ultra-scroll.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ lib, fetchurl, trivialBuild }: - -trivialBuild { - pname = "ultra-scroll"; - version = "0.2.0"; - - src = fetchGit { - url = "https://github.com/jdtsmith/ultra-scroll.git"; - rev = "64ad7be02e11317576498dabb15c92cf31e2c04c"; - ref = "main"; - }; - - meta = with lib; { - description = "scroll Emacs like lightning"; - homepage = "https://github.com/jdtsmith/ultra-scroll"; - license = licenses.gpl3; - platforms = platforms.all; - }; -} diff --git a/user/app/flatpak/flatpak.nix b/user/app/flatpak/flatpak.nix deleted file mode 100644 index 45d9238..0000000 --- a/user/app/flatpak/flatpak.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = [ pkgs.flatpak ]; - home.sessionVariables = { - XDG_DATA_DIRS = "$XDG_DATA_DIRS:/usr/share:/var/lib/flatpak/exports/share:$HOME/.local/share/flatpak/exports/share"; # lets flatpak work - }; - - #services.flatpak.enable = true; - #services.flatpak.packages = [ { appId = "com.kde.kdenlive"; origin = "flathub"; } ]; - #services.flatpak.update.onActivation = true; -} diff --git a/user/app/git/git.nix b/user/app/git/git.nix deleted file mode 100644 index 20600cd..0000000 --- a/user/app/git/git.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, pkgs, userSettings, ... }: - -{ - home.packages = [ pkgs.git ]; - programs.git.enable = true; - programs.git.userName = userSettings.name; - programs.git.userEmail = userSettings.email; - programs.git.extraConfig = { - init.defaultBranch = "main"; - safe.directory = [ ("/home/" + userSettings.username + "/.dotfiles") - ("/home/" + userSettings.username + "/.dotfiles/.git") - ("/home/" + userSettings.username + "/.cache/nix/tarball-cache") ]; - }; -} diff --git a/user/app/godot/default.nix b/user/app/godot/default.nix deleted file mode 100644 index 06cf97d..0000000 --- a/user/app/godot/default.nix +++ /dev/null @@ -1,186 +0,0 @@ -{ config, pkgs, userSettings, ... }: -{ - home.packages = with pkgs; [ - godot_4 - ]; - - # ~/.config/godot must be owned by another user in order for this to work - # does not need to be recursively owned, however - - # TODO fix other colors - home.file.".config/godot/editor_settings-4.3.tres".text = '' - [gd_resource type="EditorSettings" format=3] - - [resource] - interface/editor/separate_distraction_mode = true - interface/theme/preset = "Custom" - interface/theme/spacing_preset = "Custom" - interface/theme/base_color = Color(''+config.lib.stylix.colors.base00-dec-r+'',''+config.lib.stylix.colors.base00-dec-g+'', ''+config.lib.stylix.colors.base00-dec-b+'', 0.8) - - interface/theme/accent_color = Color(''+config.lib.stylix.colors.base08-dec-r+'',''+config.lib.stylix.colors.base08-dec-g+'', ''+config.lib.stylix.colors.base08-dec-b+'', 1) - - interface/theme/contrast = 0.3 - interface/theme/icon_saturation = 1.55 - interface/theme/relationship_line_opacity = 0.35 - interface/theme/border_size = 1 - interface/theme/corner_radius = 6 - interface/theme/additional_spacing = 1 - interface/touchscreen/enable_pan_and_scale_gestures = true - interface/touchscreen/scale_gizmo_handles = 2.0 - interface/multi_window/enable = false - interface/multi_window/restore_windows_on_load = false - filesystem/external_programs/raster_image_editor = "krita" - filesystem/external_programs/vector_image_editor = "inkscape" - filesystem/external_programs/3d_model_editor = "blender" - filesystem/external_programs/terminal_emulator = "''+userSettings.term+''" - - filesystem/directories/default_project_path = "/home/''+userSettings.username+''/Projects" - - text_editor/theme/highlighting/symbol_color = Color(0.67, 0.79, 1, 1) - text_editor/theme/highlighting/keyword_color = Color(1, 0.44, 0.52, 1) - text_editor/theme/highlighting/control_flow_keyword_color = Color(1, 0.55, 0.8, 1) - text_editor/theme/highlighting/base_type_color = Color(0.26, 1, 0.76, 1) - text_editor/theme/highlighting/engine_type_color = Color(0.56, 1, 0.86, 1) - text_editor/theme/highlighting/user_type_color = Color(0.78, 1, 0.93, 1) - text_editor/theme/highlighting/comment_color = Color(0.764706, 0.769608, 0.77451, 0.5) - text_editor/theme/highlighting/doc_comment_color = Color(0.6, 0.7, 0.8, 0.8) - text_editor/theme/highlighting/string_color = Color(1, 0.93, 0.63, 1) - text_editor/theme/highlighting/background_color = Color(0.0323529, 0.0431373, 0.0539216, 1) - text_editor/theme/highlighting/completion_background_color = Color(0.0588235, 0.0784314, 0.0980392, 1) - text_editor/theme/highlighting/completion_selected_color = Color(1, 1, 1, 0.07) - text_editor/theme/highlighting/completion_existing_color = Color(1, 1, 1, 0.14) - text_editor/theme/highlighting/completion_font_color = Color(0.764706, 0.769608, 0.77451, 1) - text_editor/theme/highlighting/text_color = Color(0.764706, 0.769608, 0.77451, 1) - text_editor/theme/highlighting/line_number_color = Color(0.764706, 0.769608, 0.77451, 0.5) - text_editor/theme/highlighting/safe_line_number_color = Color(0.764706, 0.923529, 0.77451, 0.75) - text_editor/theme/highlighting/caret_color = Color(1, 1, 1, 1) - text_editor/theme/highlighting/selection_color = Color(0.941176, 0.443137, 0.470588, 0.4) - text_editor/theme/highlighting/brace_mismatch_color = Color(1, 0.47, 0.42, 1) - text_editor/theme/highlighting/current_line_color = Color(1, 1, 1, 0.07) - text_editor/theme/highlighting/line_length_guideline_color = Color(0.0588235, 0.0784314, 0.0980392, 1) - text_editor/theme/highlighting/word_highlighted_color = Color(1, 1, 1, 0.07) - text_editor/theme/highlighting/number_color = Color(0.63, 1, 0.88, 1) - text_editor/theme/highlighting/function_color = Color(0.34, 0.7, 1, 1) - text_editor/theme/highlighting/member_variable_color = Color(0.736, 0.88, 1, 1) - text_editor/theme/highlighting/mark_color = Color(1, 0.47, 0.42, 0.3) - text_editor/theme/highlighting/breakpoint_color = Color(1, 0.47, 0.42, 1) - text_editor/theme/highlighting/code_folding_color = Color(1, 1, 1, 0.27) - text_editor/theme/highlighting/search_result_color = Color(1, 1, 1, 0.07) - text_editor/appearance/whitespace/draw_tabs = false - text_editor/behavior/indent/type = 1 - text_editor/behavior/indent/size = 2 - text_editor/behavior/files/trim_trailing_whitespace_on_save = true - editors/panning/2d_editor_panning_scheme = 1 - editors/panning/sub_editors_panning_scheme = 1 - editors/panning/simple_panning = true - project_manager/directory_naming_convention = 3 - asset_library/available_urls = { - "godotengine.org (Official)": "https://godotengine.org/asset-library/api" - } - asset_library/use_threads = true - export/android/java_sdk_path = "" - export/android/android_sdk_path = "" - export/android/debug_keystore = "/home/emmet/.local/share/godot/keystores/debug.keystore" - export/android/debug_keystore_user = "androiddebugkey" - export/android/debug_keystore_pass = "android" - export/android/force_system_user = false - export/android/shutdown_adb_on_exit = true - export/android/one_click_deploy_clear_previous_install = false - export/android/use_wifi_for_remote_debug = false - export/android/wifi_remote_debug_host = "localhost" - export/macos/rcodesign = "" - export/web/http_host = "localhost" - export/web/http_port = 8060 - export/web/use_tls = false - export/web/tls_key = "" - export/web/tls_certificate = "" - export/windows/rcedit = "" - export/windows/osslsigncode = "" - export/windows/wine = "/home/emmet/.nix-profile/bin/wine64" - _default_feature_profile = "" - interface/editors/show_scene_tree_root_selection = true - interface/editors/derive_script_globals_by_name = true - docks/scene_tree/ask_before_deleting_related_animation_tracks = true - _use_favorites_root_selection = false - filesystem/file_server/port = 6010 - filesystem/file_server/password = "" - editors/3d/manipulator_gizmo_size = 80 - editors/3d/manipulator_gizmo_opacity = 0.9 - editors/3d/navigation/show_viewport_rotation_gizmo = true - editors/3d/navigation/show_viewport_navigation_gizmo = false - text_editor/behavior/files/auto_reload_and_parse_scripts_on_save = true - text_editor/behavior/files/open_dominant_script_on_scene_change = false - text_editor/external/use_external_editor = false - text_editor/external/exec_path = "" - text_editor/script_list/script_temperature_enabled = true - text_editor/script_list/script_temperature_history_size = 15 - text_editor/script_list/group_help_pages = true - text_editor/script_list/sort_scripts_by = 0 - text_editor/script_list/list_script_names_as = 0 - text_editor/external/exec_flags = "{file}" - version_control/username = "" - version_control/ssh_public_key_path = "" - version_control/ssh_private_key_path = "" - editors/bone_mapper/handle_colors/unset = Color(0.3, 0.3, 0.3, 1) - editors/bone_mapper/handle_colors/set = Color(0.1, 0.6, 0.25, 1) - editors/bone_mapper/handle_colors/missing = Color(0.8, 0.2, 0.8, 1) - editors/bone_mapper/handle_colors/error = Color(0.8, 0.2, 0.2, 1) - network/debug_adapter/remote_port = 6006 - network/debug_adapter/request_timeout = 1000 - network/debug_adapter/sync_breakpoints = false - editors/3d_gizmos/gizmo_settings/path3d_tilt_disk_size = 0.8 - editors/3d_gizmos/gizmo_colors/path_tilt = Color(1, 1, 0.4, 0.9) - editors/3d_gizmos/gizmo_colors/skeleton = Color(1, 0.8, 0.4, 1) - editors/3d_gizmos/gizmo_colors/selected_bone = Color(0.8, 0.3, 0, 1) - editors/3d_gizmos/gizmo_settings/bone_axis_length = 0.1 - editors/3d_gizmos/gizmo_settings/bone_shape = 1 - editors/3d_gizmos/gizmo_colors/csg = Color(0, 0.4, 1, 0.15) - editors/grid_map/editor_side = 1 - editors/grid_map/palette_min_width = 230 - editors/grid_map/preview_size = 64 - export/ssh/ssh = "" - export/ssh/scp = "" - network/language_server/remote_host = "127.0.0.1" - network/language_server/remote_port = 6005 - network/language_server/enable_smart_resolve = true - network/language_server/show_native_symbols_in_editor = false - network/language_server/use_thread = false - network/language_server/poll_limit_usec = 100000 - text_editor/theme/highlighting/gdscript/function_definition_color = Color(0.4, 0.9, 1, 1) - text_editor/theme/highlighting/gdscript/global_function_color = Color(0.64, 0.64, 0.96, 1) - text_editor/theme/highlighting/gdscript/node_path_color = Color(0.72, 0.77, 0.49, 1) - text_editor/theme/highlighting/gdscript/node_reference_color = Color(0.39, 0.76, 0.35, 1) - text_editor/theme/highlighting/gdscript/annotation_color = Color(1, 0.7, 0.45, 1) - text_editor/theme/highlighting/gdscript/string_name_color = Color(1, 0.76, 0.65, 1) - text_editor/theme/highlighting/comment_markers/critical_color = Color(0.77, 0.35, 0.35, 1) - text_editor/theme/highlighting/comment_markers/warning_color = Color(0.72, 0.61, 0.48, 1) - text_editor/theme/highlighting/comment_markers/notice_color = Color(0.56, 0.67, 0.51, 1) - text_editor/theme/highlighting/comment_markers/critical_list = "ALERT,ATTENTION,CAUTION,CRITICAL,DANGER,SECURITY" - text_editor/theme/highlighting/comment_markers/warning_list = "BUG,DEPRECATED,FIXME,HACK,TASK,TBD,TODO,WARNING" - text_editor/theme/highlighting/comment_markers/notice_list = "INFO,NOTE,NOTICE,TEST,TESTING" - editors/3d_gizmos/gizmo_colors/camera = Color(0.8, 0.4, 0.8, 1) - editors/3d_gizmos/gizmo_colors/stream_player_3d = Color(0.4, 0.8, 1, 1) - editors/3d_gizmos/gizmo_colors/occluder = Color(0.8, 0.5, 1, 1) - editors/3d_gizmos/gizmo_colors/visibility_notifier = Color(0.8, 0.5, 0.7, 1) - editors/3d_gizmos/gizmo_colors/particles = Color(0.8, 0.7, 0.4, 1) - editors/3d_gizmos/gizmo_colors/particle_attractor = Color(1, 0.7, 0.5, 1) - editors/3d_gizmos/gizmo_colors/particle_collision = Color(0.5, 0.7, 1, 1) - editors/3d_gizmos/gizmo_colors/reflection_probe = Color(0.6, 1, 0.5, 1) - editors/3d_gizmos/gizmo_colors/decal = Color(0.6, 0.5, 1, 1) - editors/3d_gizmos/gizmo_colors/voxel_gi = Color(0.5, 1, 0.6, 1) - editors/3d_gizmos/gizmo_colors/lightmap_lines = Color(0.5, 0.6, 1, 1) - editors/3d_gizmos/gizmo_colors/lightprobe_lines = Color(0.5, 0.6, 1, 1) - editors/3d_gizmos/gizmo_colors/joint_body_a = Color(0.6, 0.8, 1, 1) - editors/3d_gizmos/gizmo_colors/joint_body_b = Color(0.6, 0.9, 1, 1) - editors/3d_gizmos/gizmo_colors/fog_volume = Color(0.5, 0.7, 1, 1) - text_editor/help/sort_functions_alphabetically = true - metadata/script_setup_templates_dictionary = { - "AnimatedSprite2D": "0NodeDefault", - "Area2D": "0NodeDefault", - "CanvasLayer": "0NodeDefault", - "Node": "0NodeDefault", - "Node2D": "0NodeDefault" - } - metadata/export_template_download_directory = "/home/emmet/.cache/godot" - ''; -} diff --git a/user/app/keepass/keepass.nix b/user/app/keepass/keepass.nix deleted file mode 100644 index 89358c6..0000000 --- a/user/app/keepass/keepass.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, pkgs, ... }: - -{ -# nixpkgs.overlays = [ -# (self: super: -# { -# keepmenu = super.keepmenu.overrideAttrs (oldAttrs: rec { -# pname = "keepmenu"; -# version = "1.3.1"; -# src = super.python3Packages.fetchPypi { -# inherit pname version; -# sha256 = "sha256-AGuJY7IirzIjcu/nY9CzeOqU1liwcRijYLi8hGN/pRg="; -# }; -# }); -# } -# ) -# ]; - - home.packages = with pkgs; [ - keepassxc - keepmenu - ]; -} diff --git a/user/app/ranger/ranger.nix b/user/app/ranger/ranger.nix deleted file mode 100644 index 52c4476..0000000 --- a/user/app/ranger/ranger.nix +++ /dev/null @@ -1,48 +0,0 @@ -{ config, pkgs, ... }: -let myCbxScript = '' - #!/bin/sh - - # this lets my copy and paste images and/or plaintext of files directly out of ranger - if [ "$#" -le "2" ]; then - if [ "$1" = "copy" -o "$1" = "cut" ]; then - if [ "$XDG_SESSION_TYPE" = "wayland" ]; then - wl-copy < $2; - else - # xclip -selection clipboard -t $(file -b --mime-type $2) -i $2; - xclip -selection clipboard -t image/png -i $2; - fi - fi - fi - ''; -in -{ - imports = [ ../../pkgs/ranger.nix ]; - - home.packages = with pkgs; [ - ranger - ripdrag - highlight - (pkgs.writeScriptBin "cbx" myCbxScript) - ]; - xdg.mimeApps.associations.added = { - "inode/directory" = "ranger.desktop"; - }; - home.file.".config/ranger/rc.conf".source = ./rc.conf; - home.file.".config/ranger/rifle.conf".source = ./rifle.conf; - home.file.".config/ranger/scope.sh" = { - source = ./scope.sh; - executable = true; - }; - home.file.".config/ranger/commands.py" = { - source = ./commands.py; - executable = true; - }; - home.file.".config/ranger/commands_full.py" = { - source = ./commands_full.py; - executable = true; - }; - home.file.".config/ranger/colorschemes/hail.py" = { - source = ./colorschemes/hail.py; - executable = true; - }; -} diff --git a/user/app/terminal/alacritty.nix b/user/app/terminal/alacritty.nix deleted file mode 100644 index 8dd7a18..0000000 --- a/user/app/terminal/alacritty.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs, lib, ... }: - -{ - home.packages = with pkgs; [ - alacritty - ]; - programs.alacritty.enable = true; - programs.alacritty.settings = { - window.opacity = lib.mkForce 0.85; - }; -} diff --git a/user/app/terminal/kitty.nix b/user/app/terminal/kitty.nix deleted file mode 100644 index a2d0b51..0000000 --- a/user/app/terminal/kitty.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs, lib, ... }: - -{ - home.packages = with pkgs; [ - kitty - ]; - programs.kitty.enable = true; - programs.kitty.settings = { - background_opacity = lib.mkForce "0.85"; - modify_font = "cell_width 90%"; - }; -} diff --git a/user/app/virtualization/virtualization.nix b/user/app/virtualization/virtualization.nix deleted file mode 100644 index f1fb7bd..0000000 --- a/user/app/virtualization/virtualization.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, pkgs, ... }: - -{ - # Various packages related to virtualization, compatability and sandboxing - home.packages = with pkgs; [ - # Virtual Machines and wine - libvirt - virt-manager - qemu - uefi-run - lxc - swtpm - bottles - - # Filesystems - dosfstools - ]; - - home.file.".config/libvirt/qemu.conf".text = '' -nvram = ["/run/libvirt/nix-ovmf/OVMF_CODE.fd:/run/libvirt/nix-ovmf/OVMF_VARS.fd"] - ''; - -} diff --git a/user/hardware/bluetooth.nix b/user/hardware/bluetooth.nix deleted file mode 100644 index a6b6cd8..0000000 --- a/user/hardware/bluetooth.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - blueman - ]; - services = { - blueman-applet.enable = true; - }; -} diff --git a/user/pkgs/pokemon-colorscripts.nix b/user/pkgs/pokemon-colorscripts.nix deleted file mode 100644 index ed6f4c3..0000000 --- a/user/pkgs/pokemon-colorscripts.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ lib, stdenv, fetchFromGitLab, pkgs, ... }: - -let name = "pokemon-colorscripts"; - version = "unstable"; -in - stdenv.mkDerivation { - inherit name version; - - src = fetchFromGitLab { - owner = "phoneybadger"; - repo = name; - rev = "0483c85b93362637bdd0632056ff986c07f30868"; - sha256 = "sha256-rj0qKYHCu9SyNsj1PZn1g7arjcHuIDGHwubZg/yJt7A="; - }; - - installPhase = '' - mkdir -p $out $out/bin $out/opt - cp -rf $src/colorscripts $out/opt - cp $src/pokemon-colorscripts.py $out/opt - cp $src/pokemon.json $out/opt - ln -s $out/opt/pokemon-colorscripts.py $out/bin/pokemon-colorscripts - ''; - - meta = { - homepage = "https://github.com/Admiral-Fish/PokeFinder"; - description = "CLI utility to print out images of pokemon to terminal"; - license = lib.licenses.mit; - maintainers = []; - }; - } diff --git a/user/pkgs/ranger.nix b/user/pkgs/ranger.nix deleted file mode 100644 index feade74..0000000 --- a/user/pkgs/ranger.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ lib, pkgs, ... }: - -{ - nixpkgs.overlays = [ - (self: super: - { - ranger = super.ranger.overrideAttrs (oldAttrs: rec { - preConfigure = '' - substituteInPlace ranger/__init__.py \ - --replace "DEFAULT_PAGER = 'less'" "DEFAULT_PAGER = '${lib.getBin pkgs.bat}/bin/bat'" - - # give image previews out of the box when building with w3m - substituteInPlace ranger/config/rc.conf \ - --replace "set preview_images false" "set preview_images true" - - # adds this patch: https://github.com/ranger/ranger/pull/1758 - # fixes a bug for kitty users that use image previews - substituteInPlace ranger/ext/img_display.py \ - --replace "self.image_id -= 1" "self.image_id = max(0, self.image_id - 1)" - - # fixes the .desktop file - substituteInPlace doc/ranger.desktop \ - --replace "Icon=utilities-terminal" "Icon=user-desktop" - substituteInPlace doc/ranger.desktop \ - --replace "Terminal=true" "Terminal=false" - substituteInPlace doc/ranger.desktop \ - --replace "Exec=ranger" "Exec=kitty -e ranger %U" - ''; - }); - } - ) - ]; - home.packages = with pkgs; [ - poppler_utils - librsvg - ffmpegthumbnailer - ]; - -} diff --git a/user/shell/cli-collection.nix b/user/shell/cli-collection.nix deleted file mode 100644 index 1934fd5..0000000 --- a/user/shell/cli-collection.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ pkgs, ... }: -{ - # Collection of useful CLI apps - home.packages = with pkgs; [ - # Command Line - disfetch lolcat cowsay - starfetch - killall - libnotify - timer - brightnessctl - gnugrep - bat eza fd bottom ripgrep - rsync - unzip - w3m - pandoc - hwinfo - pciutils - numbat - (pkgs.callPackage ../pkgs/pokemon-colorscripts.nix { }) - (pkgs.writeShellScriptBin "airplane-mode" '' - #!/bin/sh - connectivity="$(nmcli n connectivity)" - if [ "$connectivity" == "full" ] - then - nmcli n off - else - nmcli n on - fi - '') - vim neovim - ]; -} diff --git a/user/shell/sh.nix b/user/shell/sh.nix deleted file mode 100644 index 435718f..0000000 --- a/user/shell/sh.nix +++ /dev/null @@ -1,52 +0,0 @@ -{ pkgs, ... }: -let - - # My shell aliases - myAliases = { - ls = "eza --icons -l -T -L=1"; - cat = "bat"; - htop = "btm"; - fd = "fd -Lu"; - w3m = "w3m -no-cookie -v"; - neofetch = "disfetch"; - fetch = "disfetch"; - gitfetch = "onefetch"; - "," = "comma"; - ",," = "comma-shell"; - }; -in -{ - programs.zsh = { - enable = true; - enableAutosuggestions = true; - syntaxHighlighting.enable = true; - enableCompletion = true; - shellAliases = myAliases; - initExtra = '' - PROMPT=" ◉ %U%F{magenta}%n%f%u@%U%F{blue}%m%f%u:%F{yellow}%~%f - %F{green}→%f " - RPROMPT="%F{red}▂%f%F{yellow}▄%f%F{green}▆%f%F{cyan}█%f%F{blue}▆%f%F{magenta}▄%f%F{white}▂%f" - [ $TERM = "dumb" ] && unsetopt zle && PS1='$ ' - bindkey '^P' history-beginning-search-backward - bindkey '^N' history-beginning-search-forward - ''; - }; - - programs.bash = { - enable = true; - enableCompletion = true; - shellAliases = myAliases; - }; - - home.packages = with pkgs; [ - disfetch lolcat cowsay onefetch - gnugrep gnused - bat eza bottom fd bc - direnv nix-direnv - ]; - - programs.direnv.enable = true; - programs.direnv.enableZshIntegration = true; - programs.direnv.nix-direnv.enable = true; - programs.direnv.nix-direnv.package = pkgs.nix-direnv-flakes; -} diff --git a/user/style/stylix.nix b/user/style/stylix.nix deleted file mode 100644 index 8559fa9..0000000 --- a/user/style/stylix.nix +++ /dev/null @@ -1,118 +0,0 @@ -{ config, lib, pkgs, inputs, userSettings, ... }: - -let - theme = import (./. + "../../../themes"+("/"+userSettings.theme)); -in -{ - imports = [ inputs.stylix.homeManagerModules.stylix ]; - - home.file.".currenttheme".text = userSettings.theme; - stylix.autoEnable = false; - stylix.polarity = theme.polarity; - stylix.image = pkgs.fetchurl { - url = theme.backgroundUrl; - sha256 = theme.backgroundSha256; - }; - stylix.base16Scheme = theme; - - stylix.fonts = { - monospace = { - name = userSettings.font; - package = userSettings.fontPkg; - }; - serif = { - name = userSettings.font; - package = userSettings.fontPkg; - }; - sansSerif = { - name = userSettings.font; - package = userSettings.fontPkg; - }; - emoji = { - name = "Noto Emoji"; - package = pkgs.noto-fonts-monochrome-emoji; - }; - sizes = { - terminal = 18; - applications = 12; - popups = 12; - desktop = 12; - }; - }; - - stylix.targets.alacritty.enable = false; - programs.alacritty.settings = { - colors = { - # TODO revisit these color mappings - # these are just the default provided from stylix - # but declared directly due to alacritty v3.0 breakage - primary.background = "#"+config.lib.stylix.colors.base00; - primary.foreground = "#"+config.lib.stylix.colors.base07; - cursor.text = "#"+config.lib.stylix.colors.base00; - cursor.cursor = "#"+config.lib.stylix.colors.base07; - normal.black = "#"+config.lib.stylix.colors.base00; - normal.red = "#"+config.lib.stylix.colors.base08; - normal.green = "#"+config.lib.stylix.colors.base0B; - normal.yellow = "#"+config.lib.stylix.colors.base0A; - normal.blue = "#"+config.lib.stylix.colors.base0D; - normal.magenta = "#"+config.lib.stylix.colors.base0E; - normal.cyan = "#"+config.lib.stylix.colors.base0B; - normal.white = "#"+config.lib.stylix.colors.base05; - bright.black = "#"+config.lib.stylix.colors.base03; - bright.red = "#"+config.lib.stylix.colors.base09; - bright.green = "#"+config.lib.stylix.colors.base01; - bright.yellow = "#"+config.lib.stylix.colors.base02; - bright.blue = "#"+config.lib.stylix.colors.base04; - bright.magenta = "#"+config.lib.stylix.colors.base06; - bright.cyan = "#"+config.lib.stylix.colors.base0F; - bright.white = "#"+config.lib.stylix.colors.base07; - }; - font.size = config.stylix.fonts.sizes.terminal; - font.normal.family = userSettings.font; - }; - stylix.targets.kitty.enable = true; - stylix.targets.gtk.enable = true; - stylix.targets.rofi.enable = if (userSettings.wmType == "x11") then true else false; - stylix.targets.feh.enable = if (userSettings.wmType == "x11") then true else false; - programs.feh.enable = true; - home.file.".fehbg-stylix".text = '' - #!/bin/sh - feh --no-fehbg --bg-fill ''+config.stylix.image+''; - ''; - home.file.".fehbg-stylix".executable = true; - home.file = { - ".config/qt5ct/colors/oomox-current.conf".source = config.lib.stylix.colors { - template = builtins.readFile ./oomox-current.conf.mustache; - extension = ".conf"; - }; - ".config/Trolltech.conf".source = config.lib.stylix.colors { - template = builtins.readFile ./Trolltech.conf.mustache; - extension = ".conf"; - }; - ".config/kdeglobals".source = config.lib.stylix.colors { - template = builtins.readFile ./Trolltech.conf.mustache; - extension = ""; - }; - ".config/qt5ct/qt5ct.conf".text = pkgs.lib.mkBefore (builtins.readFile ./qt5ct.conf); - }; - home.file.".config/hypr/hyprpaper.conf".text = '' - preload = ''+config.stylix.image+'' - - wallpaper = ,''+config.stylix.image+'' - - ''; - home.packages = with pkgs; [ - libsForQt5.qt5ct pkgs.libsForQt5.breeze-qt5 libsForQt5.breeze-icons pkgs.noto-fonts-monochrome-emoji - ]; - qt = { - enable = true; - style.package = pkgs.libsForQt5.breeze-qt5; - style.name = "breeze-dark"; - platformTheme = "kde"; - }; - fonts.fontconfig.defaultFonts = { - monospace = [ userSettings.font ]; - sansSerif = [ userSettings.font ]; - serif = [ userSettings.font ]; - }; -} diff --git a/user/wm/hyprland/hyprland.nix b/user/wm/hyprland/hyprland.nix deleted file mode 100644 index 78bdf5a..0000000 --- a/user/wm/hyprland/hyprland.nix +++ /dev/null @@ -1,1309 +0,0 @@ -{ inputs, config, lib, pkgs, userSettings, systemSettings, ... }: let - pkgs-hyprland = inputs.hyprland.inputs.nixpkgs.legacyPackages.${pkgs.stdenv.hostPlatform.system}; -in -{ - imports = [ - ../../app/terminal/alacritty.nix - ../../app/terminal/kitty.nix - (import ../../app/dmenu-scripts/networkmanager-dmenu.nix { - dmenu_command = "fuzzel -d"; inherit config lib pkgs; - }) - ../input/nihongo.nix - ] ++ - (if ((systemSettings.profile == "personal") || (systemSettings.profile == "work")) then - [ (import ./hyprprofiles/hyprprofiles.nix { - dmenuCmd = "fuzzel -d"; inherit config lib pkgs; })] - else - []); - - home.sessionVariables = { - - }; - - gtk.cursorTheme = { - package = pkgs.quintom-cursor-theme; - name = if (config.stylix.polarity == "light") then "Quintom_Ink" else "Quintom_Snow"; - size = 36; - }; - - wayland.windowManager.hyprland = { - enable = true; - package = inputs.hyprland.packages.${pkgs.system}.hyprland; - plugins = [ ]; - settings = { }; - extraConfig = '' - exec-once = dbus-update-activation-environment --systemd DISPLAY XAUTHORITY WAYLAND_DISPLAY XDG_SESSION_DESKTOP=Hyprland XDG_CURRENT_DESKTOP=Hyprland XDG_SESSION_TYPE=wayland - exec-once = hyprctl setcursor '' + config.gtk.cursorTheme.name + " " + builtins.toString config.gtk.cursorTheme.size + '' - - exec-once = sleep 10 && nextcloud - exec-once = iio-hyprland - env = NIXOS_OZONE_WL,1 - env = XDG_CURRENT_DESKTOP,Hyprland - env = XDG_SESSION_DESKTOP,Hyprland - env = XDG_SESSION_TYPE,wayland - env = WLR_DRM_DEVICES,/dev/dri/card2:/dev/dri/card1 - env = GDK_BACKEND,wayland,x11,* - env = QT_QPA_PLATFORM,wayland;xcb - env = QT_QPA_PLATFORMTHEME,qt5ct - env = QT_AUTO_SCREEN_SCALE_FACTOR,1 - env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1 - env = CLUTTER_BACKEND,wayland - env = GDK_PIXBUF_MODULE_FILE,${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache - env = GSK_RENDERER,gl - - exec-once = hyprprofile Default - - exec-once = ydotoold - exec-once = sleep 10 && caffeine - #exec-once = STEAM_FRAME_FORCE_CLOSE=1 steam -silent - exec-once = nm-applet - exec-once = blueman-applet - exec-once = GOMAXPROCS=1 syncthing --no-browser - exec-once = protonmail-bridge --noninteractive - #exec-once = waybar - exec-once = eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2 - exec-once = hyprland-monitor-attached ~/.local/bin/eww-reload-bars.sh - exec-once = emacs --daemon - - exec-once = hypridle - exec-once = sleep 5 && libinput-gestures - exec-once = obs-notification-mute-daemon - - exec-once = hyprpaper - - bezier = wind, 0.05, 0.9, 0.1, 1.05 - bezier = winIn, 0.1, 1.1, 0.1, 1.0 - bezier = winOut, 0.3, -0.3, 0, 1 - bezier = liner, 1, 1, 1, 1 - bezier = linear, 0.0, 0.0, 1.0, 1.0 - - animations { - enabled = yes - animation = windowsIn, 1, 6, winIn, popin - animation = windowsOut, 1, 5, winOut, popin - animation = windowsMove, 1, 5, wind, slide - animation = border, 1, 10, default - animation = borderangle, 1, 100, linear, loop - animation = fade, 1, 10, default - animation = workspaces, 1, 5, wind - animation = windows, 1, 6, wind, slide - animation = specialWorkspace, 1, 6, default, slidefadevert -50% - } - - general { - layout = master - border_size = 5 - col.active_border = 0xff'' + config.lib.stylix.colors.base08 + " " + ''0xff'' + config.lib.stylix.colors.base09 + " " + ''0xff'' + config.lib.stylix.colors.base0A + " " + ''0xff'' + config.lib.stylix.colors.base0B + " " + ''0xff'' + config.lib.stylix.colors.base0C + " " + ''0xff'' + config.lib.stylix.colors.base0D + " " + ''0xff'' + config.lib.stylix.colors.base0E + " " + ''0xff'' + config.lib.stylix.colors.base0F + " " + ''270deg - - col.inactive_border = 0xaa'' + config.lib.stylix.colors.base02 + '' - - resize_on_border = true - gaps_in = 7 - gaps_out = 7 - } - - cursor { - no_warps = false - inactive_timeout = 30 - } - - bind=SUPER,code:9,exec,nwggrid-wrapper - bind=SUPER,code:66,exec,nwggrid-wrapper - bind=SUPER,SPACE,fullscreen,1 - bind=SUPERSHIFT,F,fullscreen,0 - bind=SUPER,Y,workspaceopt,allfloat - bind=ALT,TAB,cyclenext - bind=ALT,TAB,bringactivetotop - bind=ALTSHIFT,TAB,cyclenext,prev - bind=ALTSHIFT,TAB,bringactivetotop - bind=SUPER,V,exec,wl-copy $(wl-paste | tr '\n' ' ') - bind=SUPERSHIFT,T,exec,screenshot-ocr - bind=CTRLALT,Delete,exec,hyprctl kill - bind=SUPERSHIFT,K,exec,hyprctl kill - - bind=,code:172,exec,mpc toggle - bind=,code:208,exec,mpc toggle - bind=,code:209,exec,mpc toggle - bind=,code:174,exec,mpc stop - bind=,code:171,exec,mpc next - bind=,code:173,exec,mpc prev - - bind = SUPER,R,pass,^(com\.obsproject\.Studio)$ - bind = SUPERSHIFT,R,pass,^(com\.obsproject\.Studio)$ - - bind=SUPER,RETURN,exec,'' + userSettings.term + '' - - bind=SUPERSHIFT,RETURN,exec,'' + userSettings.term + " " + '' --class float_term - - bind=SUPER,A,exec,'' + userSettings.spawnEditor + '' - - bind=SUPER,S,exec,'' + userSettings.spawnBrowser + '' - - bind=SUPERCTRL,S,exec,container-open # qutebrowser only - - bind=SUPERCTRL,P,pin - - bind=SUPER,code:47,exec,fuzzel - bind=SUPER,X,exec,fnottctl dismiss - bind=SUPERSHIFT,X,exec,fnottctl dismiss all - bind=SUPER,Q,killactive - bind=SUPERSHIFT,Q,exit - bindm=SUPER,mouse:272,movewindow - bindm=SUPER,mouse:273,resizewindow - bind=SUPER,T,togglefloating - bind=,code:148,exec,''+ userSettings.term + " "+''-e numbat - - bind=,code:107,exec,grim -g "$(slurp)" - bind=SHIFT,code:107,exec,grim -g "$(slurp -o)" - bind=SUPER,code:107,exec,grim - bind=CTRL,code:107,exec,grim -g "$(slurp)" - | wl-copy - bind=SHIFTCTRL,code:107,exec,grim -g "$(slurp -o)" - | wl-copy - bind=SUPERCTRL,code:107,exec,grim - | wl-copy - - bind=,code:122,exec,swayosd-client --output-volume lower - bind=,code:123,exec,swayosd-client --output-volume raise - bind=,code:121,exec,swayosd-client --output-volume mute-toggle - bind=,code:256,exec,swayosd-client --output-volume mute-toggle - bind=SHIFT,code:122,exec,swayosd-client --output-volume lower - bind=SHIFT,code:123,exec,swayosd-client --output-volume raise - bind=,code:232,exec,swayosd-client --brightness lower - bind=,code:233,exec,swayosd-client --brightness raise - bind=,code:237,exec,brightnessctl --device='asus::kbd_backlight' set 1- - bind=,code:238,exec,brightnessctl --device='asus::kbd_backlight' set +1 - bind=,code:255,exec,airplane-mode - bind=SUPER,C,exec,wl-copy $(hyprpicker) - - bind=SUPERSHIFT,S,exec,systemctl suspend - bindl=,switch:on:Lid Switch,exec,loginctl lock-session - bind=SUPERCTRL,L,exec,loginctl lock-session - - bind=SUPER,H,movefocus,l - bind=SUPER,J,movefocus,d - bind=SUPER,K,movefocus,u - bind=SUPER,L,movefocus,r - - bind=SUPERSHIFT,H,movewindow,l - bind=SUPERSHIFT,J,movewindow,d - bind=SUPERSHIFT,K,movewindow,u - bind=SUPERSHIFT,L,movewindow,r - - bind=SUPER,1,focusworkspaceoncurrentmonitor,1 - bind=SUPER,2,focusworkspaceoncurrentmonitor,2 - bind=SUPER,3,focusworkspaceoncurrentmonitor,3 - bind=SUPER,4,focusworkspaceoncurrentmonitor,4 - bind=SUPER,5,focusworkspaceoncurrentmonitor,5 - bind=SUPER,6,focusworkspaceoncurrentmonitor,6 - bind=SUPER,7,focusworkspaceoncurrentmonitor,7 - bind=SUPER,8,focusworkspaceoncurrentmonitor,8 - bind=SUPER,9,focusworkspaceoncurrentmonitor,9 - - bind=SUPERCTRL,right,exec,hyprnome - bind=SUPERCTRL,left,exec,hyprnome --previous - bind=SUPERSHIFT,right,exec,hyprnome --move - bind=SUPERSHIFT,left,exec,hyprnome --previous --move - - bind=SUPERSHIFT,1,movetoworkspace,1 - bind=SUPERSHIFT,2,movetoworkspace,2 - bind=SUPERSHIFT,3,movetoworkspace,3 - bind=SUPERSHIFT,4,movetoworkspace,4 - bind=SUPERSHIFT,5,movetoworkspace,5 - bind=SUPERSHIFT,6,movetoworkspace,6 - bind=SUPERSHIFT,7,movetoworkspace,7 - bind=SUPERSHIFT,8,movetoworkspace,8 - bind=SUPERSHIFT,9,movetoworkspace,9 - - exec-once = alacritty --class scratch_term - exec-once = kitty --class scratch_ranger -e ranger - exec-once = alacritty --class scratch_numbat -e numbat - exec-once = kitty --class scratch_music -e ncmpcpp - exec-once = alacritty --class scratch_btm -e btm - exec-once = element-desktop - exec-once = pavucontrol - - bind=SUPER,Z,exec,if hyprctl clients | grep scratch_term; then echo "scratch_term respawn not needed"; else alacritty --class scratch_term; fi - bind=SUPER,Z,togglespecialworkspace,scratch_term - bind=SUPER,F,exec,if hyprctl clients | grep scratch_ranger; then echo "scratch_ranger respawn not needed"; else kitty --class scratch_ranger -e ranger; fi - bind=SUPER,F,togglespecialworkspace,scratch_ranger - bind=SUPER,N,exec,if hyprctl clients | grep scratch_numbat; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_numbat -e numbat; fi - bind=SUPER,N,togglespecialworkspace,scratch_numbat - bind=SUPER,M,exec,if hyprctl clients | grep scratch_music; then echo "scratch_music respawn not needed"; else kitty --class scratch_music -e ncmpcpp; fi - bind=SUPER,M,togglespecialworkspace,scratch_music - bind=SUPER,B,exec,if hyprctl clients | grep scratch_btm; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_btm -e btm; fi - bind=SUPER,B,togglespecialworkspace,scratch_btm - bind=SUPER,D,exec,if hyprctl clients | grep Element; then echo "scratch_ranger respawn not needed"; else element-desktop; fi - bind=SUPER,D,togglespecialworkspace,scratch_element - bind=SUPER,code:172,exec,togglespecialworkspace,scratch_pavucontrol - bind=SUPER,code:172,exec,if hyprctl clients | grep pavucontrol; then echo "scratch_ranger respawn not needed"; else pavucontrol; fi - - $scratchpadsize = size 80% 85% - - $scratch_term = class:^(scratch_term)$ - windowrulev2 = float,$scratch_term - windowrulev2 = $scratchpadsize,$scratch_term - windowrulev2 = workspace special:scratch_term silent ,$scratch_term - windowrulev2 = center,$scratch_term - - $float_term = class:^(float_term)$ - windowrulev2 = float,$float_term - windowrulev2 = center,$float_term - - $scratch_ranger = class:^(scratch_ranger)$ - windowrulev2 = float,$scratch_ranger - windowrulev2 = $scratchpadsize,$scratch_ranger - windowrulev2 = workspace special:scratch_ranger silent,$scratch_ranger - windowrulev2 = center,$scratch_ranger - - $scratch_numbat = class:^(scratch_numbat)$ - windowrulev2 = float,$scratch_numbat - windowrulev2 = $scratchpadsize,$scratch_numbat - windowrulev2 = workspace special:scratch_numbat silent,$scratch_numbat - windowrulev2 = center,$scratch_numbat - - $scratch_btm = class:^(scratch_btm)$ - windowrulev2 = float,$scratch_btm - windowrulev2 = $scratchpadsize,$scratch_btm - windowrulev2 = workspace special:scratch_btm silent,$scratch_btm - windowrulev2 = center,$scratch_btm - - windowrulev2 = float,class:^(Element)$ - windowrulev2 = size 85% 90%,class:^(Element)$ - windowrulev2 = workspace special:scratch_element silent,class:^(Element)$ - windowrulev2 = center,class:^(Element)$ - - $scratch_music = class:^(scratch_music)$ - windowrulev2 = float,$scratch_music - windowrulev2 = $scratchpadsize,$scratch_music - windowrulev2 = workspace special:scratch_music silent,$scratch_music - windowrulev2 = center,$scratch_music - - $savetodisk = title:^(Save to Disk)$ - windowrulev2 = float,$savetodisk - windowrulev2 = size 70% 75%,$savetodisk - windowrulev2 = center,$savetodisk - - $pavucontrol = class:^(org.pulseaudio.pavucontrol)$ - windowrulev2 = float,$pavucontrol - windowrulev2 = size 86% 40%,$pavucontrol - windowrulev2 = move 50% 6%,$pavucontrol - windowrulev2 = workspace special silent,$pavucontrol - windowrulev2 = opacity 0.80,$pavucontrol - - $miniframe = title:\*Minibuf.* - windowrulev2 = float,$miniframe - windowrulev2 = size 64% 50%,$miniframe - windowrulev2 = move 18% 25%,$miniframe - windowrulev2 = animation popin 1 20,$miniframe - - windowrulev2 = float,class:^(pokefinder)$ - windowrulev2 = float,class:^(Waydroid)$ - - windowrulev2 = float,title:(Blender Render) - windowrulev2 = size 86% 85%,title:(Blender Render) - windowrulev2 = center,title:(Blender Render) - windowrulev2 = float,class:^(org.inkscape.Inkscape)$ - windowrulev2 = float,class:^(pinta)$ - windowrulev2 = float,class:^(krita)$ - windowrulev2 = float,class:^(Gimp) - windowrulev2 = float,class:^(Gimp) - windowrulev2 = float,class:^(libresprite)$ - windowrulev2 = float,title:(Open Images) - windowrulev2 = size 86% 85%,title:(Open Images) - windowrulev2 = center,title:(Open Images) - windowrulev2 = float,title:(Create new document) - windowrulev2 = size 86% 85%,title:(Create new document) - windowrulev2 = center,title:(Create new document) - windowrulev2 = size 86% 85%,title:(Create new document) - windowrulev2 = float,title:(Create New Node) - windowrulev2 = size 70% 70%,title:(Create New Node) - windowrulev2 = center,title:(Create New Node) - windowrulev2 = float,title:(Resource) - windowrulev2 = size 70% 70%,title:(Resource) - windowrulev2 = center,title:(Resource) - windowrulev2 = tile,title:(Godot) - - windowrulev2 = opacity 0.80,title:ORUI - - windowrulev2 = opacity 1.0,class:^(org.qutebrowser.qutebrowser),fullscreen:1 - windowrulev2 = opacity 0.85,class:^(Element)$ - windowrulev2 = opacity 0.85,class:^(Logseq)$ - windowrulev2 = opacity 1.0,class:^(Brave-browser),fullscreen:1 - windowrulev2 = opacity 1.0,class:^(librewolf),fullscreen:1 - windowrulev2 = opacity 0.85,title:^(My Local Dashboard Awesome Homepage - qutebrowser)$ - windowrulev2 = opacity 0.85,title:\[.*\] - My Local Dashboard Awesome Homepage - windowrulev2 = opacity 0.85,class:^(org.keepassxc.KeePassXC)$ - windowrulev2 = opacity 0.85,class:^(org.gnome.Nautilus)$ - windowrulev2 = opacity 0.85,class:^(org.gnome.Nautilus)$ - - windowrulev2 = opacity 0.85,initialTitle:^(Notes)$,initialClass:^(Brave-browser)$ - - layerrule = blur,waybar - layerrule = xray 1,waybar - blurls = waybar - layerrule = ignorezero, eww - layerrule = xray 1,eww - layerrule = blur,launcher # fuzzel - blurls = launcher # fuzzel - layerrule = blur,gtk-layer-shell - layerrule = xray 1,gtk-layer-shell - layerrule = ignorezero, gtk-layer-shell - layerrule = blur,eww - layerrule = xray 1,eww - layerrule = ignorezero, eww - layerrule = animation popin 80%, eww - blurls = gtk-layer-shell - layerrule = blur,~nwggrid - layerrule = xray 1,~nwggrid - layerrule = animation fade,~nwggrid - blurls = ~nwggrid - - bind=SUPER,equal, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 + 0.5}')" - bind=SUPER,minus, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 - 0.5}')" - - bind=SUPER,I,exec,networkmanager_dmenu - bind=SUPER,P,exec,keepmenu - bind=SUPERSHIFT,P,exec,hyprprofile-dmenu - bind=SUPERCTRL,R,exec,phoenix refresh - - # 3 monitor setup - monitor=eDP-1,1920x1080@300,900x1080,1 - monitor=HDMI-A-1,1920x1080,1920x0,1 - monitor=DP-1,1920x1080,0x0,1 - - # hdmi tv - #monitor=eDP-1,1920x1080,1920x0,1 - #monitor=HDMI-A-1,1920x1080,0x0,1 - - # hdmi work projector - #monitor=eDP-1,1920x1080,1920x0,1 - #monitor=HDMI-A-1,1920x1200,0x0,1 - - xwayland { - force_zero_scaling = true - } - - binds { - movefocus_cycles_fullscreen = false - } - - input { - kb_layout = us - kb_options = caps:escape - repeat_delay = 450 - repeat_rate = 50 - accel_profile = adaptive - follow_mouse = 2 - float_switch_override_focus = 0 - } - - misc { - disable_hyprland_logo = true - mouse_move_enables_dpms = true - enable_swallow = true - swallow_regex = (scratch_term)|(Alacritty)|(kitty) - font_family = '' + userSettings.font + '' - - } - decoration { - rounding = 8 - dim_special = 0.0 - blur { - enabled = true - size = 5 - passes = 2 - ignore_opacity = true - contrast = 1.17 - brightness = '' + (if (config.stylix.polarity == "dark") then "0.8" else "1.25") + '' - - xray = true - special = true - popups = true - } - } - - ''; - xwayland = { enable = true; }; - systemd.enable = true; - }; - - home.packages = (with pkgs; [ - hyprland-monitor-attached - caffeine-ng - alacritty - kitty - feh - killall - polkit_gnome - eww - nwg-launchers - papirus-icon-theme - (pkgs.writeScriptBin "nwggrid-wrapper" '' - #!/bin/sh - if pgrep -x "nwggrid-server" > /dev/null - then - nwggrid -client - else - GDK_PIXBUF_MODULE_FILE=${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache nwggrid-server -layer-shell-exclusive-zone -1 -g adw-gtk3 -o 0.55 -b ${config.lib.stylix.colors.base00} - fi - '') - libva-utils - libinput-gestures - gsettings-desktop-schemas - (pkgs.makeDesktopItem { - name = "nwggrid"; - desktopName = "Application Launcher"; - exec = "nwggrid-wrapper"; - terminal = false; - type = "Application"; - noDisplay = true; - icon = "/home/"+userSettings.username+"/.local/share/pixmaps/hyprland-logo-stylix.svg"; - }) - hyprnome - wlr-randr - wtype - ydotool - wl-clipboard - hyprland-protocols - hyprpicker - inputs.hyprlock.packages.${pkgs.system}.default - hypridle - hyprpaper - fnott - keepmenu - pinentry-gnome3 - wev - grim - slurp - libsForQt5.qt5.qtwayland - qt6.qtwayland - xdg-utils - wlsunset - pavucontrol - pamixer - tesseract4 - (pkgs.writeScriptBin "workspace-on-monitor" '' - #!/bin/sh - hyprctl monitors -j | jq ".[$1] | .activeWorkspace.id" - '') - (pkgs.writeScriptBin "open-under-ranger" '' - #!/bin/sh - command="$1" - echo $command - file="''${*:2}" - file=''${file// /\\ } - echo $file - workspace=$(hyprctl monitors -j | jq ".[] | select(.specialWorkspace.name == \"special:scratch_ranger\") | .activeWorkspace.id") - if [ -z "''${workspace}" ]; then - hyprctl dispatch exec -- "$command"; - else - hyprctl dispatch exec "[workspace $workspace]" -- "$command" "$file"; - fi - hyprctl dispatch togglespecialworkspace scratch_ranger - '') - (pkgs.writeScriptBin "screenshot-ocr" '' - #!/bin/sh - imgname="/tmp/screenshot-ocr-$(date +%Y%m%d%H%M%S).png" - txtname="/tmp/screenshot-ocr-$(date +%Y%m%d%H%M%S)" - txtfname=$txtname.txt - grim -g "$(slurp)" $imgname; - tesseract $imgname $txtname; - wl-copy -n < $txtfname - '') - (pkgs.writeScriptBin "sct" '' - #!/bin/sh - killall wlsunset &> /dev/null; - if [ $# -eq 1 ]; then - temphigh=$(( $1 + 1 )) - templow=$1 - wlsunset -t $templow -T $temphigh &> /dev/null & - else - killall wlsunset &> /dev/null; - fi - '') - (pkgs.writeScriptBin "obs-notification-mute-daemon" '' - #!/bin/sh - while true; do - if pgrep -x .obs-wrapped > /dev/null; - then - pkill -STOP fnott; - else - pkill -CONT fnott; - fi - sleep 10; - done - '') - (pkgs.writeScriptBin "suspend-unless-render" '' - #!/bin/sh - if pgrep -x nixos-rebuild > /dev/null || pgrep -x home-manager > /dev/null || pgrep -x kdenlive > /dev/null || pgrep -x FL64.exe > /dev/null || pgrep -x blender > /dev/null || pgrep -x flatpak > /dev/null; - then echo "Shouldn't suspend"; sleep 10; else echo "Should suspend"; systemctl suspend; fi - '') - ]); - home.file.".local/bin/eww-reload-bars.sh" = { - text = ''#!/bin/sh - eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2;''; - executable = true; - }; - home.file.".config/hypr/hypridle.conf".text = '' - general { - lock_cmd = pgrep hyprlock || hyprlock - before_sleep_cmd = loginctl lock-session - ignore_dbus_inhibit = false - } - - #listener { - # timeout = 150 # in seconds - # on-timeout = hyprctl dispatch dpms off - # on-resume = hyprctl dispatch dpms on - #} - listener { - timeout = 165 # in seconds - on-timeout = loginctl lock-session - } - listener { - timeout = 180 # in seconds - #timeout = 5400 # in seconds - on-timeout = systemctl suspend - on-resume = hyprctl dispatch dpms on - } - ''; - home.file.".config/hypr/hyprlock.conf".text = '' - background { - monitor = - path = screenshot - - # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations - blur_passes = 4 - blur_size = 5 - noise = 0.0117 - contrast = 0.8916 - brightness = 0.8172 - vibrancy = 0.1696 - vibrancy_darkness = 0.0 - } - - # doesn't work yet - image { - monitor = - path = /home/emmet/.dotfiles/user/wm/hyprland/nix-dark.png - size = 150 # lesser side if not 1:1 ratio - rounding = -1 # negative values mean circle - border_size = 0 - rotate = 0 # degrees, counter-clockwise - - position = 0, 200 - halign = center - valign = center - } - - input-field { - monitor = - size = 200, 50 - outline_thickness = 3 - dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8 - dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0 - dots_center = false - dots_rounding = -1 # -1 default circle, -2 follow input-field rounding - outer_color = rgb(''+config.lib.stylix.colors.base07-rgb-r+'',''+config.lib.stylix.colors.base07-rgb-g+'', ''+config.lib.stylix.colors.base07-rgb-b+'') - inner_color = rgb(''+config.lib.stylix.colors.base00-rgb-r+'',''+config.lib.stylix.colors.base00-rgb-g+'', ''+config.lib.stylix.colors.base00-rgb-b+'') - font_color = rgb(''+config.lib.stylix.colors.base07-rgb-r+'',''+config.lib.stylix.colors.base07-rgb-g+'', ''+config.lib.stylix.colors.base07-rgb-b+'') - fade_on_empty = true - fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered. - placeholder_text = Input Password... # Text rendered in the input box when it's empty. - hide_input = false - rounding = -1 # -1 means complete rounding (circle/oval) - check_color = rgb(''+config.lib.stylix.colors.base0A-rgb-r+'',''+config.lib.stylix.colors.base0A-rgb-g+'', ''+config.lib.stylix.colors.base0A-rgb-b+'') - fail_color = rgb(''+config.lib.stylix.colors.base08-rgb-r+'',''+config.lib.stylix.colors.base08-rgb-g+'', ''+config.lib.stylix.colors.base08-rgb-b+'') - fail_text = $FAIL ($ATTEMPTS) # can be set to empty - fail_transition = 300 # transition time in ms between normal outer_color and fail_color - capslock_color = -1 - numlock_color = -1 - bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above) - invert_numlock = false # change color if numlock is off - swap_font_color = false # see below - - position = 0, -20 - halign = center - valign = center - } - - label { - monitor = - text = Hello, Emmet - color = rgb(''+config.lib.stylix.colors.base07-rgb-r+'',''+config.lib.stylix.colors.base07-rgb-g+'', ''+config.lib.stylix.colors.base07-rgb-b+'') - font_size = 25 - font_family = ''+userSettings.font+'' - - rotate = 0 # degrees, counter-clockwise - - position = 0, 160 - halign = center - valign = center - } - - label { - monitor = - text = $TIME - color = rgb(''+config.lib.stylix.colors.base07-rgb-r+'',''+config.lib.stylix.colors.base07-rgb-g+'', ''+config.lib.stylix.colors.base07-rgb-b+'') - font_size = 20 - font_family = Intel One Mono - rotate = 0 # degrees, counter-clockwise - - position = 0, 80 - halign = center - valign = center - } - ''; - services.swayosd.enable = true; - services.swayosd.topMargin = 0.5; - services.cbatticon = { - enable = true; - iconType = "symbolic"; - }; - home.file.".config/eww/eww.yuck".source = ./eww/eww.yuck; - home.file = { - ".config/eww/eww.scss".source = config.lib.stylix.colors { - template = builtins.readFile ./eww/eww.scss.mustache; - extension = ".scss"; - }; - }; - programs.waybar = { - enable = false; - package = pkgs.waybar.overrideAttrs (oldAttrs: { - postPatch = '' - # use hyprctl to switch workspaces - sed -i 's/zext_workspace_handle_v1_activate(workspace_handle_);/const std::string command = "hyprctl dispatch focusworkspaceoncurrentmonitor " + std::to_string(id());\n\tsystem(command.c_str());/g' src/modules/wlr/workspace_manager.cpp - sed -i 's/gIPC->getSocket1Reply("dispatch workspace " + std::to_string(id()));/gIPC->getSocket1Reply("dispatch focusworkspaceoncurrentmonitor " + std::to_string(id()));/g' src/modules/hyprland/workspaces.cpp - ''; - patches = [./patches/waybarpaupdate.patch ./patches/waybarbatupdate.patch]; - }); - settings = { - mainBar = { - layer = "top"; - position = "top"; - height = 35; - margin = "7 7 3 7"; - spacing = 2; - - modules-left = [ "group/power" "group/battery" "group/backlight" "group/cpu" "group/memory" "group/pulseaudio" "keyboard-state" ]; - modules-center = [ "custom/hyprprofile" "hyprland/workspaces" ]; - modules-right = [ "group/time" "idle_inhibitor" "tray" ]; - - "custom/os" = { - "format" = " {} "; - "exec" = ''echo "" ''; - "interval" = "once"; - "on-click" = "nwggrid-wrapper"; - "tooltip" = false; - }; - "group/power" = { - "orientation" = "horizontal"; - "drawer" = { - "transition-duration" = 500; - "children-class" = "not-power"; - "transition-left-to-right" = true; - }; - "modules" = [ - "custom/os" - "custom/hyprprofileicon" - "custom/lock" - "custom/quit" - "custom/power" - "custom/reboot" - ]; - }; - "custom/quit" = { - "format" = "󰍃"; - "tooltip" = false; - "on-click" = "hyprctl dispatch exit"; - }; - "custom/lock" = { - "format" = "󰍁"; - "tooltip" = false; - "on-click" = "hyprlock"; - }; - "custom/reboot" = { - "format" = "󰜉"; - "tooltip" = false; - "on-click" = "reboot"; - }; - "custom/power" = { - "format" = "󰐥"; - "tooltip" = false; - "on-click" = "shutdown now"; - }; - "custom/hyprprofileicon" = { - "format" = "󱙋"; - "on-click" = "hyprprofile-dmenu"; - "tooltip" = false; - }; - "custom/hyprprofile" = { - "format" = " {}"; - "exec" = ''cat ~/.hyprprofile''; - "interval" = 3; - "on-click" = "hyprprofile-dmenu"; - }; - "keyboard-state" = { - "numlock" = true; - "format" = "{icon}"; - "format-icons" = { - "locked" = "󰎠 "; - "unlocked" = "󱧓 "; - }; - }; - "hyprland/workspaces" = { - "format" = "{icon}"; - "format-icons" = { - "1" = "󱚌"; - "2" = "󰖟"; - "3" = ""; - "4" = "󰎄"; - "5" = "󰋩"; - "6" = ""; - "7" = "󰄖"; - "8" = "󰑴"; - "9" = "󱎓"; - "scratch_term" = "_"; - "scratch_ranger" = "_󰴉"; - "scratch_music" = "_"; - "scratch_btm" = "_"; - "scratch_pavucontrol" = "_󰍰"; - }; - "on-click" = "activate"; - "on-scroll-up" = "hyprnome"; - "on-scroll-down" = "hyprnome --previous"; - "all-outputs" = false; - "active-only" = false; - "ignore-workspaces" = ["scratch" "-"]; - "show-special" = false; - }; - - "idle_inhibitor" = { - format = "{icon}"; - format-icons = { - activated = "󰅶"; - deactivated = "󰾪"; - }; - }; - tray = { - #"icon-size" = 21; - "spacing" = 10; - }; - "clock#time" = { - "interval" = 1; - "format" = "{:%I:%M:%S %p}"; - "timezone" = "America/Chicago"; - "tooltip-format" = '' - {:%Y %B} - {calendar}''; - }; - "clock#date" = { - "interval" = 1; - "format" = "{:%a %Y-%m-%d}"; - "timezone" = "America/Chicago"; - "tooltip-format" = '' - {:%Y %B} - {calendar}''; - }; - "group/time" = { - "orientation" = "horizontal"; - "drawer" = { - "transition-duration" = 500; - "transition-left-to-right" = false; - }; - "modules" = [ "clock#time" "clock#date" ]; - }; - - cpu = { "format" = "󰍛"; }; - "cpu#text" = { "format" = "{usage}%"; }; - "group/cpu" = { - "orientation" = "horizontal"; - "drawer" = { - "transition-duration" = 500; - "transition-left-to-right" = true; - }; - "modules" = [ "cpu" "cpu#text" ]; - }; - - memory = { "format" = ""; }; - "memory#text" = { "format" = "{}%"; }; - "group/memory" = { - "orientation" = "horizontal"; - "drawer" = { - "transition-duration" = 500; - "transition-left-to-right" = true; - }; - "modules" = [ "memory" "memory#text" ]; - }; - - backlight = { - "format" = "{icon}"; - "format-icons" = [ "" "" "" "" "" "" "" "" "" ]; - }; - "backlight#text" = { "format" = "{percent}%"; }; - "group/backlight" = { - "orientation" = "horizontal"; - "drawer" = { - "transition-duration" = 500; - "transition-left-to-right" = true; - }; - "modules" = [ "backlight" "backlight#text" ]; - }; - - battery = { - "states" = { - "good" = 75; - "warning" = 30; - "critical" = 15; - }; - "fullat" = 80; - "format" = "{icon}"; - "format-charging" = "󰂄"; - "format-plugged" = "󰂄"; - "format-full" = "󰁹"; - "format-icons" = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ]; - "interval" = 10; - }; - "battery#text" = { - "states" = { - "good" = 75; - "warning" = 30; - "critical" = 15; - }; - "fullat" = 80; - "format" = "{capacity}%"; - }; - "group/battery" = { - "orientation" = "horizontal"; - "drawer" = { - "transition-duration" = 500; - "transition-left-to-right" = true; - }; - "modules" = [ "battery" "battery#text" ]; - }; - pulseaudio = { - "scroll-step" = 1; - "format" = "{icon}"; - "format-bluetooth" = "{icon}"; - "format-bluetooth-muted" = "󰸈"; - "format-muted" = "󰸈"; - "format-source" = ""; - "format-source-muted" = ""; - "format-icons" = { - "headphone" = ""; - "hands-free" = ""; - "headset" = ""; - "phone" = ""; - "portable" = ""; - "car" = ""; - "default" = [ "" "" "" ]; - }; - "on-click" = "hyprctl dispatch togglespecialworkspace scratch_pavucontrol; if hyprctl clients | grep pavucontrol; then echo 'scratch_ranger respawn not needed'; else pavucontrol; fi"; - }; - "pulseaudio#text" = { - "scroll-step" = 1; - "format" = "{volume}%"; - "format-bluetooth" = "{volume}%"; - "format-bluetooth-muted" = ""; - "format-muted" = ""; - "format-source" = "{volume}%"; - "format-source-muted" = ""; - "on-click" = "hyprctl dispatch togglespecialworkspace scratch_pavucontrol; if hyprctl clients | grep pavucontrol; then echo 'scratch_ranger respawn not needed'; else pavucontrol; fi"; - }; - "group/pulseaudio" = { - "orientation" = "horizontal"; - "drawer" = { - "transition-duration" = 500; - "transition-left-to-right" = true; - }; - "modules" = [ "pulseaudio" "pulseaudio#text" ]; - }; - }; - }; - style = '' - * { - /* `otf-font-awesome` is required to be installed for icons */ - font-family: FontAwesome, ''+userSettings.font+''; - - font-size: 20px; - } - - window#waybar { - background-color: rgba('' + config.lib.stylix.colors.base00-rgb-r + "," + config.lib.stylix.colors.base00-rgb-g + "," + config.lib.stylix.colors.base00-rgb-b + "," + ''0.55); - border-radius: 8px; - color: #'' + config.lib.stylix.colors.base07 + ''; - transition-property: background-color; - transition-duration: .2s; - } - - tooltip { - color: #'' + config.lib.stylix.colors.base07 + ''; - background-color: rgba('' + config.lib.stylix.colors.base00-rgb-r + "," + config.lib.stylix.colors.base00-rgb-g + "," + config.lib.stylix.colors.base00-rgb-b + "," + ''0.9); - border-style: solid; - border-width: 3px; - border-radius: 8px; - border-color: #'' + config.lib.stylix.colors.base08 + ''; - } - - tooltip * { - color: #'' + config.lib.stylix.colors.base07 + ''; - background-color: rgba('' + config.lib.stylix.colors.base00-rgb-r + "," + config.lib.stylix.colors.base00-rgb-g + "," + config.lib.stylix.colors.base00-rgb-b + "," + ''0.0); - } - - window > box { - border-radius: 8px; - opacity: 0.94; - } - - window#waybar.hidden { - opacity: 0.2; - } - - button { - border: none; - } - - #custom-hyprprofile { - color: #'' + config.lib.stylix.colors.base0D + ''; - } - - /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ - button:hover { - background: inherit; - } - - #workspaces button { - padding: 0px 6px; - background-color: transparent; - color: #'' + config.lib.stylix.colors.base04 + ''; - } - - #workspaces button:hover { - color: #'' + config.lib.stylix.colors.base07 + ''; - } - - #workspaces button.active { - color: #'' + config.lib.stylix.colors.base08 + ''; - } - - #workspaces button.focused { - color: #'' + config.lib.stylix.colors.base0A + ''; - } - - #workspaces button.visible { - color: #'' + config.lib.stylix.colors.base05 + ''; - } - - #workspaces button.urgent { - color: #'' + config.lib.stylix.colors.base09 + ''; - } - - #battery, - #cpu, - #memory, - #disk, - #temperature, - #backlight, - #network, - #pulseaudio, - #wireplumber, - #custom-media, - #tray, - #mode, - #idle_inhibitor, - #scratchpad, - #custom-hyprprofileicon, - #custom-quit, - #custom-lock, - #custom-reboot, - #custom-power, - #mpd { - padding: 0 3px; - color: #'' + config.lib.stylix.colors.base07 + ''; - border: none; - border-radius: 8px; - } - - #custom-hyprprofileicon, - #custom-quit, - #custom-lock, - #custom-reboot, - #custom-power, - #idle_inhibitor { - background-color: transparent; - color: #'' + config.lib.stylix.colors.base04 + ''; - } - - #custom-hyprprofileicon:hover, - #custom-quit:hover, - #custom-lock:hover, - #custom-reboot:hover, - #custom-power:hover, - #idle_inhibitor:hover { - color: #'' + config.lib.stylix.colors.base07 + ''; - } - - #clock, #tray, #idle_inhibitor { - padding: 0 5px; - } - - #window, - #workspaces { - margin: 0 6px; - } - - /* If workspaces is the leftmost module, omit left margin */ - .modules-left > widget:first-child > #workspaces { - margin-left: 0; - } - - /* If workspaces is the rightmost module, omit right margin */ - .modules-right > widget:last-child > #workspaces { - margin-right: 0; - } - - #clock { - color: #'' + config.lib.stylix.colors.base0D + ''; - } - - #battery { - color: #'' + config.lib.stylix.colors.base0B + ''; - } - - #battery.charging, #battery.plugged { - color: #'' + config.lib.stylix.colors.base0C + ''; - } - - @keyframes blink { - to { - background-color: #'' + config.lib.stylix.colors.base07 + ''; - color: #'' + config.lib.stylix.colors.base00 + ''; - } - } - - #battery.critical:not(.charging) { - background-color: #'' + config.lib.stylix.colors.base08 + ''; - color: #'' + config.lib.stylix.colors.base07 + ''; - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; - } - - label:focus { - background-color: #'' + config.lib.stylix.colors.base00 + ''; - } - - #cpu { - color: #'' + config.lib.stylix.colors.base0D + ''; - } - - #memory { - color: #'' + config.lib.stylix.colors.base0E + ''; - } - - #disk { - color: #'' + config.lib.stylix.colors.base0F + ''; - } - - #backlight { - color: #'' + config.lib.stylix.colors.base0A + ''; - } - - label.numlock { - color: #'' + config.lib.stylix.colors.base04 + ''; - } - - label.numlock.locked { - color: #'' + config.lib.stylix.colors.base0F + ''; - } - - #pulseaudio { - color: #'' + config.lib.stylix.colors.base0C + ''; - } - - #pulseaudio.muted { - color: #'' + config.lib.stylix.colors.base04 + ''; - } - - #tray > .passive { - -gtk-icon-effect: dim; - } - - #tray > .needs-attention { - -gtk-icon-effect: highlight; - } - - #idle_inhibitor { - color: #'' + config.lib.stylix.colors.base04 + ''; - } - - #idle_inhibitor.activated { - color: #'' + config.lib.stylix.colors.base0F + ''; - } - ''; - }; - home.file.".config/gtklock/style.css".text = '' - window { - background-image: url("''+config.stylix.image+''"); - background-size: auto 100%; - } - ''; - home.file.".config/nwg-launchers/nwggrid/style.css".text = '' - button, label, image { - background: none; - border-style: none; - box-shadow: none; - color: #'' + config.lib.stylix.colors.base07 + ''; - - font-size: 20px; - } - - button { - padding: 5px; - margin: 5px; - text-shadow: none; - } - - button:hover { - background-color: rgba('' + config.lib.stylix.colors.base07-rgb-r + "," + config.lib.stylix.colors.base07-rgb-g + "," + config.lib.stylix.colors.base07-rgb-b + "," + ''0.15); - } - - button:focus { - box-shadow: 0 0 10px; - } - - button:checked { - background-color: rgba('' + config.lib.stylix.colors.base07-rgb-r + "," + config.lib.stylix.colors.base07-rgb-g + "," + config.lib.stylix.colors.base07-rgb-b + "," + ''0.15); - } - - #searchbox { - background: none; - border-color: #'' + config.lib.stylix.colors.base07 + ''; - - color: #'' + config.lib.stylix.colors.base07 + ''; - - margin-top: 20px; - margin-bottom: 20px; - - font-size: 20px; - } - - #separator { - background-color: rgba('' + config.lib.stylix.colors.base00-rgb-r + "," + config.lib.stylix.colors.base00-rgb-g + "," + config.lib.stylix.colors.base00-rgb-b + "," + ''0.55); - - color: #'' + config.lib.stylix.colors.base07 + ''; - margin-left: 500px; - margin-right: 500px; - margin-top: 10px; - margin-bottom: 10px - } - - #description { - margin-bottom: 20px - } - ''; - home.file.".config/nwg-launchers/nwggrid/terminal".text = "alacritty -e"; - home.file.".config/nwg-drawer/drawer.css".text = '' - window { - background-color: rgba('' + config.lib.stylix.colors.base00-rgb-r + "," + config.lib.stylix.colors.base00-rgb-g + "," + config.lib.stylix.colors.base00-rgb-b + "," + ''0.55); - color: #'' + config.lib.stylix.colors.base07 + '' - } - - /* search entry */ - entry { - background-color: rgba('' + config.lib.stylix.colors.base01-rgb-r + "," + config.lib.stylix.colors.base01-rgb-g + "," + config.lib.stylix.colors.base01-rgb-b + "," + ''0.45); - } - - button, image { - background: none; - border: none - } - - button:hover { - background-color: rgba('' + config.lib.stylix.colors.base02-rgb-r + "," + config.lib.stylix.colors.base02-rgb-g + "," + config.lib.stylix.colors.base02-rgb-b + "," + ''0.45); - } - - /* in case you wanted to give category buttons a different look */ - #category-button { - margin: 0 10px 0 10px - } - - #pinned-box { - padding-bottom: 5px; - border-bottom: 1px dotted; - border-color: #'' + config.lib.stylix.colors.base07 + ''; - } - - #files-box { - padding: 5px; - border: 1px dotted gray; - border-radius: 15px - border-color: #'' + config.lib.stylix.colors.base07 + ''; - } - ''; - - services.udiskie.enable = true; - services.udiskie.tray = "always"; - programs.fuzzel.enable = true; - programs.fuzzel.package = pkgs.fuzzel; - programs.fuzzel.settings = { - main = { - font = userSettings.font + ":size=20"; - dpi-aware = "no"; - show-actions = "yes"; - terminal = "${pkgs.alacritty}/bin/alacritty"; - }; - colors = { - background = config.lib.stylix.colors.base00 + "bf"; - text = config.lib.stylix.colors.base07 + "ff"; - match = config.lib.stylix.colors.base05 + "ff"; - selection = config.lib.stylix.colors.base08 + "ff"; - selection-text = config.lib.stylix.colors.base00 + "ff"; - selection-match = config.lib.stylix.colors.base05 + "ff"; - border = config.lib.stylix.colors.base08 + "ff"; - }; - border = { - width = 3; - radius = 7; - }; - }; - services.fnott.enable = true; - services.fnott.settings = { - main = { - anchor = "bottom-right"; - stacking-order = "top-down"; - min-width = 400; - title-font = userSettings.font + ":size=14"; - summary-font = userSettings.font + ":size=12"; - body-font = userSettings.font + ":size=11"; - border-size = 0; - }; - low = { - background = config.lib.stylix.colors.base00 + "e6"; - title-color = config.lib.stylix.colors.base03 + "ff"; - summary-color = config.lib.stylix.colors.base03 + "ff"; - body-color = config.lib.stylix.colors.base03 + "ff"; - idle-timeout = 150; - max-timeout = 30; - default-timeout = 8; - }; - normal = { - background = config.lib.stylix.colors.base00 + "e6"; - title-color = config.lib.stylix.colors.base07 + "ff"; - summary-color = config.lib.stylix.colors.base07 + "ff"; - body-color = config.lib.stylix.colors.base07 + "ff"; - idle-timeout = 150; - max-timeout = 30; - default-timeout = 8; - }; - critical = { - background = config.lib.stylix.colors.base00 + "e6"; - title-color = config.lib.stylix.colors.base08 + "ff"; - summary-color = config.lib.stylix.colors.base08 + "ff"; - body-color = config.lib.stylix.colors.base08 + "ff"; - idle-timeout = 0; - max-timeout = 0; - default-timeout = 0; - }; - }; -} diff --git a/user/wm/hyprland/hyprprofiles/hyprprofiles.nix b/user/wm/hyprland/hyprprofiles/hyprprofiles.nix deleted file mode 100644 index e73b402..0000000 --- a/user/wm/hyprland/hyprprofiles/hyprprofiles.nix +++ /dev/null @@ -1,63 +0,0 @@ -{ config, lib, pkgs, dmenuCmd ? "rofi -dmenu", ... }: -let - dmenuScript = '' - #!/bin/sh - choice="$(\ls ~/.config/hyprprofiles | ''+dmenuCmd+'')"; - hyprprofile $choice; - ''; -in -{ - home.packages = [ - (pkgs.writeScriptBin "hyprprofile" '' - #!/bin/sh - prevprofile="$(cat ~/.hyprprofile)" - newprofile="$1" - if [ $# -eq 1 ]; then - if [ $newprofile = "Default" ]; then - echo "" > ~/.hyprprofile; - else - echo $newprofile > ~/.hyprprofile; - fi - if [ -f ~/.config/hyprprofiles/$prevprofile/exit-hook.sh ]; then - ~/.config/hyprprofiles/$prevprofile/exit-hook.sh; - fi - if [ -f ~/.config/hyprprofiles/$newprofile/start-hook.sh ]; then - ~/.config/hyprprofiles/$newprofile/start-hook.sh; - fi - fi - '') - (pkgs.writeScriptBin "qutebrowser-hyprprofile" '' - #!/bin/sh - profile="$(cat ~/.hyprprofile)" - if [[ $profile ]]; then - container-open $profile $1; - else - qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4 $1; - fi - '') - (pkgs.makeDesktopItem { - name = "qutebrowser-hyprprofile"; - desktopName = "Qutebrowser Hyprprofile"; - exec = "qutebrowser-hyprprofile %u"; - categories = ["Network" "WebBrowser"]; - keywords = ["Browser"]; - terminal = false; - type = "Application"; - noDisplay = false; - icon = "qutebrowser"; - }) - (pkgs.writeScriptBin "hyprprofile-dmenu" dmenuScript) - ]; - xdg.mimeApps.defaultApplications = lib.mkForce { - "text/html" = "qutebrowser-hyprprofile.desktop"; - "x-scheme-handler/http" = "qutebrowser-hyprprofile.desktop"; - "x-scheme-handler/https" = "qutebrowser-hyprprofile.desktop"; - "x-scheme-handler/about" = "qutebrowser-hyprprofile.desktop"; - "x-scheme-handler/unknown" = "qutebrowser-hyprprofile.desktop"; - }; - home.file.".config/hyprprofiles/" = { - source = ./profiles; - recursive = true; - executable = true; - }; -} diff --git a/user/wm/hyprland/hyprprofiles/profiles/Bard/start-hook.sh b/user/wm/hyprland/hyprprofiles/profiles/Bard/start-hook.sh deleted file mode 100755 index 5af5b69..0000000 --- a/user/wm/hyprland/hyprprofiles/profiles/Bard/start-hook.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -hyprctl keyword unbind SUPER,S; -hyprctl keyword bind SUPER,S,exec,qutebrowser-hyprprofile; -emacsclient --eval '(org-roam-switch-db "Bard.p" t)' diff --git a/user/wm/hyprland/patches/noactiveclients.patch b/user/wm/hyprland/patches/noactiveclients.patch deleted file mode 100644 index 8f8c458..0000000 --- a/user/wm/hyprland/patches/noactiveclients.patch +++ /dev/null @@ -1,51 +0,0 @@ -diff --git a/main.go b/main.go -index 0c980c9..4e6dfbf 100644 ---- a/main.go -+++ b/main.go -@@ -103,11 +103,6 @@ func buildMainBox(vbox *gtk.Box) { - allItems = append(allItems, cntPin) - } - } -- for _, cntTask := range clients { -- if !isIn(allItems, cntTask.Class) && !strings.Contains(*launcherCmd, cntTask.Class) && cntTask.Class != "" { -- allItems = append(allItems, cntTask.Class) -- } -- } - - divider := 1 - if len(allItems) > 0 { -@@ -155,34 +150,6 @@ func buildMainBox(vbox *gtk.Box) { - } - - alreadyAdded = nil -- for _, t := range clients { -- // For some time after killing a client, it's still being returned by 'j/clients', however w/o the Class value. -- // Let's filter the ghosts out. -- if !inPinned(t.Class) && t.Class != "" { -- instances := taskInstances(t.Class) -- if len(instances) == 1 { -- button := taskButton(t, instances) -- mainBox.PackStart(button, false, false, 0) -- if t.Class == activeClient.Class && !*autohide { -- button.SetProperty("name", "active") -- } else { -- button.SetProperty("name", "") -- } -- } else if !isIn(alreadyAdded, t.Class) { -- button := taskButton(t, instances) -- mainBox.PackStart(button, false, false, 0) -- if t.Class == activeClient.Class && !*autohide { -- button.SetProperty("name", "active") -- } else { -- button.SetProperty("name", "") -- } -- alreadyAdded = append(alreadyAdded, t.Class) -- clientMenu(t.Class, instances) -- } else { -- continue -- } -- } -- } - - if !*noLauncher && *launcherCmd != "" { - button, _ := gtk.ButtonNew() diff --git a/user/wm/hyprland/patches/waybarbatupdate.patch b/user/wm/hyprland/patches/waybarbatupdate.patch deleted file mode 100644 index 364c92e..0000000 --- a/user/wm/hyprland/patches/waybarbatupdate.patch +++ /dev/null @@ -1,192 +0,0 @@ -From f4608b3e312448b37a8f9d6351154026e67c680a Mon Sep 17 00:00:00 2001 -From: schmop -Date: Thu, 25 Jul 2024 01:40:49 +0200 -Subject: [PATCH] Fix battery status changes not being detected - -Historically we listened to /sys/class/poewr_supply inotify events, -which does not seem to work anymore. -We switched now to udev netlink kernel events. ---- - include/modules/battery.hpp | 8 +++++-- - include/util/udev_deleter.hpp | 21 ++++++++++++++++++ - src/modules/battery.cpp | 40 +++++++++++++++++++--------------- - src/util/backlight_backend.cpp | 17 +-------------- - 4 files changed, 51 insertions(+), 35 deletions(-) - create mode 100644 include/util/udev_deleter.hpp - -diff --git a/include/modules/battery.hpp b/include/modules/battery.hpp -index 8e1a2ad2b..fc403be05 100644 ---- a/include/modules/battery.hpp -+++ b/include/modules/battery.hpp -@@ -5,8 +5,11 @@ - #include - #if defined(__linux__) - #include -+#include "util/udev_deleter.hpp" - #endif - -+#include -+ - #include - #include - #include -@@ -36,11 +39,12 @@ class Battery : public ALabel { - const std::string formatTimeRemaining(float hoursRemaining); - void setBarClass(std::string&); - -- int global_watch; - std::map batteries_; -+ std::unique_ptr udev_; -+ std::array poll_fds_; -+ std::unique_ptr mon_; - fs::path adapter_; - int battery_watch_fd_; -- int global_watch_fd_; - std::mutex battery_list_mutex_; - std::string old_status_; - bool warnFirstTime_{true}; -diff --git a/include/util/udev_deleter.hpp b/include/util/udev_deleter.hpp -new file mode 100644 -index 000000000..b2f1e538b ---- /dev/null -+++ b/include/util/udev_deleter.hpp -@@ -0,0 +1,21 @@ -+#pragma once -+ -+#include -+ -+namespace waybar::util { -+struct UdevDeleter { -+ void operator()(udev *ptr) const { udev_unref(ptr); } -+}; -+ -+struct UdevDeviceDeleter { -+ void operator()(udev_device *ptr) const { udev_device_unref(ptr); } -+}; -+ -+struct UdevEnumerateDeleter { -+ void operator()(udev_enumerate *ptr) const { udev_enumerate_unref(ptr); } -+}; -+ -+struct UdevMonitorDeleter { -+ void operator()(udev_monitor *ptr) const { udev_monitor_unref(ptr); } -+}; -+} // namespace waybar::util -\ No newline at end of file -diff --git a/src/modules/battery.cpp b/src/modules/battery.cpp -index d87cc6129..bad72e6b0 100644 ---- a/src/modules/battery.cpp -+++ b/src/modules/battery.cpp -@@ -5,6 +5,9 @@ - #include - #endif - #include -+#include -+#include -+#include - - #include - waybar::modules::Battery::Battery(const std::string& id, const Bar& bar, const Json::Value& config) -@@ -14,17 +17,18 @@ waybar::modules::Battery::Battery(const std::string& id, const Bar& bar, const J - if (battery_watch_fd_ == -1) { - throw std::runtime_error("Unable to listen batteries."); - } -- -- global_watch_fd_ = inotify_init1(IN_CLOEXEC); -- if (global_watch_fd_ == -1) { -- throw std::runtime_error("Unable to listen batteries."); -+ udev_ = std::unique_ptr(udev_new()); -+ if (udev_ == nullptr) { -+ throw std::runtime_error("udev_new failed"); - } -- -- // Watch the directory for any added or removed batteries -- global_watch = inotify_add_watch(global_watch_fd_, data_dir_.c_str(), IN_CREATE | IN_DELETE); -- if (global_watch < 0) { -- throw std::runtime_error("Could not watch for battery plug/unplug"); -+ mon_ = std::unique_ptr(udev_monitor_new_from_netlink(udev_.get(), "kernel")); -+ if (mon_ == nullptr) { -+ throw std::runtime_error("udev monitor new failed"); - } -+ if (udev_monitor_filter_add_match_subsystem_devtype(mon_.get(), "power_supply", nullptr) < 0) { -+ throw std::runtime_error("udev failed to add monitor filter"); -+ } -+ udev_monitor_enable_receiving(mon_.get()); - #endif - worker(); - } -@@ -33,11 +37,6 @@ waybar::modules::Battery::~Battery() { - #if defined(__linux__) - std::lock_guard guard(battery_list_mutex_); - -- if (global_watch >= 0) { -- inotify_rm_watch(global_watch_fd_, global_watch); -- } -- close(global_watch_fd_); -- - for (auto it = batteries_.cbegin(), next_it = it; it != batteries_.cend(); it = next_it) { - ++next_it; - auto watch_id = (*it).second; -@@ -74,12 +73,18 @@ void waybar::modules::Battery::worker() { - dp.emit(); - }; - thread_battery_update_ = [this] { -- struct inotify_event event = {0}; -- int nbytes = read(global_watch_fd_, &event, sizeof(event)); -- if (nbytes != sizeof(event) || event.mask & IN_IGNORED) { -+ poll_fds_[0].revents = 0; -+ poll_fds_[0].events = POLLIN; -+ poll_fds_[0].fd = udev_monitor_get_fd(mon_.get()); -+ int ret = poll(poll_fds_.data(), poll_fds_.size(), -1); -+ if (ret < 0) { - thread_.stop(); - return; - } -+ if ((poll_fds_[0].revents & POLLIN) != 0) { -+ signalfd_siginfo signal_info; -+ read(poll_fds_[0].fd, &signal_info, sizeof(signal_info)); -+ } - refreshBatteries(); - dp.emit(); - }; -@@ -668,6 +673,7 @@ auto waybar::modules::Battery::update() -> void { - status = getAdapterStatus(capacity); - } - auto status_pretty = status; -+ puts(status.c_str()); - // Transform to lowercase and replace space with dash - std::transform(status.begin(), status.end(), status.begin(), - [](char ch) { return ch == ' ' ? '-' : std::tolower(ch); }); -diff --git a/src/util/backlight_backend.cpp b/src/util/backlight_backend.cpp -index bb102cd93..df6afd564 100644 ---- a/src/util/backlight_backend.cpp -+++ b/src/util/backlight_backend.cpp -@@ -1,4 +1,5 @@ - #include "util/backlight_backend.hpp" -+#include "util/udev_deleter.hpp" - - #include - #include -@@ -29,22 +30,6 @@ class FileDescriptor { - int fd_; - }; - --struct UdevDeleter { -- void operator()(udev *ptr) { udev_unref(ptr); } --}; -- --struct UdevDeviceDeleter { -- void operator()(udev_device *ptr) { udev_device_unref(ptr); } --}; -- --struct UdevEnumerateDeleter { -- void operator()(udev_enumerate *ptr) { udev_enumerate_unref(ptr); } --}; -- --struct UdevMonitorDeleter { -- void operator()(udev_monitor *ptr) { udev_monitor_unref(ptr); } --}; -- - void check_eq(int rc, int expected, const char *message = "eq, rc was: ") { - if (rc != expected) { - throw std::runtime_error(fmt::format(fmt::runtime(message), rc)); diff --git a/user/wm/hyprland/patches/waybarpaupdate.patch b/user/wm/hyprland/patches/waybarpaupdate.patch deleted file mode 100644 index f1c22cd..0000000 --- a/user/wm/hyprland/patches/waybarpaupdate.patch +++ /dev/null @@ -1,71 +0,0 @@ -diff --git a/include/util/audio_backend.hpp b/include/util/audio_backend.hpp -index 2f53103e5..3737ae264 100644 ---- a/include/util/audio_backend.hpp -+++ b/include/util/audio_backend.hpp -@@ -38,6 +38,8 @@ class AudioBackend { - std::string desc_; - std::string monitor_; - std::string current_sink_name_; -+ std::string default_sink_name; -+ bool default_sink_running_; - bool current_sink_running_; - // SOURCE - uint32_t source_idx_{0}; -diff --git a/src/util/audio_backend.cpp b/src/util/audio_backend.cpp -index 3d90b6d5a..73aac148b 100644 ---- a/src/util/audio_backend.cpp -+++ b/src/util/audio_backend.cpp -@@ -1,9 +1,12 @@ - #include "util/audio_backend.hpp" - - #include -+#include - #include -+#include - #include - #include -+#include - - #include - #include -@@ -139,6 +142,10 @@ void AudioBackend::sinkInfoCb(pa_context * /*context*/, const pa_sink_info *i, i - void *data) { - if (i == nullptr) return; - -+ auto running = i->state == PA_SINK_RUNNING; -+ auto idle = i->state == PA_SINK_IDLE; -+ spdlog::trace("Sink name {} Running:[{}] Idle:[{}]", i->name, running, idle); -+ - auto *backend = static_cast(data); - - if (!backend->ignored_sinks_.empty()) { -@@ -155,11 +162,19 @@ void AudioBackend::sinkInfoCb(pa_context * /*context*/, const pa_sink_info *i, i - } - } - -+ backend->default_sink_running_ = backend->default_sink_name == i->name && -+ (i->state == PA_SINK_RUNNING || i->state == PA_SINK_IDLE); -+ -+ if (i->name != backend->default_sink_name && !backend->default_sink_running_) { -+ return; -+ } -+ - if (backend->current_sink_name_ == i->name) { -- backend->current_sink_running_ = i->state == PA_SINK_RUNNING; -+ backend->current_sink_running_ = (i->state == PA_SINK_RUNNING || i->state == PA_SINK_IDLE); - } - -- if (!backend->current_sink_running_ && i->state == PA_SINK_RUNNING) { -+ if (!backend->current_sink_running_ && -+ (i->state == PA_SINK_RUNNING || i->state == PA_SINK_IDLE)) { - backend->current_sink_name_ = i->name; - backend->current_sink_running_ = true; - } -@@ -207,5 +222,6 @@ void AudioBackend::sourceInfoCb(pa_context * /*context*/, const pa_source_info * - void AudioBackend::serverInfoCb(pa_context *context, const pa_server_info *i, void *data) { - auto *backend = static_cast(data); - backend->current_sink_name_ = i->default_sink_name; -+ backend->default_sink_name = i->default_sink_name; - backend->default_source_name_ = i->default_source_name; - - pa_context_get_sink_info_list(context, sinkInfoCb, data); diff --git a/user/wm/input/nihongo.nix b/user/wm/input/nihongo.nix deleted file mode 100644 index b496532..0000000 --- a/user/wm/input/nihongo.nix +++ /dev/null @@ -1,111 +0,0 @@ -{ pkgs, ... }: - -{ - i18n.inputMethod = { - enabled = "fcitx5"; - fcitx5.addons = with pkgs; [ - fcitx5-mozc - fcitx5-gtk - ]; - }; - home.file.".config/fcitx5/config".text = '' - [Hotkey] - # Enumerate when press trigger key repeatedly - EnumerateWithTriggerKeys=True - # Temporally switch between first and current Input Method - AltTriggerKeys= - # Enumerate Input Method Forward - EnumerateForwardKeys= - # Enumerate Input Method Backward - EnumerateBackwardKeys= - # Skip first input method while enumerating - EnumerateSkipFirst=False - # Toggle embedded preedit - TogglePreedit= - - [Hotkey/TriggerKeys] - 0=Super+comma - - [Hotkey/EnumerateGroupForwardKeys] - 0=Super+space - - [Hotkey/EnumerateGroupBackwardKeys] - 0=Shift+Super+space - - [Hotkey/ActivateKeys] - 0=Hangul_Hanja - - [Hotkey/DeactivateKeys] - 0=Hangul_Romaja - - [Hotkey/PrevPage] - 0=Up - - [Hotkey/NextPage] - 0=Down - - [Hotkey/PrevCandidate] - 0=Shift+Tab - - [Hotkey/NextCandidate] - 0=Tab - - [Behavior] - # Active By Default - ActiveByDefault=False - # Share Input State - ShareInputState=No - # Show preedit in application - PreeditEnabledByDefault=True - # Show Input Method Information when switch input method - ShowInputMethodInformation=True - # Show Input Method Information when changing focus - showInputMethodInformationWhenFocusIn=False - # Show compact input method information - CompactInputMethodInformation=True - # Show first input method information - ShowFirstInputMethodInformation=True - # Default page size - DefaultPageSize=5 - # Override Xkb Option - OverrideXkbOption=False - # Custom Xkb Option - CustomXkbOption= - # Force Enabled Addons - EnabledAddons= - # Force Disabled Addons - DisabledAddons= - # Preload input method to be used by default - PreloadInputMethod=True - # Allow input method in the password field - AllowInputMethodForPassword=False - # Show preedit text when typing password - ShowPreeditForPassword=False - # Interval of saving user data in minutes - AutoSavePeriod=30 - ''; -# home.file.".config/fcitx5/profile".text = '' -# [Groups/0] -# # Group Name -# Name=Default -# # Layout -# Default Layout=us -# # Default Input Method -# DefaultIM=mozc -# -# [Groups/0/Items/0] -# # Name -# Name=keyboard-us -# # Layout -# Layout= -# -# [Groups/0/Items/1] -# # Name -# Name=mozc -# # Layout -# Layout= -# -# [GroupOrder] -# 0=Default -# ''; -} From cd1d2d866b4a91a4bb06271fa35bae40c74250d2 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 12 Feb 2025 14:12:11 -0600 Subject: [PATCH 114/317] Major update to handle multiple systems --- flake.lock | 22 +- flake.nix | 2 + hosts/ori/README.org | 3 + hosts/ori/configuration.nix | 50 ++ hosts/ori/default.nix | 14 + hosts/ori/hardware-configuration.nix | 69 ++ hosts/ori/home.nix | 20 + hosts/polarias/README.org | 3 + hosts/polarias/configuration.nix | 49 ++ hosts/polarias/default.nix | 14 + hosts/polarias/hardware-configuration.nix | 103 +++ hosts/polarias/home.nix | 41 + hosts/snowfire/configuration.nix | 7 + hosts/snowfire/home.nix | 11 + hosts/stardust/README.org | 3 + hosts/stardust/configuration.nix | 52 ++ hosts/stardust/default.nix | 14 + hosts/stardust/hardware-configuration.nix | 41 + hosts/stardust/home.nix | 38 + hosts/zenith/README.org | 3 + hosts/zenith/configuration.nix | 49 ++ hosts/zenith/default.nix | 14 + hosts/zenith/hardware-configuration.nix | 86 +++ hosts/zenith/home.nix | 65 ++ modules/system/nix/default.nix | 28 +- modules/system/phoenix/default.nix | 15 +- modules/system/plasma/default.nix | 43 ++ modules/system/users/default.nix | 8 +- modules/user/browser/default.nix | 7 +- modules/user/editor/default.nix | 4 +- modules/user/git/git.nix | 4 +- modules/user/hyprland/default.nix | 715 ++++++++---------- modules/user/nix/default.nix | 28 +- modules/user/plasma/default.nix | 871 ++++++++++++++++++++++ 34 files changed, 2040 insertions(+), 456 deletions(-) create mode 100644 hosts/ori/README.org create mode 100644 hosts/ori/configuration.nix create mode 100644 hosts/ori/default.nix create mode 100644 hosts/ori/hardware-configuration.nix create mode 100644 hosts/ori/home.nix create mode 100644 hosts/polarias/README.org create mode 100644 hosts/polarias/configuration.nix create mode 100644 hosts/polarias/default.nix create mode 100644 hosts/polarias/hardware-configuration.nix create mode 100644 hosts/polarias/home.nix create mode 100644 hosts/stardust/README.org create mode 100644 hosts/stardust/configuration.nix create mode 100644 hosts/stardust/default.nix create mode 100644 hosts/stardust/hardware-configuration.nix create mode 100644 hosts/stardust/home.nix create mode 100644 hosts/zenith/README.org create mode 100644 hosts/zenith/configuration.nix create mode 100644 hosts/zenith/default.nix create mode 100644 hosts/zenith/hardware-configuration.nix create mode 100644 hosts/zenith/home.nix create mode 100644 modules/system/plasma/default.nix create mode 100644 modules/user/plasma/default.nix diff --git a/flake.lock b/flake.lock index 5c1f83e..816d0cb 100644 --- a/flake.lock +++ b/flake.lock @@ -846,18 +846,6 @@ } }, "nixpkgs_4": { - "locked": { - "lastModified": 0, - "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", - "path": "/nix/store/pgg4vm83q0kr4hxzcwhdgdiv2yfnh3dw-source", - "type": "path" - }, - "original": { - "id": "nixpkgs", - "type": "indirect" - } - }, - "nixpkgs_5": { "locked": { "lastModified": 1736798957, "narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=", @@ -950,11 +938,13 @@ }, "secrets": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { - "lastModified": 1739133600, - "narHash": "sha256-5xe63u5z/+yauwl/e++ZTDelVK0CBF32GborYfCuBl8=", + "lastModified": 1739390743, + "narHash": "sha256-Sl0NfkWUy2IzyXOCAzv58U3LjluVFJpWPhp/iTlbSdU=", "path": "/etc/nixos.secrets", "type": "path" }, @@ -975,7 +965,7 @@ "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "systems": "systems_4", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", diff --git a/flake.nix b/flake.nix index 947263f..0e5bad0 100644 --- a/flake.nix +++ b/flake.nix @@ -51,6 +51,7 @@ # host specific config { config.networking.hostName = host; } (./hosts + "/${host}") + (inputs.secrets.hostSecrets.${host}) # my modules ./modules/system @@ -123,6 +124,7 @@ secrets = { url = "path:/etc/nixos.secrets"; + inputs.nixpkgs.follows = "nixpkgs"; }; }; } diff --git a/hosts/ori/README.org b/hosts/ori/README.org new file mode 100644 index 0000000..556e203 --- /dev/null +++ b/hosts/ori/README.org @@ -0,0 +1,3 @@ +#+title: Just chillin' + +This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps! diff --git a/hosts/ori/configuration.nix b/hosts/ori/configuration.nix new file mode 100644 index 0000000..dfe3e96 --- /dev/null +++ b/hosts/ori/configuration.nix @@ -0,0 +1,50 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + systemSettings = { + # users + users = [ "emmet" ]; + adminUsers = [ "emmet" ]; + + # hardware + cachy.enable = true; + cachy.variant = "server"; + + virtualization = { + docker.enable = true; + }; + + # dotfiles + dotfilesDir = "/etc/nixos"; + + # security + security = { + automount.enable = false; + blocklist.enable = true; + doas.enable = true; + firejail.enable = false; # TODO setup firejail profiles + firewall.enable = true; + gpg.enable = true; + sshd.enable = true; + }; + + }; + + user.users.emmet.openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDaeejVJwUVrIZSo1isbu+gkQ7+8ftCgCsczy3OclkEVWHyRTqlG6yp74hr3j8ZNsOhov7c2Q6RqC8oy669hlxi/y9BsvtlI7sBr94oAKFOmkCS4RiK72ngJjBvI0vbk89wQQjmAd3r8B7ZcedpNOC8CkHu8SebKdYPRIUvAbPc3fTEt7DsJkazAepZCB8LEhUp57FAqQ/Ezlt3X/1uwNq5S0EbE9Zm+nUpEfSqR9apY2neKWLyGiCxpK3dzyNOuulCxvtVz+ie2sTk/6SxM+qWEoVVxhdwyxPihEjgC0EvtG0S5mVh5JmcjRkJOzzBHJuw+6r8yWn/AxGdIsoJ4rKNxH1XH1iLHgCraOLOUjUNlmejTcQPu6o92a79fdz2gCHT/BuIjfCW7MErAC3YSmF45TSur/kiWCBaTqYo06pgbQ3w1vKg7fievQlQzsutmg47RvJp6fb74yxuOdVg39cShQu/l8r6zqm21JAeUaaIp4P/0MrAIMOOVUhbK0QgsNElO4yn0ZKH8wGIF8xORh7ikxUIAyq8C41gjJiO2sAFJc3M8DhduQU3X0lHB7U0Qyu+8ZXn05+zdFPXJ73LKc7DCcLkppRXJsdHLSDEFdWqFnV7o08B4qZkPMT4pmvhwhY0Pf1fwavOqxuTstzw18gUGyQzl0foQi0Qrmdazsp2Qw== emmet@snowfire" + ]; + + environment.systemPackages = with pkgs; [ + rclone + rdiff-backup + rsnapshot + cryptsetup + gocryptfs + attic-client + ]; + + programs.fuse.userAllowOther = true; + }; + +} diff --git a/hosts/ori/default.nix b/hosts/ori/default.nix new file mode 100644 index 0000000..b29cc69 --- /dev/null +++ b/hosts/ori/default.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./configuration.nix + ./hardware-configuration.nix + ]; + + config = { + home-manager.users = builtins.listToAttrs + (map (user: { name = user; value = + ({ imports = [ ./home.nix ../../modules/user ]; });}) config.systemSettings.users); + }; +} diff --git a/hosts/ori/hardware-configuration.nix b/hosts/ori/hardware-configuration.nix new file mode 100644 index 0000000..c84667b --- /dev/null +++ b/hosts/ori/hardware-configuration.nix @@ -0,0 +1,69 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, inputs, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + services.fstrim.enable = true; + boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "ums_realtek" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/ea03d496-2769-485d-b5cb-de0b58cb698c"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/4F5E-11FB"; + fsType = "vfat"; + }; + + swapDevices = [ ]; + + services.btrfs.autoScrub = { + enable = true; + interval = "weekly"; + }; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.br-df7898ffaebc.useDHCP = lib.mkDefault true; + # networking.interfaces.br-e6c4f9058f19.useDHCP = lib.mkDefault true; + # networking.interfaces.docker0.useDHCP = lib.mkDefault true; + # networking.interfaces.eno1.useDHCP = lib.mkDefault true; + # networking.interfaces.veth00e4385.useDHCP = lib.mkDefault true; + # networking.interfaces.veth0814d46.useDHCP = lib.mkDefault true; + # networking.interfaces.veth329e18d.useDHCP = lib.mkDefault true; + # networking.interfaces.veth54f044d.useDHCP = lib.mkDefault true; + # networking.interfaces.veth71ad87e.useDHCP = lib.mkDefault true; + # networking.interfaces.veth8a14ed4.useDHCP = lib.mkDefault true; + # networking.interfaces.veth906e2ca.useDHCP = lib.mkDefault true; + # networking.interfaces.veth95a2121.useDHCP = lib.mkDefault true; + # networking.interfaces.veth96c8b25.useDHCP = lib.mkDefault true; + # networking.interfaces.veth97cb8cc.useDHCP = lib.mkDefault true; + # networking.interfaces.veth9f4b444.useDHCP = lib.mkDefault true; + # networking.interfaces.vethb88cfbb.useDHCP = lib.mkDefault true; + # networking.interfaces.vethc1707ca.useDHCP = lib.mkDefault true; + # networking.interfaces.vethec441e8.useDHCP = lib.mkDefault true; + # networking.interfaces.vethed69a4e.useDHCP = lib.mkDefault true; + # networking.interfaces.vethf0728b9.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + + # Enable OpenGL + hardware.opengl = { + enable = true; + }; + +} diff --git a/hosts/ori/home.nix b/hosts/ori/home.nix new file mode 100644 index 0000000..d1cc1db --- /dev/null +++ b/hosts/ori/home.nix @@ -0,0 +1,20 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + + userSettings = { + # setup + shell = { + enable = true; + apps.enable = true; + }; + xdg.enable = true; + + # programs + ranger.enable = true; + git.enable = true; + }; + + }; +} diff --git a/hosts/polarias/README.org b/hosts/polarias/README.org new file mode 100644 index 0000000..556e203 --- /dev/null +++ b/hosts/polarias/README.org @@ -0,0 +1,3 @@ +#+title: Just chillin' + +This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps! diff --git a/hosts/polarias/configuration.nix b/hosts/polarias/configuration.nix new file mode 100644 index 0000000..cc4f080 --- /dev/null +++ b/hosts/polarias/configuration.nix @@ -0,0 +1,49 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + systemSettings = { + # users + users = [ "emmet" ]; + adminUsers = [ "emmet" ]; + + # hardware + cachy.enable = true; + bluetooth.enable = true; + tlp.enable = true; + printing.enable = true; + + # software + flatpak.enable = false; + virtualization = { + docker.enable = true; + virtualMachines.enable = true; + }; + + # wm + hyprland.enable = true; + + # dotfiles + dotfilesDir = "/etc/nixos"; + + # security + security = { + automount.enable = true; + blocklist.enable = true; + doas.enable = true; + firejail.enable = false; # TODO setup firejail profiles + firewall.enable = true; + gpg.enable = true; + openvpn.enable = true; + sshd.enable = false; + }; + + # style + stylix = { + enable = true; + theme = "ayu-dark"; + }; + }; + }; + +} diff --git a/hosts/polarias/default.nix b/hosts/polarias/default.nix new file mode 100644 index 0000000..b29cc69 --- /dev/null +++ b/hosts/polarias/default.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./configuration.nix + ./hardware-configuration.nix + ]; + + config = { + home-manager.users = builtins.listToAttrs + (map (user: { name = user; value = + ({ imports = [ ./home.nix ../../modules/user ]; });}) config.systemSettings.users); + }; +} diff --git a/hosts/polarias/hardware-configuration.nix b/hosts/polarias/hardware-configuration.nix new file mode 100644 index 0000000..07a12df --- /dev/null +++ b/hosts/polarias/hardware-configuration.nix @@ -0,0 +1,103 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + services.fstrim.enable = true; + + services.xserver.videoDrivers = lib.mkDefault [ "modesetting" ]; + + hardware.graphics = { + enable = lib.mkDefault true; + enable32Bit = lib.mkDefault true; + }; + + # my stupid usb hub crashes systemct suspend half of the time now + # https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Sleep_hooks + systemd.services.root-suspend = { + enable = true; + description = "Root systemd suspend prehook"; + unitConfig = { + Description = "Root systemd suspend prehook"; + Before = "sleep.target"; + }; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.uhubctl}/bin/uhubctl -a off"; + }; + wantedBy = [ "sleep.target" ]; + }; + systemd.services.root-resume = { + enable = true; + description = "Root systemd suspend posthook"; + unitConfig = { + Description = "Root systemd suspend posthook"; + After = "suspend.target"; + }; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.uhubctl}/bin/uhubctl -a on"; + }; + wantedBy = [ "suspend.target" ]; + }; + + boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/3618968f-1717-4c8e-b0d8-2556d18d2c4b"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-06fa6e93-9bde-4703-830e-7ee1a7292a19".device = "/dev/disk/by-uuid/06fa6e93-9bde-4703-830e-7ee1a7292a19"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/E1BC-04BB"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/d52b7852-f35f-4325-9adc-24aa5d3da2a3"; + } + ]; + + services.pipewire.enable = lib.mkForce false; + hardware.pulseaudio.enable = true; + hardware.pulseaudio.daemon.config = { + default-sample-format = "float32ne"; + default-sample-rate = 48000; + alternate-sample-rate = 44100; + default-sample-channels = 2; + default-channel-map = "front-left,front-right"; + default-fragments = 2; + default-fragment-size-msec = 125; + resample-method = "speex-float-5"; + enable-lfe-remixing = "no"; + high-priority = "yes"; + nice-level = -11; + realtime-scheduling = "yes"; + realtime-priority = 9; + rlimit-rtprio = 9; + rlimit-rttime = -1; + daemonize = "no"; + }; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp4s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/polarias/home.nix b/hosts/polarias/home.nix new file mode 100644 index 0000000..84fc4f7 --- /dev/null +++ b/hosts/polarias/home.nix @@ -0,0 +1,41 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + + userSettings = { + # setup + shell = { + enable = true; + apps.enable = true; + extraApps.enable = true; + }; + xdg.enable = true; + + # programs + browser = "qutebrowser"; + brave.enable = true; + editor = "emacs"; + ranger.enable = true; + git.enable = true; + engineering.enable = true; + art.enable = true; + flatpak.enable = false; + godot.enable = true; + keepass.enable = true; + media.enable = true; + music.enable = true; + office.enable = true; + + # wm + hyprland.enable = true; + + # style + stylix.enable = true; + + # hardware + bluetooth.enable = true; + }; + + }; +} diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index d286b9a..551b7f1 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -45,6 +45,13 @@ theme = "io"; }; }; + + users.users.emmet.description = "Emmet"; + home-manager.users.emmet.userSettings = { + name = "Emmet"; + email = "emmet@librephoenix.com"; + }; + }; } diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index 612addd..596034f 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -40,5 +40,16 @@ # hardware bluetooth.enable = true; }; + + wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { + settings = { + monitor = [ + "eDP-1,1920x1080@300,900x1080,1" + "HDMI-A-1,1920x1080,1920x0,1" + "DP-1,1920x1080,0x0,1" + ]; + + }; + }; }; } diff --git a/hosts/stardust/README.org b/hosts/stardust/README.org new file mode 100644 index 0000000..556e203 --- /dev/null +++ b/hosts/stardust/README.org @@ -0,0 +1,3 @@ +#+title: Just chillin' + +This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps! diff --git a/hosts/stardust/configuration.nix b/hosts/stardust/configuration.nix new file mode 100644 index 0000000..b70af3f --- /dev/null +++ b/hosts/stardust/configuration.nix @@ -0,0 +1,52 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + systemSettings = { + # users + users = [ "corrina" ]; + adminUsers = [ "corrina" ]; + + # hardware + cachy.enable = true; + bluetooth.enable = true; + tlp.enable = true; + printing.enable = true; + + # software + flatpak.enable = false; + gaming.enable = true; + virtualization = { + docker.enable = true; + }; + + # wm + plasma.enable = true; + + # security + security = { + automount.enable = true; + blocklist.enable = true; + doas.enable = true; + firejail.enable = false; # TODO setup firejail profiles + firewall.enable = true; + gpg.enable = true; + openvpn.enable = true; + sshd.enable = false; + }; + + # style + stylix = { + enable = true; + theme = "eris"; + }; + }; + + users.users.corrina.description = "Corrina"; + home-manager.users.corrina.userSettings = { + name = "Corrina"; + }; + + }; + +} diff --git a/hosts/stardust/default.nix b/hosts/stardust/default.nix new file mode 100644 index 0000000..b29cc69 --- /dev/null +++ b/hosts/stardust/default.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./configuration.nix + ./hardware-configuration.nix + ]; + + config = { + home-manager.users = builtins.listToAttrs + (map (user: { name = user; value = + ({ imports = [ ./home.nix ../../modules/user ]; });}) config.systemSettings.users); + }; +} diff --git a/hosts/stardust/hardware-configuration.nix b/hosts/stardust/hardware-configuration.nix new file mode 100644 index 0000000..4293d5b --- /dev/null +++ b/hosts/stardust/hardware-configuration.nix @@ -0,0 +1,41 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/3d07095a-0dc5-4a51-99be-592352b5755c"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-cc9ec6bd-3b81-47ad-b289-4c56da1fc791".device = "/dev/disk/by-uuid/cc9ec6bd-3b81-47ad-b289-4c56da1fc791"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/5179-698C"; + fsType = "vfat"; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; + # networking.interfaces.wwan0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/stardust/home.nix b/hosts/stardust/home.nix new file mode 100644 index 0000000..e882522 --- /dev/null +++ b/hosts/stardust/home.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + + userSettings = { + # setup + shell = { + enable = true; + apps.enable = true; + extraApps.enable = true; + }; + xdg.enable = true; + + # programs + browser = "brave"; + editor = "kate"; + ranger.enable = true; + git.enable = true; + art.enable = true; + flatpak.enable = false; + godot.enable = true; + keepass.enable = true; + media.enable = true; + office.enable = true; + + # wm + plasma.enable = true; + + # style + stylix.enable = true; + + # hardware + bluetooth.enable = true; + }; + + }; +} diff --git a/hosts/zenith/README.org b/hosts/zenith/README.org new file mode 100644 index 0000000..556e203 --- /dev/null +++ b/hosts/zenith/README.org @@ -0,0 +1,3 @@ +#+title: Just chillin' + +This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps! diff --git a/hosts/zenith/configuration.nix b/hosts/zenith/configuration.nix new file mode 100644 index 0000000..9c35ae7 --- /dev/null +++ b/hosts/zenith/configuration.nix @@ -0,0 +1,49 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + systemSettings = { + # users + users = [ "emmet" ]; + adminUsers = [ "emmet" ]; + + # hardware + cachy.enable = true; + bluetooth.enable = true; + tlp.enable = true; + printing.enable = true; + + # software + flatpak.enable = false; + virtualization = { + docker.enable = true; + virtualMachines.enable = true; + }; + + # wm + hyprland.enable = true; + + # dotfiles + dotfilesDir = "/etc/nixos"; + + # security + security = { + automount.enable = true; + blocklist.enable = true; + doas.enable = true; + firejail.enable = false; # TODO setup firejail profiles + firewall.enable = true; + gpg.enable = true; + openvpn.enable = true; + sshd.enable = false; + }; + + # style + stylix = { + enable = true; + theme = "alph"; + }; + }; + }; + +} diff --git a/hosts/zenith/default.nix b/hosts/zenith/default.nix new file mode 100644 index 0000000..b29cc69 --- /dev/null +++ b/hosts/zenith/default.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./configuration.nix + ./hardware-configuration.nix + ]; + + config = { + home-manager.users = builtins.listToAttrs + (map (user: { name = user; value = + ({ imports = [ ./home.nix ../../modules/user ]; });}) config.systemSettings.users); + }; +} diff --git a/hosts/zenith/hardware-configuration.nix b/hosts/zenith/hardware-configuration.nix new file mode 100644 index 0000000..1a27888 --- /dev/null +++ b/hosts/zenith/hardware-configuration.nix @@ -0,0 +1,86 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, inputs, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + services.fstrim.enable = true; + + services.xserver.videoDrivers = lib.mkDefault [ "modesetting" ]; + + hardware.graphics = { + enable = lib.mkDefault true; + enable32Bit = lib.mkDefault true; + }; + + boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "ahci" "nvme" "usbhid" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ]; + + # my stupid usb hub crashes systemct suspend half of the time now + # https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Sleep_hooks + systemd.services.root-suspend = { + enable = true; + description = "Root systemd suspend prehook"; + unitConfig = { + Description = "Root systemd suspend prehook"; + Before = "sleep.target"; + }; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.uhubctl}/bin/uhubctl -a off"; + }; + wantedBy = [ "sleep.target" ]; + }; + systemd.services.root-resume = { + enable = true; + description = "Root systemd suspend posthook"; + unitConfig = { + Description = "Root systemd suspend posthook"; + After = "suspend.target"; + }; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.uhubctl}/bin/uhubctl -a on"; + }; + wantedBy = [ "suspend.target" ]; + }; + + services.btrfs.autoScrub = { + enable = true; + interval = "weekly"; + }; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/ca98a0cc-4a50-4e28-84e5-0dddcbfea155"; + fsType = "btrfs"; + options = [ "noatime,compress-force=zstd:2,discard=async,commit=120,clear_cache,space_cache=v2,subvol=@" ]; + }; + + boot.loader.efi.efiSysMountPoint = "/boot"; + + boot.initrd.luks.devices."luks-9c74f9e5-41c3-4ba6-8a87-059dbcd4e2b3".device = "/dev/disk/by-uuid/9c74f9e5-41c3-4ba6-8a87-059dbcd4e2b3"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/4898-D64F"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix new file mode 100644 index 0000000..8de6bcb --- /dev/null +++ b/hosts/zenith/home.nix @@ -0,0 +1,65 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + + userSettings = { + # setup + shell = { + enable = true; + apps.enable = true; + }; + xdg.enable = true; + + # programs + browser = "qutebrowser"; + brave.enable = true; + editor = "emacs"; + ranger.enable = true; + git.enable = true; + engineering.enable = true; + art.enable = true; + flatpak.enable = false; + godot.enable = true; + keepass.enable = true; + media.enable = true; + music.enable = true; + office.enable = true; + recording.enable = true; + virtualization = { + virtualMachines.enable = true; + }; + + # wm + hyprland.enable = true; + + # style + stylix.enable = true; + + # hardware + bluetooth.enable = true; + }; + + wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { + settings = { + bind = [ + ''SUPER,E,exec,if hyprctl clients | grep qutegmail; then echo "scratch_mail respawn not needed"; else qutebrowser --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag num-raster-threads=4 -B ~/.browser/Teaching :'set input.mode_override passthrough -u mail.google.com' :'set window.title_format qutegmail' :'set tabs.show never' :'set statusbar.show never' https://mail.google.com; fi'' + "SUPER,E,togglespecialworkspace,scratch_email" + ]; + + windowrulev2 = [ + "float,title:^(qutegmail)$" + "size 80% 85%,title:^(qutegmail)$" + "workspace special:scratch_email ,title:^(qutegmail)$" + "center,title:^(qutegmail)$" + ]; + + monitor = [ + "eDP-1,1920x1080,1920x0,1" + "HDMI-A-1,1920x1080,0x0,1" + ]; + + }; + }; + }; +} diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index a17e1de..c02682f 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -1,26 +1,20 @@ { config, lib, pkgs, inputs, ... }: -let - caches = import inputs.secrets.caches; -in { +{ config = { nix = { package = pkgs.nix; settings = { - substituters = - (lib.optionals (caches ? urls) caches.urls) ++ - [ - "https://cache.nixos.org" - "https://hyprland.cachix.org" - "https://nix-community.cachix.org" - ]; - trusted-public-keys = - (lib.optionals (caches ? publicKeys) caches.publicKeys) ++ - [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - ]; + substituters = [ + "https://cache.nixos.org" + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; trusted-users = config.systemSettings.adminUsers ++ [ "@wheel" ]; auto-optimise-store = true; download-buffer-size = 500000000; diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index c7ac889..4329ffa 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -2,10 +2,17 @@ { options = { - systemSettings.dotfilesDir = lib.mkOption { - default = "/etc/nixos"; - description = "Absolute path to the dotfiles directory"; - type = lib.types.path; + systemSettings = { + dotfilesDir = lib.mkOption { + default = "/etc/nixos"; + description = "Absolute path to the dotfiles directory"; + type = lib.types.path; + }; + secretsFlakeDir = lib.mkOption { + default = "/etc/nixos.secrets"; + description = "Absolute path to my secrets flake"; + type = lib.types.path; + }; }; }; # TODO disabled for debugging diff --git a/modules/system/plasma/default.nix b/modules/system/plasma/default.nix new file mode 100644 index 0000000..48997bb --- /dev/null +++ b/modules/system/plasma/default.nix @@ -0,0 +1,43 @@ +{ config, lib, pkgs, ...}: + +let + cfg = config.systemSettings.plasma; +in { + options = { + systemSettings.plasma = { + enable = lib.mkEnableOption "Enable plasma"; + }; + }; + + config = lib.mkIf cfg.enable { + services.xserver.enable = true; + services.xserver = { + layout = "us"; + xkbVariant = ""; + xkbOptions = "caps:escape"; + }; + services.xserver.displayManager.sddm.enable = true; + services.xserver.displayManager.sddm.wayland.enable = true; + services.xserver.desktopManager.plasma6.enable = true; + + + services.printing.enable = true; + + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + environment.systemPackages = with pkgs; [ + kdePackages.kate + kdePackages.dolphin + ]; + + virtualisation.waydroid.enable = true; + services.avahi.nssmdns.enable = true; + }; +} diff --git a/modules/system/users/default.nix b/modules/system/users/default.nix index 41a8088..6cfdd6c 100644 --- a/modules/system/users/default.nix +++ b/modules/system/users/default.nix @@ -1,7 +1,6 @@ { config, lib, inputs, ... }: -let - userInfo = import inputs.secrets.userInfo; -in { + +{ options = { systemSettings = { users = lib.mkOption { @@ -20,7 +19,6 @@ in { (map (user: { name = user; value = { - description = userInfo.${user}.name; isNormalUser = true; extraGroups = [ "networkmanager" "input" "dialout" "video" "render" ] ++ (lib.optionals (lib.any (x: x == user) config.systemSettings.adminUsers) [ "wheel" ]); createHome = true; @@ -33,8 +31,6 @@ in { value = { home.username = user; home.homeDirectory = "/home/"+user; - userSettings.name = lib.mkIf (userInfo.${user} ? name) userInfo.${user}.name; - userSettings.email = lib.mkIf (userInfo.${user} ? email ) userInfo.${user}.email; }; }) config.systemSettings.users); }; diff --git a/modules/user/browser/default.nix b/modules/user/browser/default.nix index f15343a..53913e4 100644 --- a/modules/user/browser/default.nix +++ b/modules/user/browser/default.nix @@ -5,12 +5,12 @@ let in { options = { userSettings.browser = lib.mkOption { - default = "brave"; + default = null; description = "Default browser"; - type = lib.types.enum [ "brave" "qutebrowser" "librewolf" ]; + type = lib.types.enum [ "brave" "qutebrowser" "librewolf" null ]; }; userSettings.spawnBrowser = lib.mkOption { - default = "brave"; + default = ""; description = "Default browser spawn command"; type = lib.types.str; }; @@ -25,6 +25,7 @@ in { (lib.mkIf ((browser == "brave") || (browser == "librewolf")) browser) (lib.mkIf (!(config.userSettings.hyprland.hyprprofiles.enable) && (browser == "qutebrowser")) "qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4") (lib.mkIf config.userSettings.hyprland.hyprprofiles.enable "qutebrowser-hyprprofile") + (lib.mkIf (browser == null) "") ]; }; } diff --git a/modules/user/editor/default.nix b/modules/user/editor/default.nix index c8223af..3aa64c2 100644 --- a/modules/user/editor/default.nix +++ b/modules/user/editor/default.nix @@ -8,7 +8,7 @@ in { userSettings.editor = lib.mkOption { default = "emacs"; description = "Default editor"; - type = lib.types.enum [ "emacs" ]; + type = lib.types.enum [ "emacs" "kate" ]; # TODO add more editors #type = lib.types.enum [ "emacs" "vim" "nvim" "neovide" "nano" "micro" "vscodium" "kate" "pulsar" ]; }; @@ -20,6 +20,8 @@ in { config = { userSettings.emacs.enable = lib.mkIf (config.userSettings.editor == "emacs") true; + home.packages = with pkgs; + lib.optionals (editor == "kate") [ kdePackages.kate]; userSettings.spawnEditor = lib.mkMerge [ (lib.mkIf (editor == "emacs") "emacsclient -c -a 'emacs'") (lib.mkIf (editor == "neovide") "neovide -- --listen /tmp/nvimsocket") diff --git a/modules/user/git/git.nix b/modules/user/git/git.nix index e8b723c..58ce7a1 100644 --- a/modules/user/git/git.nix +++ b/modules/user/git/git.nix @@ -16,7 +16,9 @@ in { programs.git.userEmail = config.userSettings.email; programs.git.extraConfig = { init.defaultBranch = "main"; - safe.directory = [ osConfig.systemSettings.dotfilesDir (config.home.homeDirectory + "/.cache/nix/tarball-cache") ]; + safe.directory = [ osConfig.systemSettings.dotfilesDir + osConfig.systemSettings.secretsFlakeDir + (config.home.homeDirectory + "/.cache/nix/tarball-cache") ]; }; }; } diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 7e3bcb2..47d0b18 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -50,382 +50,322 @@ in enable = true; package = inputs.hyprland.packages.${pkgs.system}.hyprland; plugins = [ ]; - settings = { }; + settings = { + exec-once = [ + "hyprctl setcursor ${config.gtk.cursorTheme.name} ${builtins.toString config.gtk.cursorTheme.size}" + "hyprpaper" + "eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2" + "hypridle" + "hyprland-monitor-attached ~/.local/bin/eww-reload-bars.sh" + "iio-hyprland" + "hyprprofile Default" + "ydotoold" + "sleep 10 && nextcloud" + "sleep 13 && caffeine" + "nm-applet" + "blueman-applet" + "GOMAXPROCS=1 syncthing --no-browser" + "STEAM_FRAME_FORCE_CLOSE=1 steam -silent" + "protonmail-bridge --noninteractive" + "sleep 5 && libinput-gestures" + "obs-notification-mute-daemon" + "alacritty --class scratch_term" + "kitty --class scratch_ranger -e ranger" + "alacritty --class scratch_numbat -e numbat" + "kitty --class scratch_music -e ncmpcpp" + "alacritty --class scratch_btm -e btm" + "element-desktop" + ]; + + general = { + layout = "master"; + border_size = 5; + "col.active_border" = "0xff${config.lib.stylix.colors.base08} 0xff${config.lib.stylix.colors.base09} 0xff${config.lib.stylix.colors.base0A} 0xff${config.lib.stylix.colors.base0B} 0xff${config.lib.stylix.colors.base0C} 0xff${config.lib.stylix.colors.base0D} 0xff${config.lib.stylix.colors.base0E} 0xff${config.lib.stylix.colors.base0F} 270deg"; + "col.inactive_border" = "0xff${config.lib.stylix.colors.base02}"; + resize_on_border = true; + gaps_in = 7; + gaps_out = 7; + }; + + decoration = { + rounding = 8; + dim_special = 0.0; + blur = { + enabled = true; + size = 5; + passes = 2; + ignore_opacity = true; + contrast = 1.17; + brightness = (if (config.stylix.polarity == "dark") then "0.65" else "1.45"); + xray = true; + special = true; + popups = true; + }; + }; + + cursor = { + no_warps = false; + inactive_timeout = 30; + }; + + misc = { + disable_hyprland_logo = true; + mouse_move_enables_dpms = true; + enable_swallow = true; + swallow_regex = "(scratch_term)|(Alacritty)|(kitty)"; + font_family = font; + }; + + bezier = [ + "wind, 0.05, 0.9, 0.1, 1.05" + "winIn, 0.1, 1.1, 0.1, 1.0" + "winOut, 0.3, -0.3, 0, 1" + "liner, 1, 1, 1, 1" + "linear, 0.0, 0.0, 1.0, 1.0" + ]; + + animations = { + enabled = "yes"; + animation = [ + "windowsIn, 1, 6, winIn, popin" + "windowsOut, 1, 5, winOut, popin" + "windowsMove, 1, 5, wind, slide" + "border, 1, 10, default" + "borderangle, 1, 100, linear, loop" + "fade, 1, 10, default" + "workspaces, 1, 5, wind" + "windows, 1, 6, wind, slide" + "specialWorkspace, 1, 6, default, slidefadevert -50%" + ]; + }; + + input = { + kb_layout = "us"; + kb_options = "caps:escape"; + repeat_delay = 450; + repeat_rate = 50; + accel_profile = "adaptive"; + follow_mouse = 2; + float_switch_override_focus = 0; + }; + + binds = { + movefocus_cycles_fullscreen = false; + }; + + bind = [ + "SUPER,code:9,exec,nwggrid-wrapper" + "SUPER,code:66,exec,nwggrid-wrapper" + "SUPER,SPACE,fullscreen,1" + "SUPERSHIFT,F,fullscreen,0" + "SUPER,Y,workspaceopt,allfloat" + "ALT,TAB,cyclenext" + "ALT,TAB,bringactivetotop" + "ALTSHIFT,TAB,cyclenext,prev" + "ALTSHIFT,TAB,bringactivetotop" + ''SUPER,V,exec,wl-copy $(wl-paste | tr "\n" " ")'' + "SUPERSHIFT,T,exec,screenshot-ocr" + "CTRLALT,Delete,exec,hyprctl kill" + "SUPERSHIFT,K,exec,hyprctl kill" + ",code:172,exec,mpc toggle" + ",code:208,exec,mpc toggle" + ",code:209,exec,mpc toggle" + ",code:174,exec,mpc stop" + ",code:171,exec,mpc next" + ",code:173,exec,mpc prev" + "SUPER,R,pass,^(com\.obsproject\.Studio)$" + "SUPERSHIFT,R,pass,^(com\.obsproject\.Studio)$" + "SUPER,RETURN,exec,${term}" + "SUPERSHIFT,RETURN,exec,${term} --class float_term" + "SUPER,A,exec,${spawnEditor}" + "SUPER,S,exec,${spawnBrowser}" + "SUPERCTRL,S,exec,container-open" + "SUPERCTRL,P,pin" + "SUPER,code:47,exec,fuzzel" + "SUPER,X,exec,fnottctl dismiss" + "SUPERSHIFT,X,exec,fnottctl dismiss all" + "SUPER,Q,killactive" + "SUPERSHIFT,Q,exit" + "SUPER,T,togglefloating" + ",code:148,exec,${term} -e numbat" + '',code:107,exec,grim -g "$(slurp)"'' + ''SHIFT,code:107,exec,grim -g "$(slurp -o)'' + "SUPER,code:107,exec,grim" + ''CTRL,code:107,exec,grim -g "$(slurp)" - | wl-copy'' + ''SHIFTCTRL,code:107,exec,grim -g "$(slurp -o)" - | wl-copy'' + "SUPERCTRL,code:107,exec,grim - | wl-copy" + ",code:122,exec,swayosd-client --output-volume lower" + ",code:123,exec,swayosd-client --output-volume raise" + ",code:121,exec,swayosd-client --output-volume mute-toggle" + ",code:256,exec,swayosd-client --output-volume mute-toggle" + "SHIFT,code:122,exec,swayosd-client --output-volume lower" + "SHIFT,code:123,exec,swayosd-client --output-volume raise" + ",code:232,exec,swayosd-client --brightness lower" + ",code:233,exec,swayosd-client --brightness raise" + ",code:237,exec,brightnessctl --device='asus::kbd_backlight' set 1-" + ",code:238,exec,brightnessctl --device='asus::kbd_backlight' set +1" + ",code:255,exec,airplane-mode" + "SUPER,C,exec,wl-copy $(hyprpicker)" + "SUPERSHIFT,S,exec,systemctl suspend" + "SUPERCTRL,L,exec,loginctl lock-session" + "SUPER,H,movefocus,l" + "SUPER,J,movefocus,d" + "SUPER,K,movefocus,u" + "SUPER,L,movefocus,r" + "SUPERSHIFT,H,movewindow,l" + "SUPERSHIFT,J,movewindow,d" + "SUPERSHIFT,K,movewindow,u" + "SUPERSHIFT,L,movewindow,r" + "SUPER,1,focusworkspaceoncurrentmonitor,1" + "SUPER,2,focusworkspaceoncurrentmonitor,2" + "SUPER,3,focusworkspaceoncurrentmonitor,3" + "SUPER,4,focusworkspaceoncurrentmonitor,4" + "SUPER,5,focusworkspaceoncurrentmonitor,5" + "SUPER,6,focusworkspaceoncurrentmonitor,6" + "SUPER,7,focusworkspaceoncurrentmonitor,7" + "SUPER,8,focusworkspaceoncurrentmonitor,8" + "SUPER,9,focusworkspaceoncurrentmonitor,9" + "SUPERCTRL,right,exec,hyprnome" + "SUPERCTRL,left,exec,hyprnome --previous" + "SUPERSHIFT,right,exec,hyprnome --move" + "SUPERSHIFT,left,exec,hyprnome --previous --move" + "SUPERSHIFT,1,movetoworkspace,1" + "SUPERSHIFT,2,movetoworkspace,2" + "SUPERSHIFT,3,movetoworkspace,3" + "SUPERSHIFT,4,movetoworkspace,4" + "SUPERSHIFT,5,movetoworkspace,5" + "SUPERSHIFT,6,movetoworkspace,6" + "SUPERSHIFT,7,movetoworkspace,7" + "SUPERSHIFT,8,movetoworkspace,8" + "SUPERSHIFT,9,movetoworkspace,9" + ''SUPER,Z,exec,if hyprctl clients | grep scratch_term; then echo "scratch_term respawn not needed"; else alacritty --class scratch_term; fi'' + "SUPER,Z,togglespecialworkspace,scratch_term" + ''SUPER,F,exec,if hyprctl clients | grep scratch_ranger; then echo "scratch_ranger respawn not needed"; else kitty --class scratch_ranger -e ranger; fi'' + "SUPER,F,togglespecialworkspace,scratch_ranger" + ''SUPER,N,exec,if hyprctl clients | grep scratch_numbat; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_numbat -e numbat; fi'' + "SUPER,N,togglespecialworkspace,scratch_numbat" + ''SUPER,M,exec,if hyprctl clients | grep scratch_music; then echo "scratch_music respawn not needed"; else kitty --class scratch_music -e ncmpcpp; fi'' + "SUPER,M,togglespecialworkspace,scratch_music" + ''SUPER,B,exec,if hyprctl clients | grep scratch_btm; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_btm -e btm; fi'' + "SUPER,B,togglespecialworkspace,scratch_btm" + ''SUPER,D,exec,if hyprctl clients | grep Element; then echo "scratch_ranger respawn not needed"; else element-desktop; fi'' + "SUPER,D,togglespecialworkspace,scratch_element" + ''SUPER,equal, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 + 0.5}')"'' + ''SUPER,minus, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 - 0.5}')"'' + "SUPER,I,exec,networkmanager_dmenu" + "SUPER,P,exec,keepmenu" + "SUPERSHIFT,P,exec,hyprprofile-dmenu" + "SUPERCTRL,R,exec,phoenix refresh" + ]; + + bindm = [ + "SUPER,mouse:272,movewindow" + "SUPER,mouse:273,resizewindow" + ]; + + bindl = [ + ",switch:on:Lid Switch,exec,loginctl lock-session" + ]; + + windowrulev2 = [ + "float,class:^(scratch_term)$" + "size 80% 85%,class:^(scratch_term)$" + "workspace special:scratch_term silent ,class:^(scratch_term)$" + "center,class:^(scratch_term)$" + "float,class:^(float_term)$" + "center,class:^(float_term)$" + "float,class:^(scratch_ranger)$" + "size 80% 85%,class:^(scratch_ranger)$" + "workspace special:scratch_ranger silent,class:^(scratch_ranger)$" + "center,class:^(scratch_ranger)$" + "float,class:^(scratch_numbat)$" + "size 80% 85%,class:^(scratch_numbat)$" + "workspace special:scratch_numbat silent,class:^(scratch_numbat)$" + "center,class:^(scratch_numbat)$" + "float,class:^(scratch_btm)$" + "size 80% 85%,class:^(scratch_btm)$" + "workspace special:scratch_btm silent,class:^(scratch_btm)$" + "center,class:^(scratch_btm)$" + "float,class:^(Element)$" + "size 85% 90%,class:^(Element)$" + "workspace special:scratch_element silent,class:^(Element)$" + "center,class:^(Element)$" + "float,class:^(scratch_music)$" + "size 80% 85%,class:^(scratch_music)$" + "workspace special:scratch_music silent,class:^(scratch_music)$" + "center,class:^(scratch_music)$" + "float,title:^(Save to Disk)$" + "size 70% 75%,title:^(Save to Disk)$" + "center,title:^(Save to Disk)$" + "opacity 0.80,class:^(org.pulseaudio.pavucontrol)$" + "float,class:^(pokefinder)$" + "float,class:^(Waydroid)$" + "float,title:(Blender Render)" + "size 86% 85%,title:(Blender Render)" + "center,title:(Blender Render)" + "float,class:^(org.inkscape.Inkscape)$" + "float,class:^(pinta)$" + "float,class:^(krita)$" + "float,class:^(Gimp)" + "float,class:^(Gimp)" + "float,class:^(libresprite)$" + "float,title:(Open Images)" + "size 86% 85%,title:(Open Images)" + "center,title:(Open Images)" + "float,title:(Create new document)" + "size 86% 85%,title:(Create new document)" + "center,title:(Create new document)" + "size 86% 85%,title:(Create new document)" + "float,title:(Create New Node)" + "size 70% 70%,title:(Create New Node)" + "center,title:(Create New Node)" + "float,title:(Resource)" + "size 70% 70%,title:(Resource)" + "center,title:(Resource)" + "tile,title:(Godot)" + "opacity 0.80,title:ORUI" + "opacity 1.0,class:^(org.qutebrowser.qutebrowser),fullscreen:1" + "opacity 0.85,class:^(Element)$" + "opacity 0.85,class:^(Logseq)$" + "opacity 1.0,class:^(Brave-browser),fullscreen:1" + "opacity 1.0,class:^(librewolf),fullscreen:1" + "opacity 0.85,title:^(My Local Dashboard Awesome Homepage - qutebrowser)$" + "opacity 0.85,title:\[.*\] - My Local Dashboard Awesome Homepage" + "opacity 0.85,class:^(org.keepassxc.KeePassXC)$" + "opacity 0.85,class:^(org.gnome.Nautilus)$" + "opacity 0.85,class:^(org.gnome.Nautilus)$" + "opacity 0.85,initialTitle:^(Notes)$,initialClass:^(Brave-browser)$" + ]; + + layerrule = [ + "blur,waybar" + "blur,eww" + "blur,launcher # fuzzel" + "blur,~nwggrid" + "blur,gtk-layer-shell" + "xray 1,waybar" + "xray 1,eww" + "xray 1,~nwggrid" + "xray 1,gtk-layer-shell" + "ignorezero, gtk-layer-shell" + "ignorezero, eww" + "animation fade,~nwggrid" + "animation popin 80%, eww" + ]; + + blurls = [ + "waybar" + "launcher # fuzzel" + "~nwggrid" + "gtk-layer-shell" + ]; + + xwayland = { + force_zero_scaling = true; + }; + + }; systemd.variables = ["--all"]; - extraConfig = '' - - exec-once = hyprctl setcursor ${config.gtk.cursorTheme.name} ${builtins.toString config.gtk.cursorTheme.size} - exec-once = sleep 10 && nextcloud - exec-once = iio-hyprland - exec-once = hyprprofile Default - - exec-once = ydotoold - exec-once = sleep 10 && caffeine - #exec-once = STEAM_FRAME_FORCE_CLOSE=1 steam -silent - exec-once = nm-applet - exec-once = blueman-applet - exec-once = GOMAXPROCS=1 syncthing --no-browser - exec-once = protonmail-bridge --noninteractive - exec-once = eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2 - exec-once = hyprland-monitor-attached ~/.local/bin/eww-reload-bars.sh - exec-once = emacs --daemon - - exec-once = hypridle - exec-once = sleep 5 && libinput-gestures - exec-once = obs-notification-mute-daemon - - exec-once = hyprpaper - - bezier = wind, 0.05, 0.9, 0.1, 1.05 - bezier = winIn, 0.1, 1.1, 0.1, 1.0 - bezier = winOut, 0.3, -0.3, 0, 1 - bezier = liner, 1, 1, 1, 1 - bezier = linear, 0.0, 0.0, 1.0, 1.0 - - animations { - enabled = yes - animation = windowsIn, 1, 6, winIn, popin - animation = windowsOut, 1, 5, winOut, popin - animation = windowsMove, 1, 5, wind, slide - animation = border, 1, 10, default - animation = borderangle, 1, 100, linear, loop - animation = fade, 1, 10, default - animation = workspaces, 1, 5, wind - animation = windows, 1, 6, wind, slide - animation = specialWorkspace, 1, 6, default, slidefadevert -50% - } - - general { - layout = master - border_size = 5 - col.active_border = 0xff'' + config.lib.stylix.colors.base08 + " " + ''0xff'' + config.lib.stylix.colors.base09 + " " + ''0xff'' + config.lib.stylix.colors.base0A + " " + ''0xff'' + config.lib.stylix.colors.base0B + " " + ''0xff'' + config.lib.stylix.colors.base0C + " " + ''0xff'' + config.lib.stylix.colors.base0D + " " + ''0xff'' + config.lib.stylix.colors.base0E + " " + ''0xff'' + config.lib.stylix.colors.base0F + " " + ''270deg - - col.inactive_border = 0xff'' + config.lib.stylix.colors.base02 + '' - - resize_on_border = true - gaps_in = 7 - gaps_out = 7 - } - - cursor { - no_warps = false - inactive_timeout = 30 - } - - bind=SUPER,code:9,exec,nwggrid-wrapper - bind=SUPER,code:66,exec,nwggrid-wrapper - bind=SUPER,SPACE,fullscreen,1 - bind=SUPERSHIFT,F,fullscreen,0 - bind=SUPER,Y,workspaceopt,allfloat - bind=ALT,TAB,cyclenext - bind=ALT,TAB,bringactivetotop - bind=ALTSHIFT,TAB,cyclenext,prev - bind=ALTSHIFT,TAB,bringactivetotop - bind=SUPER,V,exec,wl-copy $(wl-paste | tr '\n' ' ') - bind=SUPERSHIFT,T,exec,screenshot-ocr - bind=CTRLALT,Delete,exec,hyprctl kill - bind=SUPERSHIFT,K,exec,hyprctl kill - - bind=,code:172,exec,mpc toggle - bind=,code:208,exec,mpc toggle - bind=,code:209,exec,mpc toggle - bind=,code:174,exec,mpc stop - bind=,code:171,exec,mpc next - bind=,code:173,exec,mpc prev - - bind = SUPER,R,pass,^(com\.obsproject\.Studio)$ - bind = SUPERSHIFT,R,pass,^(com\.obsproject\.Studio)$ - - bind=SUPER,RETURN,exec,'' + term + '' - - bind=SUPERSHIFT,RETURN,exec,'' + term + " " + '' --class float_term - - bind=SUPER,A,exec,'' + spawnEditor + '' - - bind=SUPER,S,exec,'' + spawnBrowser + '' - - bind=SUPERCTRL,S,exec,container-open # qutebrowser only - - bind=SUPERCTRL,P,pin - - bind=SUPER,code:47,exec,fuzzel - bind=SUPER,X,exec,fnottctl dismiss - bind=SUPERSHIFT,X,exec,fnottctl dismiss all - bind=SUPER,Q,killactive - bind=SUPERSHIFT,Q,exit - bindm=SUPER,mouse:272,movewindow - bindm=SUPER,mouse:273,resizewindow - bind=SUPER,T,togglefloating - bind=,code:148,exec,''+ term + " "+''-e numbat - - bind=,code:107,exec,grim -g "$(slurp)" - bind=SHIFT,code:107,exec,grim -g "$(slurp -o)" - bind=SUPER,code:107,exec,grim - bind=CTRL,code:107,exec,grim -g "$(slurp)" - | wl-copy - bind=SHIFTCTRL,code:107,exec,grim -g "$(slurp -o)" - | wl-copy - bind=SUPERCTRL,code:107,exec,grim - | wl-copy - - bind=,code:122,exec,swayosd-client --output-volume lower - bind=,code:123,exec,swayosd-client --output-volume raise - bind=,code:121,exec,swayosd-client --output-volume mute-toggle - bind=,code:256,exec,swayosd-client --output-volume mute-toggle - bind=SHIFT,code:122,exec,swayosd-client --output-volume lower - bind=SHIFT,code:123,exec,swayosd-client --output-volume raise - bind=,code:232,exec,swayosd-client --brightness lower - bind=,code:233,exec,swayosd-client --brightness raise - bind=,code:237,exec,brightnessctl --device='asus::kbd_backlight' set 1- - bind=,code:238,exec,brightnessctl --device='asus::kbd_backlight' set +1 - bind=,code:255,exec,airplane-mode - bind=SUPER,C,exec,wl-copy $(hyprpicker) - - bind=SUPERSHIFT,S,exec,systemctl suspend - bindl=,switch:on:Lid Switch,exec,loginctl lock-session - bind=SUPERCTRL,L,exec,loginctl lock-session - - bind=SUPER,H,movefocus,l - bind=SUPER,J,movefocus,d - bind=SUPER,K,movefocus,u - bind=SUPER,L,movefocus,r - - bind=SUPERSHIFT,H,movewindow,l - bind=SUPERSHIFT,J,movewindow,d - bind=SUPERSHIFT,K,movewindow,u - bind=SUPERSHIFT,L,movewindow,r - - bind=SUPER,1,focusworkspaceoncurrentmonitor,1 - bind=SUPER,2,focusworkspaceoncurrentmonitor,2 - bind=SUPER,3,focusworkspaceoncurrentmonitor,3 - bind=SUPER,4,focusworkspaceoncurrentmonitor,4 - bind=SUPER,5,focusworkspaceoncurrentmonitor,5 - bind=SUPER,6,focusworkspaceoncurrentmonitor,6 - bind=SUPER,7,focusworkspaceoncurrentmonitor,7 - bind=SUPER,8,focusworkspaceoncurrentmonitor,8 - bind=SUPER,9,focusworkspaceoncurrentmonitor,9 - - bind=SUPERCTRL,right,exec,hyprnome - bind=SUPERCTRL,left,exec,hyprnome --previous - bind=SUPERSHIFT,right,exec,hyprnome --move - bind=SUPERSHIFT,left,exec,hyprnome --previous --move - - bind=SUPERSHIFT,1,movetoworkspace,1 - bind=SUPERSHIFT,2,movetoworkspace,2 - bind=SUPERSHIFT,3,movetoworkspace,3 - bind=SUPERSHIFT,4,movetoworkspace,4 - bind=SUPERSHIFT,5,movetoworkspace,5 - bind=SUPERSHIFT,6,movetoworkspace,6 - bind=SUPERSHIFT,7,movetoworkspace,7 - bind=SUPERSHIFT,8,movetoworkspace,8 - bind=SUPERSHIFT,9,movetoworkspace,9 - - exec-once = alacritty --class scratch_term - exec-once = kitty --class scratch_ranger -e ranger - exec-once = alacritty --class scratch_numbat -e numbat - exec-once = kitty --class scratch_music -e ncmpcpp - exec-once = alacritty --class scratch_btm -e btm - exec-once = element-desktop - exec-once = pavucontrol - - bind=SUPER,Z,exec,if hyprctl clients | grep scratch_term; then echo "scratch_term respawn not needed"; else alacritty --class scratch_term; fi - bind=SUPER,Z,togglespecialworkspace,scratch_term - bind=SUPER,F,exec,if hyprctl clients | grep scratch_ranger; then echo "scratch_ranger respawn not needed"; else kitty --class scratch_ranger -e ranger; fi - bind=SUPER,F,togglespecialworkspace,scratch_ranger - bind=SUPER,N,exec,if hyprctl clients | grep scratch_numbat; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_numbat -e numbat; fi - bind=SUPER,N,togglespecialworkspace,scratch_numbat - bind=SUPER,M,exec,if hyprctl clients | grep scratch_music; then echo "scratch_music respawn not needed"; else kitty --class scratch_music -e ncmpcpp; fi - bind=SUPER,M,togglespecialworkspace,scratch_music - bind=SUPER,B,exec,if hyprctl clients | grep scratch_btm; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_btm -e btm; fi - bind=SUPER,B,togglespecialworkspace,scratch_btm - bind=SUPER,D,exec,if hyprctl clients | grep Element; then echo "scratch_ranger respawn not needed"; else element-desktop; fi - bind=SUPER,D,togglespecialworkspace,scratch_element - bind=SUPER,code:172,exec,togglespecialworkspace,scratch_pavucontrol - bind=SUPER,code:172,exec,if hyprctl clients | grep pavucontrol; then echo "scratch_ranger respawn not needed"; else pavucontrol; fi - - $scratchpadsize = size 80% 85% - - $scratch_term = class:^(scratch_term)$ - windowrulev2 = float,$scratch_term - windowrulev2 = $scratchpadsize,$scratch_term - windowrulev2 = workspace special:scratch_term silent ,$scratch_term - windowrulev2 = center,$scratch_term - - $float_term = class:^(float_term)$ - windowrulev2 = float,$float_term - windowrulev2 = center,$float_term - - $scratch_ranger = class:^(scratch_ranger)$ - windowrulev2 = float,$scratch_ranger - windowrulev2 = $scratchpadsize,$scratch_ranger - windowrulev2 = workspace special:scratch_ranger silent,$scratch_ranger - windowrulev2 = center,$scratch_ranger - - $scratch_numbat = class:^(scratch_numbat)$ - windowrulev2 = float,$scratch_numbat - windowrulev2 = $scratchpadsize,$scratch_numbat - windowrulev2 = workspace special:scratch_numbat silent,$scratch_numbat - windowrulev2 = center,$scratch_numbat - - $scratch_btm = class:^(scratch_btm)$ - windowrulev2 = float,$scratch_btm - windowrulev2 = $scratchpadsize,$scratch_btm - windowrulev2 = workspace special:scratch_btm silent,$scratch_btm - windowrulev2 = center,$scratch_btm - - windowrulev2 = float,class:^(Element)$ - windowrulev2 = size 85% 90%,class:^(Element)$ - windowrulev2 = workspace special:scratch_element silent,class:^(Element)$ - windowrulev2 = center,class:^(Element)$ - - $scratch_music = class:^(scratch_music)$ - windowrulev2 = float,$scratch_music - windowrulev2 = $scratchpadsize,$scratch_music - windowrulev2 = workspace special:scratch_music silent,$scratch_music - windowrulev2 = center,$scratch_music - - $savetodisk = title:^(Save to Disk)$ - windowrulev2 = float,$savetodisk - windowrulev2 = size 70% 75%,$savetodisk - windowrulev2 = center,$savetodisk - - $pavucontrol = class:^(org.pulseaudio.pavucontrol)$ - windowrulev2 = float,$pavucontrol - windowrulev2 = size 86% 40%,$pavucontrol - windowrulev2 = move 50% 6%,$pavucontrol - windowrulev2 = workspace special silent,$pavucontrol - windowrulev2 = opacity 0.80,$pavucontrol - - $miniframe = title:\*Minibuf.* - windowrulev2 = float,$miniframe - windowrulev2 = size 64% 50%,$miniframe - windowrulev2 = move 18% 25%,$miniframe - windowrulev2 = animation popin 1 20,$miniframe - - windowrulev2 = float,class:^(pokefinder)$ - windowrulev2 = float,class:^(Waydroid)$ - - windowrulev2 = float,title:(Blender Render) - windowrulev2 = size 86% 85%,title:(Blender Render) - windowrulev2 = center,title:(Blender Render) - windowrulev2 = float,class:^(org.inkscape.Inkscape)$ - windowrulev2 = float,class:^(pinta)$ - windowrulev2 = float,class:^(krita)$ - windowrulev2 = float,class:^(Gimp) - windowrulev2 = float,class:^(Gimp) - windowrulev2 = float,class:^(libresprite)$ - windowrulev2 = float,title:(Open Images) - windowrulev2 = size 86% 85%,title:(Open Images) - windowrulev2 = center,title:(Open Images) - windowrulev2 = float,title:(Create new document) - windowrulev2 = size 86% 85%,title:(Create new document) - windowrulev2 = center,title:(Create new document) - windowrulev2 = size 86% 85%,title:(Create new document) - windowrulev2 = float,title:(Create New Node) - windowrulev2 = size 70% 70%,title:(Create New Node) - windowrulev2 = center,title:(Create New Node) - windowrulev2 = float,title:(Resource) - windowrulev2 = size 70% 70%,title:(Resource) - windowrulev2 = center,title:(Resource) - windowrulev2 = tile,title:(Godot) - - windowrulev2 = opacity 0.80,title:ORUI - - windowrulev2 = opacity 1.0,class:^(org.qutebrowser.qutebrowser),fullscreen:1 - windowrulev2 = opacity 0.85,class:^(Element)$ - windowrulev2 = opacity 0.85,class:^(Logseq)$ - windowrulev2 = opacity 1.0,class:^(Brave-browser),fullscreen:1 - windowrulev2 = opacity 1.0,class:^(librewolf),fullscreen:1 - windowrulev2 = opacity 0.85,title:^(My Local Dashboard Awesome Homepage - qutebrowser)$ - windowrulev2 = opacity 0.85,title:\[.*\] - My Local Dashboard Awesome Homepage - windowrulev2 = opacity 0.85,class:^(org.keepassxc.KeePassXC)$ - windowrulev2 = opacity 0.85,class:^(org.gnome.Nautilus)$ - windowrulev2 = opacity 0.85,class:^(org.gnome.Nautilus)$ - - windowrulev2 = opacity 0.85,initialTitle:^(Notes)$,initialClass:^(Brave-browser)$ - - layerrule = blur,waybar - layerrule = xray 1,waybar - blurls = waybar - layerrule = ignorezero, eww - layerrule = xray 1,eww - layerrule = blur,launcher # fuzzel - blurls = launcher # fuzzel - layerrule = blur,gtk-layer-shell - layerrule = xray 1,gtk-layer-shell - layerrule = ignorezero, gtk-layer-shell - layerrule = blur,eww - layerrule = xray 1,eww - layerrule = ignorezero, eww - layerrule = animation popin 80%, eww - blurls = gtk-layer-shell - layerrule = blur,~nwggrid - layerrule = xray 1,~nwggrid - layerrule = animation fade,~nwggrid - blurls = ~nwggrid - - bind=SUPER,equal, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 + 0.5}')" - bind=SUPER,minus, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 - 0.5}')" - - bind=SUPER,I,exec,networkmanager_dmenu - bind=SUPER,P,exec,keepmenu - bind=SUPERSHIFT,P,exec,hyprprofile-dmenu - bind=SUPERCTRL,R,exec,phoenix refresh - - # 3 monitor setup - monitor=eDP-1,1920x1080@300,900x1080,1 - monitor=HDMI-A-1,1920x1080,1920x0,1 - monitor=DP-1,1920x1080,0x0,1 - - # hdmi tv - #monitor=eDP-1,1920x1080,1920x0,1 - #monitor=HDMI-A-1,1920x1080,0x0,1 - - # hdmi work projector - #monitor=eDP-1,1920x1080,1920x0,1 - #monitor=HDMI-A-1,1920x1200,0x0,1 - - xwayland { - force_zero_scaling = true - } - - binds { - movefocus_cycles_fullscreen = false - } - - input { - kb_layout = us - kb_options = caps:escape - repeat_delay = 450 - repeat_rate = 50 - accel_profile = adaptive - follow_mouse = 2 - float_switch_override_focus = 0 - } - - misc { - disable_hyprland_logo = true - mouse_move_enables_dpms = true - enable_swallow = true - swallow_regex = (scratch_term)|(Alacritty)|(kitty) - font_family = '' + font + '' - - } - decoration { - rounding = 8 - dim_special = 0.0 - blur { - enabled = true - size = 5 - passes = 2 - ignore_opacity = true - contrast = 1.17 - brightness = '' + (if (config.stylix.polarity == "dark") then "0.65" else "1.45") + '' - - xray = true - special = true - popups = true - } - } - - ''; xwayland = { enable = true; }; systemd.enable = true; }; @@ -660,8 +600,7 @@ in background: none; border-style: none; box-shadow: none; - color: #'' + config.lib.stylix.colors.base07 + ''; - + color: #${config.lib.stylix.colors.base07}; font-size: 20px; } @@ -672,7 +611,7 @@ in } button:hover { - background-color: rgba('' + config.lib.stylix.colors.base07-rgb-r + "," + config.lib.stylix.colors.base07-rgb-g + "," + config.lib.stylix.colors.base07-rgb-b + "," + ''0.15); + background-color: rgba(${config.lib.stylix.colors.base07-rgb-r},${config.lib.stylix.colors.base07-rgb-g},${config.lib.stylix.colors.base07-rgb-b},0.15); } button:focus { @@ -680,25 +619,21 @@ in } button:checked { - background-color: rgba('' + config.lib.stylix.colors.base07-rgb-r + "," + config.lib.stylix.colors.base07-rgb-g + "," + config.lib.stylix.colors.base07-rgb-b + "," + ''0.15); + background-color: rgba(${config.lib.stylix.colors.base07-rgb-r},${config.lib.stylix.colors.base07-rgb-g},${config.lib.stylix.colors.base07-rgb-b},0.15); } #searchbox { background: none; - border-color: #'' + config.lib.stylix.colors.base07 + ''; - - color: #'' + config.lib.stylix.colors.base07 + ''; - + border-color: #${config.lib.stylix.colors.base07}; + color: #${config.lib.stylix.colors.base07}; margin-top: 20px; margin-bottom: 20px; - font-size: 20px; } #separator { - background-color: rgba('' + config.lib.stylix.colors.base00-rgb-r + "," + config.lib.stylix.colors.base00-rgb-g + "," + config.lib.stylix.colors.base00-rgb-b + "," + ''0.55); - - color: #'' + config.lib.stylix.colors.base07 + ''; + background-color: rgba(${config.lib.stylix.colors.base00-rgb-r},${config.lib.stylix.colors.base00-rgb-g},${config.lib.stylix.colors.base00-rgb-b},0.55); + color: #${config.lib.stylix.colors.base07}; margin-left: 500px; margin-right: 500px; margin-top: 10px; @@ -776,10 +711,8 @@ in }; }; home.file.".config/hypr/hyprpaper.conf".text = '' - preload = ''+config.stylix.image+'' - - wallpaper = ,''+config.stylix.image+'' - + preload = ${config.stylix.image} + wallpaper = ,${config.stylix.image} ''; }; diff --git a/modules/user/nix/default.nix b/modules/user/nix/default.nix index aeb4fd5..5f957b0 100644 --- a/modules/user/nix/default.nix +++ b/modules/user/nix/default.nix @@ -1,26 +1,20 @@ { config, lib, pkgs, inputs, ... }: -let - caches = import inputs.secrets.caches; -in { +{ config = { nix = { package = lib.mkForce pkgs.nix; settings = { - substituters = - (lib.optionals (caches ? urls) caches.urls) ++ - [ - "https://cache.nixos.org" - "https://hyprland.cachix.org" - "https://nix-community.cachix.org" - ]; - trusted-public-keys = - (lib.optionals (caches ? publicKeys) caches.publicKeys) ++ - [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - ]; + substituters = [ + "https://cache.nixos.org" + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; trusted-users = [ "@wheel" ]; auto-optimise-store = true; download-buffer-size = 500000000; diff --git a/modules/user/plasma/default.nix b/modules/user/plasma/default.nix new file mode 100644 index 0000000..3bd527c --- /dev/null +++ b/modules/user/plasma/default.nix @@ -0,0 +1,871 @@ +{config, lib, pkgs, ...}: +let + cfg = config.userSettings.plasma; +in { + options = { + userSettings.plasma = { + enable = lib.mkEnableOption "Enable plasma with config"; + }; + }; + + config = lib.mkIf cfg.enable { + programs.plasma = { + enable = true; + shortcuts = { + "ActivityManager"."switch-to-activity-080837e2-f10a-45f7-84cb-a3022c9dc5d4" = [ ]; + "KDE Keyboard Layout Switcher"."Switch to Last-Used Keyboard Layout" = "Meta+Alt+L"; + "KDE Keyboard Layout Switcher"."Switch to Next Keyboard Layout" = "Meta+Alt+K"; + "kaccess"."Toggle Screen Reader On and Off" = "Meta+Alt+S"; + "kcm_touchpad"."Disable Touchpad" = "Touchpad Off"; + "kcm_touchpad"."Enable Touchpad" = "Touchpad On"; + "kcm_touchpad"."Toggle Touchpad" = ["Touchpad Toggle,Touchpad Toggle" "Meta+Ctrl+Zenkaku Hankaku"]; + "khotkeys"."{d03619b6-9b3c-48cc-9d9c-a2aadb485550}" = [ ]; + "kmix"."decrease_microphone_volume" = "Microphone Volume Down"; + "kmix"."decrease_volume" = "Volume Down"; + "kmix"."decrease_volume_small" = "Shift+Volume Down"; + "kmix"."increase_microphone_volume" = "Microphone Volume Up"; + "kmix"."increase_volume" = "Volume Up"; + "kmix"."increase_volume_small" = "Shift+Volume Up"; + "kmix"."mic_mute" = ["Microphone Mute" "Meta+Volume Mute,Microphone Mute" "Meta+Volume Mute,Mute Microphone"]; + "kmix"."mute" = "Volume Mute"; + "ksmserver"."Halt Without Confirmation" = "none,,Shut Down Without Confirmation"; + "ksmserver"."Lock Session" = ["Meta+L" "Screensaver,Meta+L" "Screensaver,Lock Session"]; + "ksmserver"."Log Out" = "Ctrl+Alt+Del"; + "ksmserver"."Log Out Without Confirmation" = "none,,Log Out Without Confirmation"; + "ksmserver"."LogOut" = [ ]; + "ksmserver"."Reboot" = "none,,Reboot"; + "ksmserver"."Reboot Without Confirmation" = "none,,Reboot Without Confirmation"; + "ksmserver"."Shut Down" = "none,,Shut Down"; + "kwin"."Activate Window Demanding Attention" = "Meta+Ctrl+A"; + "kwin"."Cube" = "Meta+C,none,Toggle Cube"; + "kwin"."Cycle Overview" = [ ]; + "kwin"."Cycle Overview Opposite" = [ ]; + "kwin"."Decrease Opacity" = "none,,Decrease Opacity of Active Window by 5%"; + "kwin"."Edit Tiles" = "Meta+T"; + "kwin"."Expose" = "Ctrl+F9"; + "kwin"."ExposeAll" = ["Ctrl+F10" "Launch (C),Ctrl+F10" "Launch (C),Toggle Present Windows (All desktops)"]; + "kwin"."ExposeClass" = "Ctrl+F7"; + "kwin"."ExposeClassCurrentDesktop" = [ ]; + "kwin"."Grid View" = "Meta+G"; + "kwin"."Increase Opacity" = "none,,Increase Opacity of Active Window by 5%"; + "kwin"."Invert" = "Meta+Ctrl+I"; + "kwin"."Invert Screen Colors" = [ ]; + "kwin"."InvertWindow" = "Meta+Ctrl+U"; + "kwin"."Kill Window" = "Meta+Ctrl+Esc"; + "kwin"."Move Tablet to Next Output" = [ ]; + "kwin"."MoveMouseToCenter" = "Meta+F6"; + "kwin"."MoveMouseToFocus" = "Meta+F5"; + "kwin"."MoveZoomDown" = [ ]; + "kwin"."MoveZoomLeft" = [ ]; + "kwin"."MoveZoomRight" = [ ]; + "kwin"."MoveZoomUp" = [ ]; + "kwin"."Overview" = "Meta+W"; + "kwin"."Setup Window Shortcut" = "none,,Setup Window Shortcut"; + "kwin"."Show Desktop" = "Meta+D"; + "kwin"."ShowDesktopGrid" = "Meta+F8,none"; + "kwin"."Suspend Compositing" = "Alt+Shift+F12,none"; + "kwin"."Switch One Desktop Down" = "none,Meta+Ctrl+Down,Switch One Desktop Down"; + "kwin"."Switch One Desktop Up" = "none,Meta+Ctrl+Up,Switch One Desktop Up"; + "kwin"."Switch One Desktop to the Left" = "none,Meta+Ctrl+Left,Switch One Desktop to the Left"; + "kwin"."Switch One Desktop to the Right" = "none,Meta+Ctrl+Right,Switch One Desktop to the Right"; + "kwin"."Switch Window Down" = "Meta+Alt+Down"; + "kwin"."Switch Window Left" = "Meta+Alt+Left"; + "kwin"."Switch Window Right" = "Meta+Alt+Right"; + "kwin"."Switch Window Up" = "Meta+Alt+Up"; + "kwin"."Switch to Desktop 1" = "Ctrl+F1"; + "kwin"."Switch to Desktop 10" = "none,,Switch to Desktop 10"; + "kwin"."Switch to Desktop 11" = "none,,Switch to Desktop 11"; + "kwin"."Switch to Desktop 12" = "none,,Switch to Desktop 12"; + "kwin"."Switch to Desktop 13" = "none,,Switch to Desktop 13"; + "kwin"."Switch to Desktop 14" = "none,,Switch to Desktop 14"; + "kwin"."Switch to Desktop 15" = "none,,Switch to Desktop 15"; + "kwin"."Switch to Desktop 16" = "none,,Switch to Desktop 16"; + "kwin"."Switch to Desktop 17" = "none,,Switch to Desktop 17"; + "kwin"."Switch to Desktop 18" = "none,,Switch to Desktop 18"; + "kwin"."Switch to Desktop 19" = "none,,Switch to Desktop 19"; + "kwin"."Switch to Desktop 2" = "Ctrl+F2"; + "kwin"."Switch to Desktop 20" = "none,,Switch to Desktop 20"; + "kwin"."Switch to Desktop 3" = "Ctrl+F3"; + "kwin"."Switch to Desktop 4" = "Ctrl+F4"; + "kwin"."Switch to Desktop 5" = "none,,Switch to Desktop 5"; + "kwin"."Switch to Desktop 6" = "none,,Switch to Desktop 6"; + "kwin"."Switch to Desktop 7" = "none,,Switch to Desktop 7"; + "kwin"."Switch to Desktop 8" = "none,,Switch to Desktop 8"; + "kwin"."Switch to Desktop 9" = "none,,Switch to Desktop 9"; + "kwin"."Switch to Next Desktop" = "none,,Switch to Next Desktop"; + "kwin"."Switch to Next Screen" = "none,,Switch to Next Screen"; + "kwin"."Switch to Previous Desktop" = "none,,Switch to Previous Desktop"; + "kwin"."Switch to Previous Screen" = "none,,Switch to Previous Screen"; + "kwin"."Switch to Screen 0" = "none,,Switch to Screen 0"; + "kwin"."Switch to Screen 1" = "none,,Switch to Screen 1"; + "kwin"."Switch to Screen 2" = "none,,Switch to Screen 2"; + "kwin"."Switch to Screen 3" = "none,,Switch to Screen 3"; + "kwin"."Switch to Screen 4" = "none,,Switch to Screen 4"; + "kwin"."Switch to Screen 5" = "none,,Switch to Screen 5"; + "kwin"."Switch to Screen 6" = "none,,Switch to Screen 6"; + "kwin"."Switch to Screen 7" = "none,,Switch to Screen 7"; + "kwin"."Switch to Screen Above" = "none,,Switch to Screen Above"; + "kwin"."Switch to Screen Below" = "none,,Switch to Screen Below"; + "kwin"."Switch to Screen to the Left" = "none,,Switch to Screen to the Left"; + "kwin"."Switch to Screen to the Right" = "none,,Switch to Screen to the Right"; + "kwin"."Toggle" = [ ]; + "kwin"."Toggle Night Color" = [ ]; + "kwin"."Toggle Window Raise/Lower" = "none,,Toggle Window Raise/Lower"; + "kwin"."Walk Through Desktop List" = [ ]; + "kwin"."Walk Through Desktop List (Reverse)" = [ ]; + "kwin"."Walk Through Desktops" = [ ]; + "kwin"."Walk Through Desktops (Reverse)" = [ ]; + "kwin"."Walk Through Windows" = "Alt+Tab"; + "kwin"."Walk Through Windows (Reverse)" = "Alt+Shift+Backtab,Alt+Shift+Tab,Walk Through Windows (Reverse)"; + "kwin"."Walk Through Windows Alternative" = "none,,Walk Through Windows Alternative"; + "kwin"."Walk Through Windows Alternative (Reverse)" = "none,,Walk Through Windows Alternative (Reverse)"; + "kwin"."Walk Through Windows of Current Application" = "Alt+`"; + "kwin"."Walk Through Windows of Current Application (Reverse)" = "Alt+~"; + "kwin"."Walk Through Windows of Current Application Alternative" = "none,,Walk Through Windows of Current Application Alternative"; + "kwin"."Walk Through Windows of Current Application Alternative (Reverse)" = "none,,Walk Through Windows of Current Application Alternative (Reverse)"; + "kwin"."Window Above Other Windows" = "none,,Keep Window Above Others"; + "kwin"."Window Below Other Windows" = "none,,Keep Window Below Others"; + "kwin"."Window Close" = "Alt+F4"; + "kwin"."Window Fullscreen" = "none,,Make Window Fullscreen"; + "kwin"."Window Grow Horizontal" = "none,,Expand Window Horizontally"; + "kwin"."Window Grow Vertical" = "none,,Expand Window Vertically"; + "kwin"."Window Lower" = "none,,Lower Window"; + "kwin"."Window Maximize" = "Meta+PgUp"; + "kwin"."Window Maximize Horizontal" = "none,,Maximize Window Horizontally"; + "kwin"."Window Maximize Vertical" = "none,,Maximize Window Vertically"; + "kwin"."Window Minimize" = "Meta+PgDown"; + "kwin"."Window Move" = "none,,Move Window"; + "kwin"."Window Move Center" = "none,,Move Window to the Center"; + "kwin"."Window No Border" = "none,,Toggle Window Titlebar and Frame"; + "kwin"."Window On All Desktops" = "none,,Keep Window on All Desktops"; + "kwin"."Window One Desktop Down" = "Meta+Ctrl+Shift+Down"; + "kwin"."Window One Desktop Up" = "Meta+Ctrl+Shift+Up"; + "kwin"."Window One Desktop to the Left" = "Meta+Ctrl+Shift+Left"; + "kwin"."Window One Desktop to the Right" = "Meta+Ctrl+Shift+Right"; + "kwin"."Window One Screen Down" = "none,,Move Window One Screen Down"; + "kwin"."Window One Screen Up" = "none,,Move Window One Screen Up"; + "kwin"."Window One Screen to the Left" = "none,,Move Window One Screen to the Left"; + "kwin"."Window One Screen to the Right" = "none,,Move Window One Screen to the Right"; + "kwin"."Window Operations Menu" = "Alt+F3"; + "kwin"."Window Pack Down" = "none,,Move Window Down"; + "kwin"."Window Pack Left" = "none,,Move Window Left"; + "kwin"."Window Pack Right" = "none,,Move Window Right"; + "kwin"."Window Pack Up" = "none,,Move Window Up"; + "kwin"."Window Quick Tile Bottom" = "Meta+Down"; + "kwin"."Window Quick Tile Bottom Left" = "none,,Quick Tile Window to the Bottom Left"; + "kwin"."Window Quick Tile Bottom Right" = "none,,Quick Tile Window to the Bottom Right"; + "kwin"."Window Quick Tile Left" = "Meta+Left"; + "kwin"."Window Quick Tile Right" = "Meta+Right"; + "kwin"."Window Quick Tile Top" = "Meta+Up"; + "kwin"."Window Quick Tile Top Left" = "none,,Quick Tile Window to the Top Left"; + "kwin"."Window Quick Tile Top Right" = "none,,Quick Tile Window to the Top Right"; + "kwin"."Window Raise" = "none,,Raise Window"; + "kwin"."Window Resize" = "none,,Resize Window"; + "kwin"."Window Shade" = "none,,Shade Window"; + "kwin"."Window Shrink Horizontal" = "none,,Shrink Window Horizontally"; + "kwin"."Window Shrink Vertical" = "none,,Shrink Window Vertically"; + "kwin"."Window to Desktop 1" = "none,,Window to Desktop 1"; + "kwin"."Window to Desktop 10" = "none,,Window to Desktop 10"; + "kwin"."Window to Desktop 11" = "none,,Window to Desktop 11"; + "kwin"."Window to Desktop 12" = "none,,Window to Desktop 12"; + "kwin"."Window to Desktop 13" = "none,,Window to Desktop 13"; + "kwin"."Window to Desktop 14" = "none,,Window to Desktop 14"; + "kwin"."Window to Desktop 15" = "none,,Window to Desktop 15"; + "kwin"."Window to Desktop 16" = "none,,Window to Desktop 16"; + "kwin"."Window to Desktop 17" = "none,,Window to Desktop 17"; + "kwin"."Window to Desktop 18" = "none,,Window to Desktop 18"; + "kwin"."Window to Desktop 19" = "none,,Window to Desktop 19"; + "kwin"."Window to Desktop 2" = "none,,Window to Desktop 2"; + "kwin"."Window to Desktop 20" = "none,,Window to Desktop 20"; + "kwin"."Window to Desktop 3" = "none,,Window to Desktop 3"; + "kwin"."Window to Desktop 4" = "none,,Window to Desktop 4"; + "kwin"."Window to Desktop 5" = "none,,Window to Desktop 5"; + "kwin"."Window to Desktop 6" = "none,,Window to Desktop 6"; + "kwin"."Window to Desktop 7" = "none,,Window to Desktop 7"; + "kwin"."Window to Desktop 8" = "none,,Window to Desktop 8"; + "kwin"."Window to Desktop 9" = "none,,Window to Desktop 9"; + "kwin"."Window to Next Desktop" = "none,,Window to Next Desktop"; + "kwin"."Window to Next Screen" = "Meta+Shift+Right"; + "kwin"."Window to Previous Desktop" = "none,,Window to Previous Desktop"; + "kwin"."Window to Previous Screen" = "Meta+Shift+Left"; + "kwin"."Window to Screen 0" = "none,,Move Window to Screen 0"; + "kwin"."Window to Screen 1" = "none,,Move Window to Screen 1"; + "kwin"."Window to Screen 2" = "none,,Move Window to Screen 2"; + "kwin"."Window to Screen 3" = "none,,Move Window to Screen 3"; + "kwin"."Window to Screen 4" = "none,,Move Window to Screen 4"; + "kwin"."Window to Screen 5" = "none,,Move Window to Screen 5"; + "kwin"."Window to Screen 6" = "none,,Move Window to Screen 6"; + "kwin"."Window to Screen 7" = "none,,Move Window to Screen 7"; + "kwin"."view_actual_size" = "none,Meta+0,Zoom to Actual Size"; + "kwin"."view_zoom_in" = ["Meta++" "Meta+=,Meta++" "Meta+=,Zoom In"]; + "kwin"."view_zoom_out" = "Meta+-"; + "mediacontrol"."mediavolumedown" = "none,,Media volume down"; + "mediacontrol"."mediavolumeup" = "none,,Media volume up"; + "mediacontrol"."nextmedia" = "Media Next"; + "mediacontrol"."pausemedia" = "Media Pause"; + "mediacontrol"."playmedia" = "none,,Play media playback"; + "mediacontrol"."playpausemedia" = "Media Play"; + "mediacontrol"."previousmedia" = "Media Previous"; + "mediacontrol"."stopmedia" = "Media Stop"; + "org_kde_powerdevil"."Decrease Keyboard Brightness" = "Keyboard Brightness Down"; + "org_kde_powerdevil"."Decrease Screen Brightness" = "Monitor Brightness Down"; + "org_kde_powerdevil"."Decrease Screen Brightness Small" = "Shift+Monitor Brightness Down"; + "org_kde_powerdevil"."Hibernate" = "Hibernate"; + "org_kde_powerdevil"."Increase Keyboard Brightness" = "Keyboard Brightness Up"; + "org_kde_powerdevil"."Increase Screen Brightness" = "Monitor Brightness Up"; + "org_kde_powerdevil"."Increase Screen Brightness Small" = "Shift+Monitor Brightness Up"; + "org_kde_powerdevil"."PowerDown" = "Power Down"; + "org_kde_powerdevil"."PowerOff" = "Power Off"; + "org_kde_powerdevil"."Sleep" = "Sleep"; + "org_kde_powerdevil"."Toggle Keyboard Backlight" = "Keyboard Light On/Off"; + "org_kde_powerdevil"."Turn Off Screen" = [ ]; + "org_kde_powerdevil"."powerProfile" = ["Battery" "Meta+B,Battery" "Meta+B,Switch Power Profile"]; + "plasmashell"."activate application launcher" = ["Meta" ",Meta" "Alt+F1,Activate Application Launcher"]; + "plasmashell"."activate task manager entry 1" = "Meta+1"; + "plasmashell"."activate task manager entry 2" = "Meta+2"; + "plasmashell"."activate task manager entry 3" = "Meta+3"; + "plasmashell"."activate task manager entry 4" = "Meta+4"; + "plasmashell"."activate task manager entry 5" = "Meta+5"; + "plasmashell"."activate task manager entry 6" = "Meta+6"; + "plasmashell"."activate task manager entry 7" = "Meta+7"; + "plasmashell"."activate task manager entry 8" = "Meta+8"; + "plasmashell"."activate task manager entry 9" = "Meta+9"; + "plasmashell"."activate task manager entry 10" = "Meta+0"; + "plasmashell"."clear-history" = "none,,Clear Clipboard History"; + "plasmashell"."clipboard_action" = "Meta+Ctrl+X"; + "plasmashell"."cycle-panels" = "Meta+Alt+P"; + "plasmashell"."cycleNextAction" = "none,,Next History Item"; + "plasmashell"."cyclePrevAction" = "none,,Previous History Item"; + "plasmashell"."edit_clipboard" = [ ]; + "plasmashell"."manage activities" = "Meta+Q"; + "plasmashell"."next activity" = "Meta+Tab,none,Walk through activities"; + "plasmashell"."previous activity" = "Meta+Shift+Tab,none,Walk through activities (Reverse)"; + "plasmashell"."repeat_action" = "Meta+Ctrl+R"; + "plasmashell"."show dashboard" = "Ctrl+F12"; + "plasmashell"."show-barcode" = "none,,Show Barcode…"; + "plasmashell"."show-on-mouse-pos" = "Meta+V"; + "plasmashell"."stop current activity" = "Meta+S"; + "plasmashell"."switch to next activity" = "none,,Switch to Next Activity"; + "plasmashell"."switch to previous activity" = "none,,Switch to Previous Activity"; + "plasmashell"."toggle do not disturb" = "none,,Toggle do not disturb"; + "services/org.kde.plasma-systemmonitor.desktop"."_launch" = "Ctrl+Esc"; + "yakuake"."toggle-window-state" = "Meta+Z,F12,Open/Retract Yakuake"; + }; + configFile = { + "baloofilerc"."General"."dbVersion" = 2; + "baloofilerc"."General"."exclude filters" = "*~,*.part,*.o,*.la,*.lo,*.loT,*.moc,moc_*.cpp,qrc_*.cpp,ui_*.h,cmake_install.cmake,CMakeCache.txt,CTestTestfile.cmake,libtool,config.status,confdefs.h,autom4te,conftest,confstat,Makefile.am,*.gcode,.ninja_deps,.ninja_log,build.ninja,*.csproj,*.m4,*.rej,*.gmo,*.pc,*.omf,*.aux,*.tmp,*.po,*.vm*,*.nvram,*.rcore,*.swp,*.swap,lzo,litmain.sh,*.orig,.histfile.*,.xsession-errors*,*.map,*.so,*.a,*.db,*.qrc,*.ini,*.init,*.img,*.vdi,*.vbox*,vbox.log,*.qcow2,*.vmdk,*.vhd,*.vhdx,*.sql,*.sql.gz,*.ytdl,*.class,*.pyc,*.pyo,*.elc,*.qmlc,*.jsc,*.fastq,*.fq,*.gb,*.fasta,*.fna,*.gbff,*.faa,po,CVS,.svn,.git,_darcs,.bzr,.hg,CMakeFiles,CMakeTmp,CMakeTmpQmake,.moc,.obj,.pch,.uic,.npm,.yarn,.yarn-cache,__pycache__,node_modules,node_packages,nbproject,.venv,venv,core-dumps,lost+found"; + "baloofilerc"."General"."exclude filters version" = 8; + "dolphinrc"."ExtractDialog"."1680x1050 screen: Height" = 560; + "dolphinrc"."ExtractDialog"."1680x1050 screen: Width" = 1120; + "dolphinrc"."ExtractDialog"."DirHistory[$e]" = "$HOME/.local/bin/,$HOME/.local/share/fonts/MarkerFelt/,$HOME/Fonts/TheRain/,$HOME/Fonts/Emilya-Birthday/,$HOME/Fonts/CuteKitchen/,$HOME/Fonts/AmazingQuirky/"; + "dolphinrc"."ExtractDialog"."DirHistory\x5b$e\x5d" = "$HOME/.local/bin/,$HOME/.local/share/fonts/MarkerFelt/,$HOME/Fonts/TheRain/,$HOME/Fonts/Emilya-Birthday/,$HOME/Fonts/CuteKitchen/,$HOME/Fonts/AmazingQuirky/"; + "dolphinrc"."General"."ViewPropsTimestamp" = "2023,10,5,13,57,56.321"; + "dolphinrc"."IconsMode"."PreviewSize" = 192; + "dolphinrc"."KFileDialog Settings"."Places Icons Auto-resize" = false; + "dolphinrc"."KFileDialog Settings"."Places Icons Static Size" = 22; + "dolphinrc"."KFileDialog Settings"."detailViewIconSize" = 16; + "dolphinrc"."Search"."What" = "Content"; + "kactivitymanagerdrc"."activities"."080837e2-f10a-45f7-84cb-a3022c9dc5d4" = "Default"; + "kactivitymanagerdrc"."main"."currentActivity" = "080837e2-f10a-45f7-84cb-a3022c9dc5d4"; + "kcminputrc"."Mouse"."X11LibInputXAccelProfileFlat" = true; + "kcminputrc"."Mouse"."cursorSize" = 36; + "kcminputrc"."Mouse"."cursorTheme" = "ArcDusk-cursors"; + "kcminputrc"."Tmp"."update_info" = "delete_cursor_old_default_size.upd:DeleteCursorOldDefaultSize"; + "kded5rc"."Module-browserintegrationreminder"."autoload" = false; + "kded5rc"."Module-device_automounter"."autoload" = false; + "kded5rc"."PlasmaBrowserIntegration"."shownCount" = 4; + "khotkeysrc"."Data"."DataCount" = 3; + "khotkeysrc"."Data_1"."Comment" = "KMenuEdit Global Shortcuts"; + "khotkeysrc"."Data_1"."DataCount" = 1; + "khotkeysrc"."Data_1"."Enabled" = true; + "khotkeysrc"."Data_1"."Name" = "KMenuEdit"; + "khotkeysrc"."Data_1"."SystemGroup" = 1; + "khotkeysrc"."Data_1"."Type" = "ACTION_DATA_GROUP"; + "khotkeysrc"."Data_1Conditions"."Comment" = ""; + "khotkeysrc"."Data_1Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_1_1"."Comment" = "Comment"; + "khotkeysrc"."Data_1_1"."Enabled" = true; + "khotkeysrc"."Data_1_1"."Name" = "Search"; + "khotkeysrc"."Data_1_1"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_1_1Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_1_1Actions0"."CommandURL" = "http://google.com"; + "khotkeysrc"."Data_1_1Actions0"."Type" = "COMMAND_URL"; + "khotkeysrc"."Data_1_1Conditions"."Comment" = ""; + "khotkeysrc"."Data_1_1Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_1_1Triggers"."Comment" = "Simple_action"; + "khotkeysrc"."Data_1_1Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_1_1Triggers0"."Key" = ""; + "khotkeysrc"."Data_1_1Triggers0"."Type" = "SHORTCUT"; + "khotkeysrc"."Data_1_1Triggers0"."Uuid" = "{d03619b6-9b3c-48cc-9d9c-a2aadb485550}"; + "khotkeysrc"."Data_2"."Comment" = "This group contains various examples demonstrating most of the features of KHotkeys. (Note that this group and all its actions are disabled by default.)"; + "khotkeysrc"."Data_2"."DataCount" = 8; + "khotkeysrc"."Data_2"."Enabled" = false; + "khotkeysrc"."Data_2"."ImportId" = "kde32b1"; + "khotkeysrc"."Data_2"."Name" = "Examples"; + "khotkeysrc"."Data_2"."SystemGroup" = 0; + "khotkeysrc"."Data_2"."Type" = "ACTION_DATA_GROUP"; + "khotkeysrc"."Data_2Conditions"."Comment" = ""; + "khotkeysrc"."Data_2Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_1"."Comment" = "After pressing Ctrl+Alt+I, the KSIRC window will be activated, if it exists. Simple."; + "khotkeysrc"."Data_2_1"."Enabled" = false; + "khotkeysrc"."Data_2_1"."Name" = "Activate KSIRC Window"; + "khotkeysrc"."Data_2_1"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_2_1Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_1Actions0"."Type" = "ACTIVATE_WINDOW"; + "khotkeysrc"."Data_2_1Actions0Window"."Comment" = "KSIRC window"; + "khotkeysrc"."Data_2_1Actions0Window"."WindowsCount" = 1; + "khotkeysrc"."Data_2_1Actions0Window0"."Class" = "ksirc"; + "khotkeysrc"."Data_2_1Actions0Window0"."ClassType" = 1; + "khotkeysrc"."Data_2_1Actions0Window0"."Comment" = "KSIRC"; + "khotkeysrc"."Data_2_1Actions0Window0"."Role" = ""; + "khotkeysrc"."Data_2_1Actions0Window0"."RoleType" = 0; + "khotkeysrc"."Data_2_1Actions0Window0"."Title" = ""; + "khotkeysrc"."Data_2_1Actions0Window0"."TitleType" = 0; + "khotkeysrc"."Data_2_1Actions0Window0"."Type" = "SIMPLE"; + "khotkeysrc"."Data_2_1Actions0Window0"."WindowTypes" = 33; + "khotkeysrc"."Data_2_1Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_1Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_1Triggers"."Comment" = "Simple_action"; + "khotkeysrc"."Data_2_1Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_2_1Triggers0"."Key" = "Ctrl+Alt+I"; + "khotkeysrc"."Data_2_1Triggers0"."Type" = "SHORTCUT"; + "khotkeysrc"."Data_2_1Triggers0"."Uuid" = "{45612602-5728-4506-aea8-33d3685a58e2}"; + "khotkeysrc"."Data_2_2"."Comment" = "After pressing Alt+Ctrl+H the input of 'Hello' will be simulated, as if you typed it. This is especially useful if you have call to frequently type a word (for instance, 'unsigned'). Every keypress in the input is separated by a colon ':'. Note that the keypresses literally mean keypresses, so you have to write what you would press on the keyboard. In the table below, the left column shows the input and the right column shows what to type.\n\n\"enter\" (i.e. new line) Enter or Return\na (i.e. small a) A\nA (i.e. capital a) Shift+A\n: (colon) Shift+;\n' ' (space) Space"; + "khotkeysrc"."Data_2_2"."Enabled" = false; + "khotkeysrc"."Data_2_2"."Name" = "Type 'Hello'"; + "khotkeysrc"."Data_2_2"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_2_2Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_2Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_2_2Actions0"."Input" = "Shift+H:E:L:L:O\n"; + "khotkeysrc"."Data_2_2Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_2_2Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_2Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_2Triggers"."Comment" = "Simple_action"; + "khotkeysrc"."Data_2_2Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_2_2Triggers0"."Key" = "Ctrl+Alt+H"; + "khotkeysrc"."Data_2_2Triggers0"."Type" = "SHORTCUT"; + "khotkeysrc"."Data_2_2Triggers0"."Uuid" = "{d277ece4-e269-4243-844e-da95c7991c01}"; + "khotkeysrc"."Data_2_3"."Comment" = "This action runs Konsole, after pressing Ctrl+Alt+T."; + "khotkeysrc"."Data_2_3"."Enabled" = false; + "khotkeysrc"."Data_2_3"."Name" = "Run Konsole"; + "khotkeysrc"."Data_2_3"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_2_3Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_3Actions0"."CommandURL" = "konsole"; + "khotkeysrc"."Data_2_3Actions0"."Type" = "COMMAND_URL"; + "khotkeysrc"."Data_2_3Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_3Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_3Triggers"."Comment" = "Simple_action"; + "khotkeysrc"."Data_2_3Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_2_3Triggers0"."Key" = "Ctrl+Alt+T"; + "khotkeysrc"."Data_2_3Triggers0"."Type" = "SHORTCUT"; + "khotkeysrc"."Data_2_3Triggers0"."Uuid" = "{443adf4b-ca38-4261-b7a0-482a1b4bd977}"; + "khotkeysrc"."Data_2_4"."Comment" = "Read the comment on the \"Type 'Hello'\" action first.\n\nQt Designer uses Ctrl+F4 for closing windows. In KDE, however, Ctrl+F4 is the shortcut for going to virtual desktop 4, so this shortcut does not work in Qt Designer. Further, Qt Designer does not use KDE's standard Ctrl+W for closing the window.\n\nThis problem can be solved by remapping Ctrl+W to Ctrl+F4 when the active window is Qt Designer. When Qt Designer is active, every time Ctrl+W is pressed, Ctrl+F4 will be sent to Qt Designer instead. In other applications, the effect of Ctrl+W is unchanged.\n\nWe now need to specify three things: A new shortcut trigger on 'Ctrl+W', a new keyboard input action sending Ctrl+F4, and a new condition that the active window is Qt Designer.\nQt Designer seems to always have title 'Qt Designer by Trolltech', so the condition will check for the active window having that title."; + "khotkeysrc"."Data_2_4"."Enabled" = false; + "khotkeysrc"."Data_2_4"."Name" = "Remap Ctrl+W to Ctrl+F4 in Qt Designer"; + "khotkeysrc"."Data_2_4"."Type" = "GENERIC_ACTION_DATA"; + "khotkeysrc"."Data_2_4Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_4Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_2_4Actions0"."Input" = "Ctrl+F4"; + "khotkeysrc"."Data_2_4Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_2_4Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_4Conditions"."ConditionsCount" = 1; + "khotkeysrc"."Data_2_4Conditions0"."Type" = "ACTIVE_WINDOW"; + "khotkeysrc"."Data_2_4Conditions0Window"."Comment" = "Qt Designer"; + "khotkeysrc"."Data_2_4Conditions0Window"."WindowsCount" = 1; + "khotkeysrc"."Data_2_4Conditions0Window0"."Class" = ""; + "khotkeysrc"."Data_2_4Conditions0Window0"."ClassType" = 0; + "khotkeysrc"."Data_2_4Conditions0Window0"."Comment" = ""; + "khotkeysrc"."Data_2_4Conditions0Window0"."Role" = ""; + "khotkeysrc"."Data_2_4Conditions0Window0"."RoleType" = 0; + "khotkeysrc"."Data_2_4Conditions0Window0"."Title" = "Qt Designer by Trolltech"; + "khotkeysrc"."Data_2_4Conditions0Window0"."TitleType" = 2; + "khotkeysrc"."Data_2_4Conditions0Window0"."Type" = "SIMPLE"; + "khotkeysrc"."Data_2_4Conditions0Window0"."WindowTypes" = 33; + "khotkeysrc"."Data_2_4Triggers"."Comment" = ""; + "khotkeysrc"."Data_2_4Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_2_4Triggers0"."Key" = "Ctrl+W"; + "khotkeysrc"."Data_2_4Triggers0"."Type" = "SHORTCUT"; + "khotkeysrc"."Data_2_4Triggers0"."Uuid" = "{67ab2d77-f8d2-4e06-b2e4-0cd8e19ee075}"; + "khotkeysrc"."Data_2_5"."Comment" = "By pressing Alt+Ctrl+W a D-Bus call will be performed that will show the minicli. You can use any kind of D-Bus call, just like using the command line 'qdbus' tool."; + "khotkeysrc"."Data_2_5"."Enabled" = false; + "khotkeysrc"."Data_2_5"."Name" = "Perform D-Bus call 'qdbus org.kde.krunner /App display'"; + "khotkeysrc"."Data_2_5"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_2_5Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_5Actions0"."Arguments" = ""; + "khotkeysrc"."Data_2_5Actions0"."Call" = "popupExecuteCommand"; + "khotkeysrc"."Data_2_5Actions0"."RemoteApp" = "org.kde.krunner"; + "khotkeysrc"."Data_2_5Actions0"."RemoteObj" = "/App"; + "khotkeysrc"."Data_2_5Actions0"."Type" = "DBUS"; + "khotkeysrc"."Data_2_5Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_5Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_5Triggers"."Comment" = "Simple_action"; + "khotkeysrc"."Data_2_5Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_2_5Triggers0"."Key" = "Ctrl+Alt+W"; + "khotkeysrc"."Data_2_5Triggers0"."Type" = "SHORTCUT"; + "khotkeysrc"."Data_2_5Triggers0"."Uuid" = "{86084b22-0843-4503-b348-76af9dbd7eae}"; + "khotkeysrc"."Data_2_6"."Comment" = "Read the comment on the \"Type 'Hello'\" action first.\n\nJust like the \"Type 'Hello'\" action, this one simulates keyboard input, specifically, after pressing Ctrl+Alt+B, it sends B to XMMS (B in XMMS jumps to the next song). The 'Send to specific window' checkbox is checked and a window with its class containing 'XMMS_Player' is specified; this will make the input always be sent to this window. This way, you can control XMMS even if, for instance, it is on a different virtual desktop.\n\n(Run 'xprop' and click on the XMMS window and search for WM_CLASS to see 'XMMS_Player')."; + "khotkeysrc"."Data_2_6"."Enabled" = false; + "khotkeysrc"."Data_2_6"."Name" = "Next in XMMS"; + "khotkeysrc"."Data_2_6"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_2_6Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_6Actions0"."DestinationWindow" = 1; + "khotkeysrc"."Data_2_6Actions0"."Input" = "B"; + "khotkeysrc"."Data_2_6Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_2_6Actions0DestinationWindow"."Comment" = "XMMS window"; + "khotkeysrc"."Data_2_6Actions0DestinationWindow"."WindowsCount" = 1; + "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Class" = "XMMS_Player"; + "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."ClassType" = 1; + "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Comment" = "XMMS Player window"; + "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Role" = ""; + "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."RoleType" = 0; + "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Title" = ""; + "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."TitleType" = 0; + "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."Type" = "SIMPLE"; + "khotkeysrc"."Data_2_6Actions0DestinationWindow0"."WindowTypes" = 33; + "khotkeysrc"."Data_2_6Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_6Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_6Triggers"."Comment" = "Simple_action"; + "khotkeysrc"."Data_2_6Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_2_6Triggers0"."Key" = "Ctrl+Alt+B"; + "khotkeysrc"."Data_2_6Triggers0"."Type" = "SHORTCUT"; + "khotkeysrc"."Data_2_6Triggers0"."Uuid" = "{148b0bc3-908e-445e-9694-c0316bec61c3}"; + "khotkeysrc"."Data_2_7"."Comment" = "Konqueror in KDE3.1 has tabs, and now you can also have gestures.\n\nJust press the middle mouse button and start drawing one of the gestures, and after you are finished, release the mouse button. If you only need to paste the selection, it still works, just click the middle mouse button. (You can change the mouse button to use in the global settings).\n\nRight now, there are the following gestures available:\nmove right and back left - Forward (Alt+Right)\nmove left and back right - Back (Alt+Left)\nmove up and back down - Up (Alt+Up)\ncircle counterclockwise - Reload (F5)\n\nThe gesture shapes can be entered by performing them in the configuration dialog. You can also look at your numeric pad to help you: gestures are recognized like a 3x3 grid of fields, numbered 1 to 9.\n\nNote that you must perform exactly the gesture to trigger the action. Because of this, it is possible to enter more gestures for the action. You should try to avoid complicated gestures where you change the direction of mouse movement more than once. For instance, 45654 or 74123 are simple to perform, but 1236987 may be already quite difficult.\n\nThe conditions for all gestures are defined in this group. All these gestures are active only if the active window is Konqueror (class contains 'konqueror')."; + "khotkeysrc"."Data_2_7"."DataCount" = 4; + "khotkeysrc"."Data_2_7"."Enabled" = false; + "khotkeysrc"."Data_2_7"."Name" = "Konqi Gestures"; + "khotkeysrc"."Data_2_7"."SystemGroup" = 0; + "khotkeysrc"."Data_2_7"."Type" = "ACTION_DATA_GROUP"; + "khotkeysrc"."Data_2_7Conditions"."Comment" = "Konqueror window"; + "khotkeysrc"."Data_2_7Conditions"."ConditionsCount" = 1; + "khotkeysrc"."Data_2_7Conditions0"."Type" = "ACTIVE_WINDOW"; + "khotkeysrc"."Data_2_7Conditions0Window"."Comment" = "Konqueror"; + "khotkeysrc"."Data_2_7Conditions0Window"."WindowsCount" = 1; + "khotkeysrc"."Data_2_7Conditions0Window0"."Class" = "konqueror"; + "khotkeysrc"."Data_2_7Conditions0Window0"."ClassType" = 1; + "khotkeysrc"."Data_2_7Conditions0Window0"."Comment" = "Konqueror"; + "khotkeysrc"."Data_2_7Conditions0Window0"."Role" = ""; + "khotkeysrc"."Data_2_7Conditions0Window0"."RoleType" = 0; + "khotkeysrc"."Data_2_7Conditions0Window0"."Title" = ""; + "khotkeysrc"."Data_2_7Conditions0Window0"."TitleType" = 0; + "khotkeysrc"."Data_2_7Conditions0Window0"."Type" = "SIMPLE"; + "khotkeysrc"."Data_2_7Conditions0Window0"."WindowTypes" = 33; + "khotkeysrc"."Data_2_7_1"."Comment" = ""; + "khotkeysrc"."Data_2_7_1"."Enabled" = false; + "khotkeysrc"."Data_2_7_1"."Name" = "Back"; + "khotkeysrc"."Data_2_7_1"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_2_7_1Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_7_1Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_2_7_1Actions0"."Input" = "Alt+Left"; + "khotkeysrc"."Data_2_7_1Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_2_7_1Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_7_1Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_7_1Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_2_7_1Triggers"."TriggersCount" = 3; + "khotkeysrc"."Data_2_7_1Triggers0"."GesturePointData" = "0,0.0625,1,1,0.5,0.0625,0.0625,1,0.875,0.5,0.125,0.0625,1,0.75,0.5,0.1875,0.0625,1,0.625,0.5,0.25,0.0625,1,0.5,0.5,0.3125,0.0625,1,0.375,0.5,0.375,0.0625,1,0.25,0.5,0.4375,0.0625,1,0.125,0.5,0.5,0.0625,0,0,0.5,0.5625,0.0625,0,0.125,0.5,0.625,0.0625,0,0.25,0.5,0.6875,0.0625,0,0.375,0.5,0.75,0.0625,0,0.5,0.5,0.8125,0.0625,0,0.625,0.5,0.875,0.0625,0,0.75,0.5,0.9375,0.0625,0,0.875,0.5,1,0,0,1,0.5"; + "khotkeysrc"."Data_2_7_1Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_1Triggers1"."GesturePointData" = "0,0.0833333,1,0.5,0.5,0.0833333,0.0833333,1,0.375,0.5,0.166667,0.0833333,1,0.25,0.5,0.25,0.0833333,1,0.125,0.5,0.333333,0.0833333,0,0,0.5,0.416667,0.0833333,0,0.125,0.5,0.5,0.0833333,0,0.25,0.5,0.583333,0.0833333,0,0.375,0.5,0.666667,0.0833333,0,0.5,0.5,0.75,0.0833333,0,0.625,0.5,0.833333,0.0833333,0,0.75,0.5,0.916667,0.0833333,0,0.875,0.5,1,0,0,1,0.5"; + "khotkeysrc"."Data_2_7_1Triggers1"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_1Triggers2"."GesturePointData" = "0,0.0833333,1,1,0.5,0.0833333,0.0833333,1,0.875,0.5,0.166667,0.0833333,1,0.75,0.5,0.25,0.0833333,1,0.625,0.5,0.333333,0.0833333,1,0.5,0.5,0.416667,0.0833333,1,0.375,0.5,0.5,0.0833333,1,0.25,0.5,0.583333,0.0833333,1,0.125,0.5,0.666667,0.0833333,0,0,0.5,0.75,0.0833333,0,0.125,0.5,0.833333,0.0833333,0,0.25,0.5,0.916667,0.0833333,0,0.375,0.5,1,0,0,0.5,0.5"; + "khotkeysrc"."Data_2_7_1Triggers2"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_2"."Comment" = ""; + "khotkeysrc"."Data_2_7_2"."Enabled" = false; + "khotkeysrc"."Data_2_7_2"."Name" = "Forward"; + "khotkeysrc"."Data_2_7_2"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_2_7_2Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_7_2Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_2_7_2Actions0"."Input" = "Alt+Right"; + "khotkeysrc"."Data_2_7_2Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_2_7_2Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_7_2Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_7_2Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_2_7_2Triggers"."TriggersCount" = 3; + "khotkeysrc"."Data_2_7_2Triggers0"."GesturePointData" = "0,0.0625,0,0,0.5,0.0625,0.0625,0,0.125,0.5,0.125,0.0625,0,0.25,0.5,0.1875,0.0625,0,0.375,0.5,0.25,0.0625,0,0.5,0.5,0.3125,0.0625,0,0.625,0.5,0.375,0.0625,0,0.75,0.5,0.4375,0.0625,0,0.875,0.5,0.5,0.0625,1,1,0.5,0.5625,0.0625,1,0.875,0.5,0.625,0.0625,1,0.75,0.5,0.6875,0.0625,1,0.625,0.5,0.75,0.0625,1,0.5,0.5,0.8125,0.0625,1,0.375,0.5,0.875,0.0625,1,0.25,0.5,0.9375,0.0625,1,0.125,0.5,1,0,0,0,0.5"; + "khotkeysrc"."Data_2_7_2Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_2Triggers1"."GesturePointData" = "0,0.0833333,0,0.5,0.5,0.0833333,0.0833333,0,0.625,0.5,0.166667,0.0833333,0,0.75,0.5,0.25,0.0833333,0,0.875,0.5,0.333333,0.0833333,1,1,0.5,0.416667,0.0833333,1,0.875,0.5,0.5,0.0833333,1,0.75,0.5,0.583333,0.0833333,1,0.625,0.5,0.666667,0.0833333,1,0.5,0.5,0.75,0.0833333,1,0.375,0.5,0.833333,0.0833333,1,0.25,0.5,0.916667,0.0833333,1,0.125,0.5,1,0,0,0,0.5"; + "khotkeysrc"."Data_2_7_2Triggers1"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_2Triggers2"."GesturePointData" = "0,0.0833333,0,0,0.5,0.0833333,0.0833333,0,0.125,0.5,0.166667,0.0833333,0,0.25,0.5,0.25,0.0833333,0,0.375,0.5,0.333333,0.0833333,0,0.5,0.5,0.416667,0.0833333,0,0.625,0.5,0.5,0.0833333,0,0.75,0.5,0.583333,0.0833333,0,0.875,0.5,0.666667,0.0833333,1,1,0.5,0.75,0.0833333,1,0.875,0.5,0.833333,0.0833333,1,0.75,0.5,0.916667,0.0833333,1,0.625,0.5,1,0,0,0.5,0.5"; + "khotkeysrc"."Data_2_7_2Triggers2"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_3"."Comment" = ""; + "khotkeysrc"."Data_2_7_3"."Enabled" = false; + "khotkeysrc"."Data_2_7_3"."Name" = "Up"; + "khotkeysrc"."Data_2_7_3"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_2_7_3Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_7_3Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_2_7_3Actions0"."Input" = "Alt+Up"; + "khotkeysrc"."Data_2_7_3Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_2_7_3Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_7_3Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_7_3Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_2_7_3Triggers"."TriggersCount" = 3; + "khotkeysrc"."Data_2_7_3Triggers0"."GesturePointData" = "0,0.0625,-0.5,0.5,1,0.0625,0.0625,-0.5,0.5,0.875,0.125,0.0625,-0.5,0.5,0.75,0.1875,0.0625,-0.5,0.5,0.625,0.25,0.0625,-0.5,0.5,0.5,0.3125,0.0625,-0.5,0.5,0.375,0.375,0.0625,-0.5,0.5,0.25,0.4375,0.0625,-0.5,0.5,0.125,0.5,0.0625,0.5,0.5,0,0.5625,0.0625,0.5,0.5,0.125,0.625,0.0625,0.5,0.5,0.25,0.6875,0.0625,0.5,0.5,0.375,0.75,0.0625,0.5,0.5,0.5,0.8125,0.0625,0.5,0.5,0.625,0.875,0.0625,0.5,0.5,0.75,0.9375,0.0625,0.5,0.5,0.875,1,0,0,0.5,1"; + "khotkeysrc"."Data_2_7_3Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_3Triggers1"."GesturePointData" = "0,0.0833333,-0.5,0.5,1,0.0833333,0.0833333,-0.5,0.5,0.875,0.166667,0.0833333,-0.5,0.5,0.75,0.25,0.0833333,-0.5,0.5,0.625,0.333333,0.0833333,-0.5,0.5,0.5,0.416667,0.0833333,-0.5,0.5,0.375,0.5,0.0833333,-0.5,0.5,0.25,0.583333,0.0833333,-0.5,0.5,0.125,0.666667,0.0833333,0.5,0.5,0,0.75,0.0833333,0.5,0.5,0.125,0.833333,0.0833333,0.5,0.5,0.25,0.916667,0.0833333,0.5,0.5,0.375,1,0,0,0.5,0.5"; + "khotkeysrc"."Data_2_7_3Triggers1"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_3Triggers2"."GesturePointData" = "0,0.0833333,-0.5,0.5,0.5,0.0833333,0.0833333,-0.5,0.5,0.375,0.166667,0.0833333,-0.5,0.5,0.25,0.25,0.0833333,-0.5,0.5,0.125,0.333333,0.0833333,0.5,0.5,0,0.416667,0.0833333,0.5,0.5,0.125,0.5,0.0833333,0.5,0.5,0.25,0.583333,0.0833333,0.5,0.5,0.375,0.666667,0.0833333,0.5,0.5,0.5,0.75,0.0833333,0.5,0.5,0.625,0.833333,0.0833333,0.5,0.5,0.75,0.916667,0.0833333,0.5,0.5,0.875,1,0,0,0.5,1"; + "khotkeysrc"."Data_2_7_3Triggers2"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_4"."Comment" = ""; + "khotkeysrc"."Data_2_7_4"."Enabled" = false; + "khotkeysrc"."Data_2_7_4"."Name" = "Reload"; + "khotkeysrc"."Data_2_7_4"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_2_7_4Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_7_4Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_2_7_4Actions0"."Input" = "F5"; + "khotkeysrc"."Data_2_7_4Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_2_7_4Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_7_4Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_7_4Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_2_7_4Triggers"."TriggersCount" = 3; + "khotkeysrc"."Data_2_7_4Triggers0"."GesturePointData" = "0,0.03125,0,0,1,0.03125,0.03125,0,0.125,1,0.0625,0.03125,0,0.25,1,0.09375,0.03125,0,0.375,1,0.125,0.03125,0,0.5,1,0.15625,0.03125,0,0.625,1,0.1875,0.03125,0,0.75,1,0.21875,0.03125,0,0.875,1,0.25,0.03125,-0.5,1,1,0.28125,0.03125,-0.5,1,0.875,0.3125,0.03125,-0.5,1,0.75,0.34375,0.03125,-0.5,1,0.625,0.375,0.03125,-0.5,1,0.5,0.40625,0.03125,-0.5,1,0.375,0.4375,0.03125,-0.5,1,0.25,0.46875,0.03125,-0.5,1,0.125,0.5,0.03125,1,1,0,0.53125,0.03125,1,0.875,0,0.5625,0.03125,1,0.75,0,0.59375,0.03125,1,0.625,0,0.625,0.03125,1,0.5,0,0.65625,0.03125,1,0.375,0,0.6875,0.03125,1,0.25,0,0.71875,0.03125,1,0.125,0,0.75,0.03125,0.5,0,0,0.78125,0.03125,0.5,0,0.125,0.8125,0.03125,0.5,0,0.25,0.84375,0.03125,0.5,0,0.375,0.875,0.03125,0.5,0,0.5,0.90625,0.03125,0.5,0,0.625,0.9375,0.03125,0.5,0,0.75,0.96875,0.03125,0.5,0,0.875,1,0,0,0,1"; + "khotkeysrc"."Data_2_7_4Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_4Triggers1"."GesturePointData" = "0,0.0277778,0,0,1,0.0277778,0.0277778,0,0.125,1,0.0555556,0.0277778,0,0.25,1,0.0833333,0.0277778,0,0.375,1,0.111111,0.0277778,0,0.5,1,0.138889,0.0277778,0,0.625,1,0.166667,0.0277778,0,0.75,1,0.194444,0.0277778,0,0.875,1,0.222222,0.0277778,-0.5,1,1,0.25,0.0277778,-0.5,1,0.875,0.277778,0.0277778,-0.5,1,0.75,0.305556,0.0277778,-0.5,1,0.625,0.333333,0.0277778,-0.5,1,0.5,0.361111,0.0277778,-0.5,1,0.375,0.388889,0.0277778,-0.5,1,0.25,0.416667,0.0277778,-0.5,1,0.125,0.444444,0.0277778,1,1,0,0.472222,0.0277778,1,0.875,0,0.5,0.0277778,1,0.75,0,0.527778,0.0277778,1,0.625,0,0.555556,0.0277778,1,0.5,0,0.583333,0.0277778,1,0.375,0,0.611111,0.0277778,1,0.25,0,0.638889,0.0277778,1,0.125,0,0.666667,0.0277778,0.5,0,0,0.694444,0.0277778,0.5,0,0.125,0.722222,0.0277778,0.5,0,0.25,0.75,0.0277778,0.5,0,0.375,0.777778,0.0277778,0.5,0,0.5,0.805556,0.0277778,0.5,0,0.625,0.833333,0.0277778,0.5,0,0.75,0.861111,0.0277778,0.5,0,0.875,0.888889,0.0277778,0,0,1,0.916667,0.0277778,0,0.125,1,0.944444,0.0277778,0,0.25,1,0.972222,0.0277778,0,0.375,1,1,0,0,0.5,1"; + "khotkeysrc"."Data_2_7_4Triggers1"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_7_4Triggers2"."GesturePointData" = "0,0.0277778,0.5,0,0.5,0.0277778,0.0277778,0.5,0,0.625,0.0555556,0.0277778,0.5,0,0.75,0.0833333,0.0277778,0.5,0,0.875,0.111111,0.0277778,0,0,1,0.138889,0.0277778,0,0.125,1,0.166667,0.0277778,0,0.25,1,0.194444,0.0277778,0,0.375,1,0.222222,0.0277778,0,0.5,1,0.25,0.0277778,0,0.625,1,0.277778,0.0277778,0,0.75,1,0.305556,0.0277778,0,0.875,1,0.333333,0.0277778,-0.5,1,1,0.361111,0.0277778,-0.5,1,0.875,0.388889,0.0277778,-0.5,1,0.75,0.416667,0.0277778,-0.5,1,0.625,0.444444,0.0277778,-0.5,1,0.5,0.472222,0.0277778,-0.5,1,0.375,0.5,0.0277778,-0.5,1,0.25,0.527778,0.0277778,-0.5,1,0.125,0.555556,0.0277778,1,1,0,0.583333,0.0277778,1,0.875,0,0.611111,0.0277778,1,0.75,0,0.638889,0.0277778,1,0.625,0,0.666667,0.0277778,1,0.5,0,0.694444,0.0277778,1,0.375,0,0.722222,0.0277778,1,0.25,0,0.75,0.0277778,1,0.125,0,0.777778,0.0277778,0.5,0,0,0.805556,0.0277778,0.5,0,0.125,0.833333,0.0277778,0.5,0,0.25,0.861111,0.0277778,0.5,0,0.375,0.888889,0.0277778,0.5,0,0.5,0.916667,0.0277778,0.5,0,0.625,0.944444,0.0277778,0.5,0,0.75,0.972222,0.0277778,0.5,0,0.875,1,0,0,0,1"; + "khotkeysrc"."Data_2_7_4Triggers2"."Type" = "GESTURE"; + "khotkeysrc"."Data_2_8"."Comment" = "After pressing Win+E (Tux+E) a WWW browser will be launched, and it will open http://www.kde.org . You may run all kind of commands you can run in minicli (Alt+F2)."; + "khotkeysrc"."Data_2_8"."Enabled" = false; + "khotkeysrc"."Data_2_8"."Name" = "Go to KDE Website"; + "khotkeysrc"."Data_2_8"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_2_8Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_2_8Actions0"."CommandURL" = "http://www.kde.org"; + "khotkeysrc"."Data_2_8Actions0"."Type" = "COMMAND_URL"; + "khotkeysrc"."Data_2_8Conditions"."Comment" = ""; + "khotkeysrc"."Data_2_8Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_2_8Triggers"."Comment" = "Simple_action"; + "khotkeysrc"."Data_2_8Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_2_8Triggers0"."Key" = "Meta+E"; + "khotkeysrc"."Data_2_8Triggers0"."Type" = "SHORTCUT"; + "khotkeysrc"."Data_2_8Triggers0"."Uuid" = "{1f98e9e9-756a-48be-a9a5-75030b41c595}"; + "khotkeysrc"."Data_3"."Comment" = "Basic Konqueror gestures."; + "khotkeysrc"."Data_3"."DataCount" = 14; + "khotkeysrc"."Data_3"."Enabled" = true; + "khotkeysrc"."Data_3"."ImportId" = "konqueror_gestures_kde321"; + "khotkeysrc"."Data_3"."Name" = "Konqueror Gestures"; + "khotkeysrc"."Data_3"."SystemGroup" = 0; + "khotkeysrc"."Data_3"."Type" = "ACTION_DATA_GROUP"; + "khotkeysrc"."Data_3Conditions"."Comment" = "Konqueror window"; + "khotkeysrc"."Data_3Conditions"."ConditionsCount" = 1; + "khotkeysrc"."Data_3Conditions0"."Type" = "ACTIVE_WINDOW"; + "khotkeysrc"."Data_3Conditions0Window"."Comment" = "Konqueror"; + "khotkeysrc"."Data_3Conditions0Window"."WindowsCount" = 1; + "khotkeysrc"."Data_3Conditions0Window0"."Class" = "^konquerors"; + "khotkeysrc"."Data_3Conditions0Window0"."ClassType" = 3; + "khotkeysrc"."Data_3Conditions0Window0"."Comment" = "Konqueror"; + "khotkeysrc"."Data_3Conditions0Window0"."Role" = "konqueror-mainwindow#1"; + "khotkeysrc"."Data_3Conditions0Window0"."RoleType" = 0; + "khotkeysrc"."Data_3Conditions0Window0"."Title" = "file:/ - Konqueror"; + "khotkeysrc"."Data_3Conditions0Window0"."TitleType" = 0; + "khotkeysrc"."Data_3Conditions0Window0"."Type" = "SIMPLE"; + "khotkeysrc"."Data_3Conditions0Window0"."WindowTypes" = 1; + "khotkeysrc"."Data_3_1"."Comment" = "Press, move left, release."; + "khotkeysrc"."Data_3_1"."Enabled" = true; + "khotkeysrc"."Data_3_1"."Name" = "Back"; + "khotkeysrc"."Data_3_1"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_10"."Comment" = "Opera-style: Press, move up, release.\nNOTE: Conflicts with 'New Tab', and as such is disabled by default."; + "khotkeysrc"."Data_3_10"."Enabled" = false; + "khotkeysrc"."Data_3_10"."Name" = "Stop Loading"; + "khotkeysrc"."Data_3_10"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_10Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_10Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_10Actions0"."Input" = "Escape\n"; + "khotkeysrc"."Data_3_10Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_10Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_10Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_10Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_10Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_10Triggers0"."GesturePointData" = "0,0.125,-0.5,0.5,1,0.125,0.125,-0.5,0.5,0.875,0.25,0.125,-0.5,0.5,0.75,0.375,0.125,-0.5,0.5,0.625,0.5,0.125,-0.5,0.5,0.5,0.625,0.125,-0.5,0.5,0.375,0.75,0.125,-0.5,0.5,0.25,0.875,0.125,-0.5,0.5,0.125,1,0,0,0.5,0"; + "khotkeysrc"."Data_3_10Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_11"."Comment" = "Going up in URL/directory structure.\nMozilla-style: Press, move up, move left, move up, release."; + "khotkeysrc"."Data_3_11"."Enabled" = true; + "khotkeysrc"."Data_3_11"."Name" = "Up"; + "khotkeysrc"."Data_3_11"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_11Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_11Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_11Actions0"."Input" = "Alt+Up"; + "khotkeysrc"."Data_3_11Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_11Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_11Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_11Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_11Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_11Triggers0"."GesturePointData" = "0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,1,1,0.5,0.3125,0.0625,1,0.875,0.5,0.375,0.0625,1,0.75,0.5,0.4375,0.0625,1,0.625,0.5,0.5,0.0625,1,0.5,0.5,0.5625,0.0625,1,0.375,0.5,0.625,0.0625,1,0.25,0.5,0.6875,0.0625,1,0.125,0.5,0.75,0.0625,-0.5,0,0.5,0.8125,0.0625,-0.5,0,0.375,0.875,0.0625,-0.5,0,0.25,0.9375,0.0625,-0.5,0,0.125,1,0,0,0,0"; + "khotkeysrc"."Data_3_11Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_12"."Comment" = "Going up in URL/directory structure.\nOpera-style: Press, move up, move left, move up, release.\nNOTE: Conflicts with \"Activate Previous Tab\", and as such is disabled by default."; + "khotkeysrc"."Data_3_12"."Enabled" = false; + "khotkeysrc"."Data_3_12"."Name" = "Up #2"; + "khotkeysrc"."Data_3_12"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_12Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_12Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_12Actions0"."Input" = "Alt+Up\n"; + "khotkeysrc"."Data_3_12Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_12Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_12Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_12Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_12Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_12Triggers0"."GesturePointData" = "0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,-0.5,1,0.5,0.3125,0.0625,-0.5,1,0.375,0.375,0.0625,-0.5,1,0.25,0.4375,0.0625,-0.5,1,0.125,0.5,0.0625,1,1,0,0.5625,0.0625,1,0.875,0,0.625,0.0625,1,0.75,0,0.6875,0.0625,1,0.625,0,0.75,0.0625,1,0.5,0,0.8125,0.0625,1,0.375,0,0.875,0.0625,1,0.25,0,0.9375,0.0625,1,0.125,0,1,0,0,0,0"; + "khotkeysrc"."Data_3_12Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_13"."Comment" = "Press, move up, move right, release."; + "khotkeysrc"."Data_3_13"."Enabled" = true; + "khotkeysrc"."Data_3_13"."Name" = "Activate Next Tab"; + "khotkeysrc"."Data_3_13"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_13Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_13Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_13Actions0"."Input" = "Ctrl+.\n"; + "khotkeysrc"."Data_3_13Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_13Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_13Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_13Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_13Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_13Triggers0"."GesturePointData" = "0,0.0625,-0.5,0,1,0.0625,0.0625,-0.5,0,0.875,0.125,0.0625,-0.5,0,0.75,0.1875,0.0625,-0.5,0,0.625,0.25,0.0625,-0.5,0,0.5,0.3125,0.0625,-0.5,0,0.375,0.375,0.0625,-0.5,0,0.25,0.4375,0.0625,-0.5,0,0.125,0.5,0.0625,0,0,0,0.5625,0.0625,0,0.125,0,0.625,0.0625,0,0.25,0,0.6875,0.0625,0,0.375,0,0.75,0.0625,0,0.5,0,0.8125,0.0625,0,0.625,0,0.875,0.0625,0,0.75,0,0.9375,0.0625,0,0.875,0,1,0,0,1,0"; + "khotkeysrc"."Data_3_13Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_14"."Comment" = "Press, move up, move left, release."; + "khotkeysrc"."Data_3_14"."Enabled" = true; + "khotkeysrc"."Data_3_14"."Name" = "Activate Previous Tab"; + "khotkeysrc"."Data_3_14"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_14Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_14Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_14Actions0"."Input" = "Ctrl+,"; + "khotkeysrc"."Data_3_14Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_14Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_14Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_14Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_14Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_14Triggers0"."GesturePointData" = "0,0.0625,-0.5,1,1,0.0625,0.0625,-0.5,1,0.875,0.125,0.0625,-0.5,1,0.75,0.1875,0.0625,-0.5,1,0.625,0.25,0.0625,-0.5,1,0.5,0.3125,0.0625,-0.5,1,0.375,0.375,0.0625,-0.5,1,0.25,0.4375,0.0625,-0.5,1,0.125,0.5,0.0625,1,1,0,0.5625,0.0625,1,0.875,0,0.625,0.0625,1,0.75,0,0.6875,0.0625,1,0.625,0,0.75,0.0625,1,0.5,0,0.8125,0.0625,1,0.375,0,0.875,0.0625,1,0.25,0,0.9375,0.0625,1,0.125,0,1,0,0,0,0"; + "khotkeysrc"."Data_3_14Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_1Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_1Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_1Actions0"."Input" = "Alt+Left"; + "khotkeysrc"."Data_3_1Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_1Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_1Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_1Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_1Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_1Triggers0"."GesturePointData" = "0,0.125,1,1,0.5,0.125,0.125,1,0.875,0.5,0.25,0.125,1,0.75,0.5,0.375,0.125,1,0.625,0.5,0.5,0.125,1,0.5,0.5,0.625,0.125,1,0.375,0.5,0.75,0.125,1,0.25,0.5,0.875,0.125,1,0.125,0.5,1,0,0,0,0.5"; + "khotkeysrc"."Data_3_1Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_2"."Comment" = "Press, move down, move up, move down, release."; + "khotkeysrc"."Data_3_2"."Enabled" = true; + "khotkeysrc"."Data_3_2"."Name" = "Duplicate Tab"; + "khotkeysrc"."Data_3_2"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_2Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_2Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_2Actions0"."Input" = "Ctrl+Shift+D\n"; + "khotkeysrc"."Data_3_2Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_2Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_2Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_2Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_2Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_2Triggers0"."GesturePointData" = "0,0.0416667,0.5,0.5,0,0.0416667,0.0416667,0.5,0.5,0.125,0.0833333,0.0416667,0.5,0.5,0.25,0.125,0.0416667,0.5,0.5,0.375,0.166667,0.0416667,0.5,0.5,0.5,0.208333,0.0416667,0.5,0.5,0.625,0.25,0.0416667,0.5,0.5,0.75,0.291667,0.0416667,0.5,0.5,0.875,0.333333,0.0416667,-0.5,0.5,1,0.375,0.0416667,-0.5,0.5,0.875,0.416667,0.0416667,-0.5,0.5,0.75,0.458333,0.0416667,-0.5,0.5,0.625,0.5,0.0416667,-0.5,0.5,0.5,0.541667,0.0416667,-0.5,0.5,0.375,0.583333,0.0416667,-0.5,0.5,0.25,0.625,0.0416667,-0.5,0.5,0.125,0.666667,0.0416667,0.5,0.5,0,0.708333,0.0416667,0.5,0.5,0.125,0.75,0.0416667,0.5,0.5,0.25,0.791667,0.0416667,0.5,0.5,0.375,0.833333,0.0416667,0.5,0.5,0.5,0.875,0.0416667,0.5,0.5,0.625,0.916667,0.0416667,0.5,0.5,0.75,0.958333,0.0416667,0.5,0.5,0.875,1,0,0,0.5,1"; + "khotkeysrc"."Data_3_2Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_3"."Comment" = "Press, move down, move up, release."; + "khotkeysrc"."Data_3_3"."Enabled" = true; + "khotkeysrc"."Data_3_3"."Name" = "Duplicate Window"; + "khotkeysrc"."Data_3_3"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_3Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_3Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_3Actions0"."Input" = "Ctrl+D\n"; + "khotkeysrc"."Data_3_3Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_3Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_3Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_3Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_3Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_3Triggers0"."GesturePointData" = "0,0.0625,0.5,0.5,0,0.0625,0.0625,0.5,0.5,0.125,0.125,0.0625,0.5,0.5,0.25,0.1875,0.0625,0.5,0.5,0.375,0.25,0.0625,0.5,0.5,0.5,0.3125,0.0625,0.5,0.5,0.625,0.375,0.0625,0.5,0.5,0.75,0.4375,0.0625,0.5,0.5,0.875,0.5,0.0625,-0.5,0.5,1,0.5625,0.0625,-0.5,0.5,0.875,0.625,0.0625,-0.5,0.5,0.75,0.6875,0.0625,-0.5,0.5,0.625,0.75,0.0625,-0.5,0.5,0.5,0.8125,0.0625,-0.5,0.5,0.375,0.875,0.0625,-0.5,0.5,0.25,0.9375,0.0625,-0.5,0.5,0.125,1,0,0,0.5,0"; + "khotkeysrc"."Data_3_3Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_4"."Comment" = "Press, move right, release."; + "khotkeysrc"."Data_3_4"."Enabled" = true; + "khotkeysrc"."Data_3_4"."Name" = "Forward"; + "khotkeysrc"."Data_3_4"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_4Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_4Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_4Actions0"."Input" = "Alt+Right"; + "khotkeysrc"."Data_3_4Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_4Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_4Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_4Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_4Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_4Triggers0"."GesturePointData" = "0,0.125,0,0,0.5,0.125,0.125,0,0.125,0.5,0.25,0.125,0,0.25,0.5,0.375,0.125,0,0.375,0.5,0.5,0.125,0,0.5,0.5,0.625,0.125,0,0.625,0.5,0.75,0.125,0,0.75,0.5,0.875,0.125,0,0.875,0.5,1,0,0,1,0.5"; + "khotkeysrc"."Data_3_4Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_5"."Comment" = "Press, move down, move half up, move right, move down, release.\n(Drawing a lowercase 'h'.)"; + "khotkeysrc"."Data_3_5"."Enabled" = true; + "khotkeysrc"."Data_3_5"."Name" = "Home"; + "khotkeysrc"."Data_3_5"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_5Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_5Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_5Actions0"."Input" = "Alt+Home\n"; + "khotkeysrc"."Data_3_5Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_5Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_5Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_5Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_5Triggers"."TriggersCount" = 2; + "khotkeysrc"."Data_3_5Triggers0"."GesturePointData" = "0,0.0461748,0.5,0,0,0.0461748,0.0461748,0.5,0,0.125,0.0923495,0.0461748,0.5,0,0.25,0.138524,0.0461748,0.5,0,0.375,0.184699,0.0461748,0.5,0,0.5,0.230874,0.0461748,0.5,0,0.625,0.277049,0.0461748,0.5,0,0.75,0.323223,0.0461748,0.5,0,0.875,0.369398,0.065301,-0.25,0,1,0.434699,0.065301,-0.25,0.125,0.875,0.5,0.065301,-0.25,0.25,0.75,0.565301,0.065301,-0.25,0.375,0.625,0.630602,0.0461748,0,0.5,0.5,0.676777,0.0461748,0,0.625,0.5,0.722951,0.0461748,0,0.75,0.5,0.769126,0.0461748,0,0.875,0.5,0.815301,0.0461748,0.5,1,0.5,0.861476,0.0461748,0.5,1,0.625,0.90765,0.0461748,0.5,1,0.75,0.953825,0.0461748,0.5,1,0.875,1,0,0,1,1"; + "khotkeysrc"."Data_3_5Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_5Triggers1"."GesturePointData" = "0,0.0416667,0.5,0,0,0.0416667,0.0416667,0.5,0,0.125,0.0833333,0.0416667,0.5,0,0.25,0.125,0.0416667,0.5,0,0.375,0.166667,0.0416667,0.5,0,0.5,0.208333,0.0416667,0.5,0,0.625,0.25,0.0416667,0.5,0,0.75,0.291667,0.0416667,0.5,0,0.875,0.333333,0.0416667,-0.5,0,1,0.375,0.0416667,-0.5,0,0.875,0.416667,0.0416667,-0.5,0,0.75,0.458333,0.0416667,-0.5,0,0.625,0.5,0.0416667,0,0,0.5,0.541667,0.0416667,0,0.125,0.5,0.583333,0.0416667,0,0.25,0.5,0.625,0.0416667,0,0.375,0.5,0.666667,0.0416667,0,0.5,0.5,0.708333,0.0416667,0,0.625,0.5,0.75,0.0416667,0,0.75,0.5,0.791667,0.0416667,0,0.875,0.5,0.833333,0.0416667,0.5,1,0.5,0.875,0.0416667,0.5,1,0.625,0.916667,0.0416667,0.5,1,0.75,0.958333,0.0416667,0.5,1,0.875,1,0,0,1,1"; + "khotkeysrc"."Data_3_5Triggers1"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_6"."Comment" = "Press, move right, move down, move right, release.\nMozilla-style: Press, move down, move right, release."; + "khotkeysrc"."Data_3_6"."Enabled" = true; + "khotkeysrc"."Data_3_6"."Name" = "Close Tab"; + "khotkeysrc"."Data_3_6"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_6Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_6Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_6Actions0"."Input" = "Ctrl+W\n"; + "khotkeysrc"."Data_3_6Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_6Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_6Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_6Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_6Triggers"."TriggersCount" = 2; + "khotkeysrc"."Data_3_6Triggers0"."GesturePointData" = "0,0.0625,0,0,0,0.0625,0.0625,0,0.125,0,0.125,0.0625,0,0.25,0,0.1875,0.0625,0,0.375,0,0.25,0.0625,0.5,0.5,0,0.3125,0.0625,0.5,0.5,0.125,0.375,0.0625,0.5,0.5,0.25,0.4375,0.0625,0.5,0.5,0.375,0.5,0.0625,0.5,0.5,0.5,0.5625,0.0625,0.5,0.5,0.625,0.625,0.0625,0.5,0.5,0.75,0.6875,0.0625,0.5,0.5,0.875,0.75,0.0625,0,0.5,1,0.8125,0.0625,0,0.625,1,0.875,0.0625,0,0.75,1,0.9375,0.0625,0,0.875,1,1,0,0,1,1"; + "khotkeysrc"."Data_3_6Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_6Triggers1"."GesturePointData" = "0,0.0625,0.5,0,0,0.0625,0.0625,0.5,0,0.125,0.125,0.0625,0.5,0,0.25,0.1875,0.0625,0.5,0,0.375,0.25,0.0625,0.5,0,0.5,0.3125,0.0625,0.5,0,0.625,0.375,0.0625,0.5,0,0.75,0.4375,0.0625,0.5,0,0.875,0.5,0.0625,0,0,1,0.5625,0.0625,0,0.125,1,0.625,0.0625,0,0.25,1,0.6875,0.0625,0,0.375,1,0.75,0.0625,0,0.5,1,0.8125,0.0625,0,0.625,1,0.875,0.0625,0,0.75,1,0.9375,0.0625,0,0.875,1,1,0,0,1,1"; + "khotkeysrc"."Data_3_6Triggers1"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_7"."Comment" = "Press, move up, release.\nConflicts with Opera-style 'Up #2', which is disabled by default."; + "khotkeysrc"."Data_3_7"."Enabled" = true; + "khotkeysrc"."Data_3_7"."Name" = "New Tab"; + "khotkeysrc"."Data_3_7"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_7Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_7Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_7Actions0"."Input" = "Ctrl+Shift+N"; + "khotkeysrc"."Data_3_7Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_7Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_7Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_7Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_7Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_7Triggers0"."GesturePointData" = "0,0.125,-0.5,0.5,1,0.125,0.125,-0.5,0.5,0.875,0.25,0.125,-0.5,0.5,0.75,0.375,0.125,-0.5,0.5,0.625,0.5,0.125,-0.5,0.5,0.5,0.625,0.125,-0.5,0.5,0.375,0.75,0.125,-0.5,0.5,0.25,0.875,0.125,-0.5,0.5,0.125,1,0,0,0.5,0"; + "khotkeysrc"."Data_3_7Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_8"."Comment" = "Press, move down, release."; + "khotkeysrc"."Data_3_8"."Enabled" = true; + "khotkeysrc"."Data_3_8"."Name" = "New Window"; + "khotkeysrc"."Data_3_8"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_8Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_8Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_8Actions0"."Input" = "Ctrl+N\n"; + "khotkeysrc"."Data_3_8Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_8Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_8Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_8Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_8Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_8Triggers0"."GesturePointData" = "0,0.125,0.5,0.5,0,0.125,0.125,0.5,0.5,0.125,0.25,0.125,0.5,0.5,0.25,0.375,0.125,0.5,0.5,0.375,0.5,0.125,0.5,0.5,0.5,0.625,0.125,0.5,0.5,0.625,0.75,0.125,0.5,0.5,0.75,0.875,0.125,0.5,0.5,0.875,1,0,0,0.5,1"; + "khotkeysrc"."Data_3_8Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."Data_3_9"."Comment" = "Press, move up, move down, release."; + "khotkeysrc"."Data_3_9"."Enabled" = true; + "khotkeysrc"."Data_3_9"."Name" = "Reload"; + "khotkeysrc"."Data_3_9"."Type" = "SIMPLE_ACTION_DATA"; + "khotkeysrc"."Data_3_9Actions"."ActionsCount" = 1; + "khotkeysrc"."Data_3_9Actions0"."DestinationWindow" = 2; + "khotkeysrc"."Data_3_9Actions0"."Input" = "F5"; + "khotkeysrc"."Data_3_9Actions0"."Type" = "KEYBOARD_INPUT"; + "khotkeysrc"."Data_3_9Conditions"."Comment" = ""; + "khotkeysrc"."Data_3_9Conditions"."ConditionsCount" = 0; + "khotkeysrc"."Data_3_9Triggers"."Comment" = "Gesture_triggers"; + "khotkeysrc"."Data_3_9Triggers"."TriggersCount" = 1; + "khotkeysrc"."Data_3_9Triggers0"."GesturePointData" = "0,0.0625,-0.5,0.5,1,0.0625,0.0625,-0.5,0.5,0.875,0.125,0.0625,-0.5,0.5,0.75,0.1875,0.0625,-0.5,0.5,0.625,0.25,0.0625,-0.5,0.5,0.5,0.3125,0.0625,-0.5,0.5,0.375,0.375,0.0625,-0.5,0.5,0.25,0.4375,0.0625,-0.5,0.5,0.125,0.5,0.0625,0.5,0.5,0,0.5625,0.0625,0.5,0.5,0.125,0.625,0.0625,0.5,0.5,0.25,0.6875,0.0625,0.5,0.5,0.375,0.75,0.0625,0.5,0.5,0.5,0.8125,0.0625,0.5,0.5,0.625,0.875,0.0625,0.5,0.5,0.75,0.9375,0.0625,0.5,0.5,0.875,1,0,0,0.5,1"; + "khotkeysrc"."Data_3_9Triggers0"."Type" = "GESTURE"; + "khotkeysrc"."General"."AllowKDEAppsToRememberWindowPositions" = ""; + "khotkeysrc"."General"."AllowKDEAppsToRememberWindowPositions\x5b$d\x5d" = ""; + "khotkeysrc"."General"."ColorSchemeHash\x5b$d\x5d" = ""; + "khotkeysrc"."General"."ColorScheme\x5b$d\x5d" = ""; + "khotkeysrc"."Gestures"."Disabled" = true; + "khotkeysrc"."Gestures"."MouseButton" = 2; + "khotkeysrc"."Gestures"."Timeout" = 300; + "khotkeysrc"."GesturesExclude"."Comment" = ""; + "khotkeysrc"."GesturesExclude"."WindowsCount" = 0; + "khotkeysrc"."Icons"."Theme" = ""; + "khotkeysrc"."Icons"."Theme\x5b$d\x5d" = ""; + "khotkeysrc"."KDE"."LookAndFeelPackage\x5b$d\x5d" = ""; + "khotkeysrc"."KDE"."SingleClick" = ""; + "khotkeysrc"."KDE"."SingleClick\x5b$d\x5d" = ""; + "khotkeysrc"."KDE"."widgetStyle" = ""; + "khotkeysrc"."KDE"."widgetStyle\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Allow Expansion" = ""; + "khotkeysrc"."KFileDialog Settings"."Allow Expansion\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Automatically select filename extension" = ""; + "khotkeysrc"."KFileDialog Settings"."Automatically select filename extension\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Breadcrumb Navigation" = ""; + "khotkeysrc"."KFileDialog Settings"."Breadcrumb Navigation\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Decoration position" = ""; + "khotkeysrc"."KFileDialog Settings"."Decoration position\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."LocationCombo Completionmode" = ""; + "khotkeysrc"."KFileDialog Settings"."LocationCombo Completionmode\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."PathCombo Completionmode" = ""; + "khotkeysrc"."KFileDialog Settings"."PathCombo Completionmode\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Bookmarks" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Bookmarks\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Full Path" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Full Path\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Inline Previews" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Inline Previews\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Preview" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Preview\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Speedbar" = ""; + "khotkeysrc"."KFileDialog Settings"."Show Speedbar\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Show hidden files" = ""; + "khotkeysrc"."KFileDialog Settings"."Show hidden files\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort by" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort by\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort directories first" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort directories first\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort hidden files last" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort hidden files last\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort reversed" = ""; + "khotkeysrc"."KFileDialog Settings"."Sort reversed\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."Speedbar Width" = ""; + "khotkeysrc"."KFileDialog Settings"."Speedbar Width\x5b$d\x5d" = ""; + "khotkeysrc"."KFileDialog Settings"."View Style" = ""; + "khotkeysrc"."KFileDialog Settings"."View Style\x5b$d\x5d" = ""; + "khotkeysrc"."Main"."AlreadyImported" = "defaults,kde32b1,konqueror_gestures_kde321"; + "khotkeysrc"."Main"."Disabled" = false; + "khotkeysrc"."Voice"."Shortcut" = ""; + "khotkeysrc"."WM"."activeBackground" = ""; + "khotkeysrc"."WM"."activeBackground\x5b$d\x5d" = ""; + "khotkeysrc"."WM"."activeBlend" = ""; + "khotkeysrc"."WM"."activeBlend\x5b$d\x5d" = ""; + "khotkeysrc"."WM"."activeForeground" = ""; + "khotkeysrc"."WM"."activeForeground\x5b$d\x5d" = ""; + "khotkeysrc"."WM"."inactiveBackground" = ""; + "khotkeysrc"."WM"."inactiveBackground\x5b$d\x5d" = ""; + "khotkeysrc"."WM"."inactiveBlend" = ""; + "khotkeysrc"."WM"."inactiveBlend\x5b$d\x5d" = ""; + "khotkeysrc"."WM"."inactiveForeground" = ""; + "khotkeysrc"."WM"."inactiveForeground\x5b$d\x5d" = ""; + "kscreenlockerrc"."Daemon"."Autolock" = false; + "kscreenlockerrc"."Greeter/Wallpaper/org/kde/image/General"."Image" = config.stylix.image; + "kscreenlockerrc"."Greeter/Wallpaper/org/kde/image/General"."FillMode" = 1; + "ksplashrc"."KSplash"."Theme" = ""; + "kwalletrc"."Wallet"."First Use" = false; + "kwinrc"."Desktops"."Id_1" = "7dfca09a-7b8f-4f7b-9acb-9b9e9eda8090"; + "kwinrc"."Desktops"."Number" = 1; + "kwinrc"."Desktops"."Rows" = 1; + "kwinrc"."Effect-blur"."NoiseStrength" = 14; + "kwinrc"."Effect-blurplus"."BlurDecorations" = true; + "kwinrc"."Effect-blurplus"."BlurDocks" = true; + "kwinrc"."Effect-blurplus"."BlurMatching" = false; + "kwinrc"."Effect-blurplus"."BlurMenus" = true; + "kwinrc"."Effect-blurplus"."BlurNonMatching" = true; + "kwinrc"."Effect-blurplus"."BlurStrength" = 6; + "kwinrc"."Effect-blurplus"."NoiseStrength" = 9; + "kwinrc"."Effect-blurplus"."PaintAsTranslucent" = true; + "kwinrc"."Effect-blurplus"."WindowClasses" = ""; + "kwinrc"."NightColor"."Active" = true; + "kwinrc"."NightColor"."Mode" = "Constant"; + "kwinrc"."NightColor"."NightTemperature" = 2800; + "kwinrc"."Plugins"."blurEnabled" = false; + "kwinrc"."Plugins"."contrastEnabled" = true; + "kwinrc"."Plugins"."diminactiveEnabled" = true; + "kwinrc"."Plugins"."dimscreenEnabled" = true; + "kwinrc"."Plugins"."forceblurEnabled" = true; + "kwinrc"."Plugins"."translucencyEnabled" = true; + "kwinrc"."Tiling"."padding" = 4; + "kwinrc"."Tiling/210922b3-3a6e-51f5-91ba-890c244e8799"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; + "kwinrc"."Tiling/213a9620-187e-58a6-b80b-85d8fb95dfce"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; + "kwinrc"."Tiling/31bcecfc-99a3-575a-852e-eb44d7d40d77"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; + "kwinrc"."Tiling/631e511d-5253-59c4-b851-807038351db0"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; + "kwinrc"."Tiling/90d850f3-1c43-54c3-b9b7-d85ed27c9140"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; + "kwinrc"."Tiling/afce9710-fc0e-580f-b02c-d719c208ba20"."tiles" = "{\"layoutDirection\":\"horizontal\",\"tiles\":[{\"width\":0.25},{\"width\":0.5},{\"width\":0.25}]}"; + "kwinrc"."Xwayland"."Scale" = 1; + "kwinrc"."org.kde.kdecoration2"."ButtonsOnRight" = "HIAFX"; + "kwinrc"."org.kde.kdecoration2"."theme" = "Breeze"; + "plasma-localerc"."Formats"."LANG" = "en_US.UTF-8"; + "plasmarc"."Theme"."name" = "default"; + "plasmarc"."Wallpapers"."usersWallpapers" = config.stylix.image; + "systemsettingsrc"."KFileDialog Settings"."detailViewIconSize" = 16; + "systemsettingsrc"."systemsettings_sidebar_mode"."HighlightNonDefaultSettings" = true; + }; + }; + }; +} From d63f9982f480db37380e8fbcdae7bb90f530342a Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 12 Feb 2025 14:12:35 -0600 Subject: [PATCH 115/317] Why isn't nix-mode part of prog-mode? --- modules/user/emacs/init.el | 2 +- modules/user/emacs/lib/line-wrapping-and-numbers.el | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 18eb187..e0efb83 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -139,7 +139,7 @@ (use-package line-wrapping-and-numbers :load-path "./lib" - :after (org markdown git-timemachine)) + :after (org markdown git-timemachine nix-mode)) (use-package ultra-scroll :init diff --git a/modules/user/emacs/lib/line-wrapping-and-numbers.el b/modules/user/emacs/lib/line-wrapping-and-numbers.el index 20b4c5c..cc85951 100644 --- a/modules/user/emacs/lib/line-wrapping-and-numbers.el +++ b/modules/user/emacs/lib/line-wrapping-and-numbers.el @@ -33,6 +33,8 @@ (add-hook 'markdown-mode-hook 'visual-line-mode) (add-hook 'prog-mode-hook 'truncate-lines-on) (add-hook 'prog-mode-hook 'visual-line-mode-off) +(add-hook 'nix-mode-hook 'truncate-lines-on) +(add-hook 'nix-mode-hook 'visual-line-mode-off) (defun apply-proper-line-wrapping () "Apply proper line wrapping and visual line mode settings according to whether or not the current mode derives from `prog-mode`." (if (derived-mode-p 'prog-mode) From f224e7cfc1ec8e7987ef31b843d11f462a35648c Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 12 Feb 2025 14:12:54 -0600 Subject: [PATCH 116/317] Move aliases for extras --- modules/user/shell/default.nix | 3 --- modules/user/shell/term-apps-extra.nix | 6 ++++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/user/shell/default.nix b/modules/user/shell/default.nix index 1caf946..79daedf 100644 --- a/modules/user/shell/default.nix +++ b/modules/user/shell/default.nix @@ -21,9 +21,6 @@ in { htop = "btm"; fd = "fd -Lu"; w3m = "w3m -no-cookie -v"; - neofetch = "disfetch"; - fetch = "disfetch"; - gitfetch = "onefetch"; "," = "comma"; ",," = "comma-shell"; }; diff --git a/modules/user/shell/term-apps-extra.nix b/modules/user/shell/term-apps-extra.nix index d85ef9e..3f74d82 100644 --- a/modules/user/shell/term-apps-extra.nix +++ b/modules/user/shell/term-apps-extra.nix @@ -42,5 +42,11 @@ in { }; }) ]; + + programs.zsh.shellAliases = { + neofetch = "disfetch"; + fetch = "disfetch"; + gitfetch = "onefetch"; + }; }; } From 52ce2d1cb1dd27d320452061c581eb6401216f3d Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 12 Feb 2025 14:13:04 -0600 Subject: [PATCH 117/317] Arduinos --- modules/user/engineering/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/user/engineering/default.nix b/modules/user/engineering/default.nix index e76158f..2ef6398 100644 --- a/modules/user/engineering/default.nix +++ b/modules/user/engineering/default.nix @@ -15,6 +15,7 @@ in { openscad kicad cura-appimage + arduino-ide ]; }; } From 25b7cbb91974530ca601faa1fda2be4e8dbd61c8 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 12 Feb 2025 15:57:42 -0600 Subject: [PATCH 118/317] Minor updates and got all systems to build! --- flake.lock | 278 ++++++++++++++++++++++------- flake.nix | 12 +- hosts/ori/configuration.nix | 7 +- modules/system/phoenix/default.nix | 135 +++++++------- modules/user/browser/default.nix | 2 +- modules/user/hyprland/default.nix | 2 +- modules/user/plasma/default.nix | 4 +- scripts/build.sh | 24 +++ scripts/install.sh | 3 + scripts/sync-system.sh | 10 -- scripts/sync-user.sh | 12 -- scripts/sync.sh | 7 +- scripts/update.sh | 4 + 13 files changed, 336 insertions(+), 164 deletions(-) create mode 100755 scripts/build.sh delete mode 100755 scripts/sync-system.sh delete mode 100755 scripts/sync-user.sh diff --git a/flake.lock b/flake.lock index 816d0cb..ec2c2b7 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1731496216, - "narHash": "sha256-nlQrNN+tmJ+iP6Ck/czwZI0Hxz3oNvUyGkVruxJwgwA=", + "lastModified": 1737636397, + "narHash": "sha256-F5MbBj3QVorycVSFE9qjuOTLtIQBqt2VWbXa0uwzm98=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "3b00e96f90cb0040de6d88ad99bf5f4d443f0c59", + "rev": "7fe006981fae53e931f513026fc754e322f13145", "type": "github" }, "original": { @@ -447,11 +447,11 @@ ] }, "locked": { - "lastModified": 1738178255, - "narHash": "sha256-+D6Nu2ewXbMTFzx/Q4jDOo+LAOUPr0cxQJg5k33daIE=", + "lastModified": 1737634937, + "narHash": "sha256-Ffw4ujFpi++6pPHe+gCBOfDgAoNlzVPZN6MReC1beu8=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "dcadd3398abe146d60c67e0d9ee6e27b301cae82", + "rev": "9c5dd1f7c825ee47f72727ad0a4e16ca46a2688e", "type": "github" }, "original": { @@ -461,6 +461,35 @@ } }, "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737634889, + "narHash": "sha256-9JZE3KxcXOqZH9zs3UeadngDiK/yIACTiAR8HSA/TNI=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "0d77b4895ad5f1bb3b0ee43103a5246c58b65591", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprgraphics_2": { "inputs": { "hyprutils": [ "hyprlock", @@ -493,8 +522,10 @@ "inputs": { "aquamarine": "aquamarine", "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", "hyprland-protocols": "hyprland-protocols", - "hyprlang": "hyprlang", + "hyprland-qtutils": "hyprland-qtutils", + "hyprlang": "hyprlang_2", "hyprutils": [ "hyprutils" ], @@ -507,20 +538,18 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1731526492, - "narHash": "sha256-2Gob+eZEPpF225QrRLXyfeQ9L63YHFa/tNh15FW/Rzo=", - "ref": "refs/heads/main", - "rev": "3fb47372b79265ebdabeeefdad10359d5b18377a", - "revCount": 5451, - "submodules": true, - "type": "git", - "url": "https://code.hyprland.org/hyprwm/Hyprland.git" + "lastModified": 1738457237, + "narHash": "sha256-9mtM+lwnmXnv5TPmdij1rR5fLzzqSjkltcyEuRf8uIk=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "882f7ad7d2bbfc7440d0ccaef93b1cdd78e8e3ff", + "type": "github" }, "original": { - "rev": "3fb47372b79265ebdabeeefdad10359d5b18377a", - "submodules": true, - "type": "git", - "url": "https://code.hyprland.org/hyprwm/Hyprland.git" + "owner": "hyprwm", + "ref": "v0.47.2", + "repo": "Hyprland", + "type": "github" } }, "hyprland-protocols": { @@ -535,11 +564,11 @@ ] }, "locked": { - "lastModified": 1728345020, - "narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=", + "lastModified": 1737556638, + "narHash": "sha256-laKgI3mr2qz6tas/q3tuGPxMdsGhBi/w+HO+hO2f1AY=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "a7c183800e74f337753de186522b9017a07a8cee", + "rev": "4c75dd5c015c8a0e5a34c6d02a018a650f57feb5", "type": "github" }, "original": { @@ -548,7 +577,95 @@ "type": "github" } }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": "hyprlang", + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1737634706, + "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "8810df502cdee755993cb803eba7b23f189db795", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprland-qt-support": "hyprland-qt-support", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1737811848, + "narHash": "sha256-WZ7LeiKHk5Y94MU5gHIWn0r8asWxYOvie4LqfCjVIZU=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "9c0831ff98856c0f312fcb8b57553fbe3dd34d5b", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, "hyprlang": { + "inputs": { + "hyprutils": "hyprutils", + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "systems" + ] + }, + "locked": { + "lastModified": 1737634606, + "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "f41271d35cc0f370d300413d756c2677f386af9d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprlang_2": { "inputs": { "hyprutils": [ "hyprland", @@ -564,11 +681,11 @@ ] }, "locked": { - "lastModified": 1728168612, - "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", + "lastModified": 1737634606, + "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", + "rev": "f41271d35cc0f370d300413d756c2677f386af9d", "type": "github" }, "original": { @@ -577,7 +694,7 @@ "type": "github" } }, - "hyprlang_2": { + "hyprlang_3": { "inputs": { "hyprutils": [ "hyprlock", @@ -608,8 +725,8 @@ }, "hyprlock": { "inputs": { - "hyprgraphics": "hyprgraphics", - "hyprlang": "hyprlang_2", + "hyprgraphics": "hyprgraphics_2", + "hyprlang": "hyprlang_3", "hyprutils": [ "hyprutils" ], @@ -635,6 +752,37 @@ } }, "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "hyprlang", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "hyprland-qt-support", + "hyprlang", + "systems" + ] + }, + "locked": { + "lastModified": 1737632363, + "narHash": "sha256-X9I8POSlHxBVjD0fiX1O2j7U9Zi1+4rIkrsyHP0uHXY=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "006620eb29d54ea9086538891404c78563d1bae1", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprutils_2": { "inputs": { "nixpkgs": [ "nixpkgs" @@ -642,16 +790,15 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1736164519, - "narHash": "sha256-1LimBKvDpBbeX+qW7T240WEyw+DBVpDotZB4JYm8Aps=", + "lastModified": 1739048933, + "narHash": "sha256-ck6MaoYvISBQKqZR+HcxXnx0wOhyCauxfVMaV5zhJxQ=", "ref": "refs/heads/main", - "rev": "3c895da64b0eb19870142196fa48c07090b441c4", - "revCount": 70, + "rev": "e4e018a2ca6f5a9c33511973454199e1c7c85499", + "revCount": 84, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprutils.git" }, "original": { - "rev": "3c895da64b0eb19870142196fa48c07090b441c4", "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprutils.git" } @@ -668,11 +815,11 @@ ] }, "locked": { - "lastModified": 1726874836, - "narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=", + "lastModified": 1735493474, + "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "500c81a9e1a76760371049a8d99e008ea77aa59e", + "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", "type": "github" }, "original": { @@ -784,22 +931,6 @@ } }, "nixpkgs-stable_2": { - "locked": { - "lastModified": 1730741070, - "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-24.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable_3": { "locked": { "lastModified": 1738163270, "narHash": "sha256-B/7Y1v4y+msFFBW1JAdFjNvVthvNdJKiN6EGRPnqfno=", @@ -861,6 +992,29 @@ "type": "github" } }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "home-manager" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736549395, + "narHash": "sha256-XzwkB62Tt5UYoL1jXiHzgk/qz2fUpGHExcSIbyGTtI0=", + "owner": "nix-community", + "repo": "plasma-manager", + "rev": "a53af7f1514ef4cce8620a9d6a50f238cdedec8b", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "plasma-manager", + "type": "github" + } + }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -868,15 +1022,14 @@ "nixpkgs": [ "hyprland", "nixpkgs" - ], - "nixpkgs-stable": "nixpkgs-stable_2" + ] }, "locked": { - "lastModified": 1731363552, - "narHash": "sha256-vFta1uHnD29VUY4HJOO/D6p6rxyObnf+InnSMT4jlMU=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "cd1af27aa85026ac759d5d3fccf650abe7e1bbf0", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { @@ -893,9 +1046,10 @@ "home-manager": "home-manager_2", "hyprland": "hyprland", "hyprlock": "hyprlock", - "hyprutils": "hyprutils", + "hyprutils": "hyprutils_2", "nixpkgs": "nixpkgs_2", - "nixpkgs-stable": "nixpkgs-stable_3", + "nixpkgs-stable": "nixpkgs-stable_2", + "plasma-manager": "plasma-manager", "rust-overlay": "rust-overlay", "secrets": "secrets", "stylix": "stylix" @@ -1140,11 +1294,11 @@ ] }, "locked": { - "lastModified": 1730743262, - "narHash": "sha256-iTLqj3lU8kFehPm5tXpctzkD274t/k1nwSSq3qCWXeg=", + "lastModified": 1737634991, + "narHash": "sha256-dBAnb7Kbnier30cA7AgxVSxxARmxKZ1vHZT33THSIr8=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "09b23cef06fe248e61cec8862c04b9bcb62f4b6d", + "rev": "e09dfe2726c8008f983e45a0aa1a3b7416aaeb8a", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 0e5bad0..d1ae5af 100644 --- a/flake.nix +++ b/flake.nix @@ -85,10 +85,7 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; hyprland = { - type = "git"; - url = "https://code.hyprland.org/hyprwm/Hyprland.git"; - submodules = true; - rev = "3fb47372b79265ebdabeeefdad10359d5b18377a"; #v0.45.0 + url = "github:hyprwm/Hyprland/v0.47.2?submodules=true"; inputs.nixpkgs.follows = "nixpkgs"; inputs.hyprutils.follows = "hyprutils"; }; @@ -96,7 +93,6 @@ hyprutils = { type = "git"; url = "https://code.hyprland.org/hyprwm/hyprutils.git"; - rev = "3c895da64b0eb19870142196fa48c07090b441c4"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -108,6 +104,12 @@ inputs.hyprutils.follows = "hyprutils"; }; + plasma-manager = { + url = "github:nix-community/plasma-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.home-manager.follows = "home-manager"; + }; + stylix.url = "github:danth/stylix"; emacs-overlay = { diff --git a/hosts/ori/configuration.nix b/hosts/ori/configuration.nix index dfe3e96..869f0b0 100644 --- a/hosts/ori/configuration.nix +++ b/hosts/ori/configuration.nix @@ -29,9 +29,14 @@ sshd.enable = true; }; + stylix = { + enable = true; + theme = "tomorrow-night"; + }; + }; - user.users.emmet.openssh.authorizedKeys.keys = [ + users.users.emmet.openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDaeejVJwUVrIZSo1isbu+gkQ7+8ftCgCsczy3OclkEVWHyRTqlG6yp74hr3j8ZNsOhov7c2Q6RqC8oy669hlxi/y9BsvtlI7sBr94oAKFOmkCS4RiK72ngJjBvI0vbk89wQQjmAd3r8B7ZcedpNOC8CkHu8SebKdYPRIUvAbPc3fTEt7DsJkazAepZCB8LEhUp57FAqQ/Ezlt3X/1uwNq5S0EbE9Zm+nUpEfSqR9apY2neKWLyGiCxpK3dzyNOuulCxvtVz+ie2sTk/6SxM+qWEoVVxhdwyxPihEjgC0EvtG0S5mVh5JmcjRkJOzzBHJuw+6r8yWn/AxGdIsoJ4rKNxH1XH1iLHgCraOLOUjUNlmejTcQPu6o92a79fdz2gCHT/BuIjfCW7MErAC3YSmF45TSur/kiWCBaTqYo06pgbQ3w1vKg7fievQlQzsutmg47RvJp6fb74yxuOdVg39cShQu/l8r6zqm21JAeUaaIp4P/0MrAIMOOVUhbK0QgsNElO4yn0ZKH8wGIF8xORh7ikxUIAyq8C41gjJiO2sAFJc3M8DhduQU3X0lHB7U0Qyu+8ZXn05+zdFPXJ73LKc7DCcLkppRXJsdHLSDEFdWqFnV7o08B4qZkPMT4pmvhwhY0Pf1fwavOqxuTstzw18gUGyQzl0foQi0Qrmdazsp2Qw== emmet@snowfire" ]; diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 4329ffa..15217b9 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -15,73 +15,70 @@ }; }; }; -# TODO disabled for debugging -# config = { -# environment.systemPackages = [ -# # TODO update script for config schema change -# (pkgs.writeScriptBin "phoenix" '' -# if [ "$1" = "sync" ]; then -# if [ "$#" = 1 ]; then -# ''+config.systemSettings.dotfilesDir+''/scripts/sync.sh; -# exit 0; -# elif [ "$2" = "user" ]; then -# ''+config.systemSettings.dotfilesDir+''/scripts/sync-user.sh; -# exit 0; -# elif [ "$2" = "system" ]; then -# ''+config.systemSettings.dotfilesDir+''/scripts/sync-system.sh; -# exit 0; -# else -# echo "Please pass 'system' or 'user' if supplying a second argument" -# fi -# elif [ "$1" = "refresh" ]; then -# if [ "$#" -gt 1 ]; then -# echo "Warning: The 'refresh' command has no subcommands (no $2 subcommand)"; -# fi -# ''+config.systemSettings.dotfilesDir+''/scripts/sync-posthook.sh; -# exit 0; -# elif [ "$1" = "update" ]; then -# ''+config.systemSettings.dotfilesDir+''/scripts/update.sh "''${@:2}"; -# exit 0; -# elif [ "$1" = "upgrade" ]; then -# if [ "$#" -gt 1 ]; then -# echo "Warning: The 'upgrade' command has no subcommands (no $2 subcommand)"; -# fi -# ''+config.systemSettings.dotfilesDir+''/scripts/upgrade.sh; -# exit 0; -# elif [ "$1" = "pull" ]; then -# if [ "$#" -gt 1 ]; then -# echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; -# fi -# ''+config.systemSettings.dotfilesDir+''/scripts/pull.sh; -# exit 0; -# elif [ "$1" = "harden" ]; then -# if [ "$#" -gt 1 ]; then -# echo "Warning: The 'harden' command has no subcommands (no $2 subcommand)"; -# fi -# ''+config.systemSettings.dotfilesDir+''/scripts/harden.sh; -# exit 0; -# elif [ "$1" = "soften" ]; then -# if [ "$#" -gt 1 ]; then -# echo "Warning: The 'soften' command has no subcommands (no $2 subcommand)"; -# fi -# ''+config.systemSettings.dotfilesDir+''/scripts/soften.sh; -# exit 0; -# elif [ "$1" = "gc" ]; then -# if [ "$#" -gt 2 ]; then -# echo "Warning: The 'gc' command only accepts one argument (collect_older_than)"; -# fi -# if [ "$2" = "full" ]; then -# sudo nix-collect-garbage --delete-old; -# nix-collect-garbage --delete-old; -# elif [ "$2" ]; then -# sudo nix-collect-garbage --delete-older-than $2; -# nix-collect-garbage --delete-older-than $2; -# else -# sudo nix-collect-garbage --delete-older-than 30d; -# nix-collect-garbage --delete-older-than 30d; -# fi -# fi -# '') -# ]; -# }; + config = { + environment.systemPackages = with pkgs; [ + attic-client + (pkgs.writeScriptBin "phoenix" '' + if [ "$1" = "sync" ]; then + if [ "$#" = 1 ]; then + ${config.systemSettings.dotfilesDir}/scripts/sync.sh; + exit 0; + fi + elif [ "$1" = "refresh" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'refresh' command has no subcommands (no $2 subcommand)"; + fi + ${config.systemSettings.dotfilesDir}/scripts/sync-posthook.sh; + exit 0; + elif [ "$1" = "update" ]; then + ${config.systemSettings.dotfilesDir}/scripts/update.sh "''${@:2}"; + exit 0; + elif [ "$1" = "upgrade" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'upgrade' command has no subcommands (no $2 subcommand)"; + fi + ${config.systemSettings.dotfilesDir}/scripts/upgrade.sh; + exit 0; + elif [ "$1" = "pull" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; + fi + ${config.systemSettings.dotfilesDir}/scripts/pull.sh; + exit 0; + elif [ "$1" = "build" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; + fi + ${config.systemSettings.dotfilesDir}/scripts/build.sh; + exit 0; + elif [ "$1" = "harden" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'harden' command has no subcommands (no $2 subcommand)"; + fi + ${config.systemSettings.dotfilesDir}/scripts/harden.sh; + exit 0; + elif [ "$1" = "soften" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'soften' command has no subcommands (no $2 subcommand)"; + fi + ${config.systemSettings.dotfilesDir}/scripts/soften.sh; + exit 0; + elif [ "$1" = "gc" ]; then + if [ "$#" -gt 2 ]; then + echo "Warning: The 'gc' command only accepts one argument (collect_older_than)"; + fi + if [ "$2" = "full" ]; then + sudo nix-collect-garbage --delete-old; + nix-collect-garbage --delete-old; + elif [ "$2" ]; then + sudo nix-collect-garbage --delete-older-than $2; + nix-collect-garbage --delete-older-than $2; + else + sudo nix-collect-garbage --delete-older-than 30d; + nix-collect-garbage --delete-older-than 30d; + fi + fi + '') + ]; + }; } diff --git a/modules/user/browser/default.nix b/modules/user/browser/default.nix index 53913e4..b890b49 100644 --- a/modules/user/browser/default.nix +++ b/modules/user/browser/default.nix @@ -24,7 +24,7 @@ in { userSettings.spawnBrowser = lib.mkMerge [ (lib.mkIf ((browser == "brave") || (browser == "librewolf")) browser) (lib.mkIf (!(config.userSettings.hyprland.hyprprofiles.enable) && (browser == "qutebrowser")) "qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4") - (lib.mkIf config.userSettings.hyprland.hyprprofiles.enable "qutebrowser-hyprprofile") + (lib.mkIf (config.userSettings.hyprland.hyprprofiles.enable && (browser == "qutebrowser")) "qutebrowser-hyprprofile") (lib.mkIf (browser == null) "") ]; }; diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 47d0b18..77be98c 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -13,7 +13,7 @@ in }; }; - config = { + config = lib.mkIf cfg.enable { userSettings.alacritty.enable = true; userSettings.kitty.enable = true; userSettings.japanese.enable = true; diff --git a/modules/user/plasma/default.nix b/modules/user/plasma/default.nix index 3bd527c..401d9f6 100644 --- a/modules/user/plasma/default.nix +++ b/modules/user/plasma/default.nix @@ -1,4 +1,4 @@ -{config, lib, pkgs, ...}: +{config, lib, pkgs, inputs, ...}: let cfg = config.userSettings.plasma; in { @@ -8,6 +8,8 @@ in { }; }; + imports = [ inputs.plasma-manager.homeManagerModules.plasma-manager ]; + config = lib.mkIf cfg.enable { programs.plasma = { enable = true; diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..721bb4c --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,24 @@ +#!/bin/sh + +# Script to build all systems +# And push to attic cache + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + + +pushd $SCRIPT_DIR/.. &> /dev/null; +nixos-rebuild build --flake .#snowfire; +attic push emmet ./result; +rm ./result; +nixos-rebuild build --flake .#polarias; +attic push emmet ./result; +rm ./result; +nixos-rebuild build --flake .#zenith; +attic push emmet ./result; +rm ./result; +nixos-rebuild build --flake .#stardust; +attic push emmet ./result; +rm ./result; +nixos-rebuild build --flake .#ori; +attic push emmet ./result; +rm ./result; diff --git a/scripts/install.sh b/scripts/install.sh index 16f0afd..6b18b53 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1,5 +1,8 @@ #!/bin/sh +## THIS DOESN'T WORK ANYMORE BTW + +# TODO update this.. # Automated script to install my dotfiles # Clone dotfiles diff --git a/scripts/sync-system.sh b/scripts/sync-system.sh deleted file mode 100755 index 050ae2c..0000000 --- a/scripts/sync-system.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -# Script to synchronize system state -# with configuration files for nixos system -# and home-manager - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -# Rebuild system -sudo nixos-rebuild switch --flake $SCRIPT_DIR/..#system; diff --git a/scripts/sync-user.sh b/scripts/sync-user.sh deleted file mode 100755 index c9d3372..0000000 --- a/scripts/sync-user.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# Script to synchronize system state -# with configuration files for nixos system -# and home-manager - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -# Install and build home-manager configuration -home-manager switch --flake $SCRIPT_DIR/..#user -b bkp; - -$SCRIPT_DIR/sync-posthook.sh diff --git a/scripts/sync.sh b/scripts/sync.sh index 73977ec..b8e8ac5 100755 --- a/scripts/sync.sh +++ b/scripts/sync.sh @@ -6,5 +6,8 @@ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -$SCRIPT_DIR/sync-system.sh -$SCRIPT_DIR/sync-user.sh +# Rebuild system +sudo nixos-rebuild switch --flake $SCRIPT_DIR/..; + +# Refresh +$SCRIPT_DIR/sync-posthook.sh diff --git a/scripts/update.sh b/scripts/update.sh index e880486..ad2529d 100755 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -4,8 +4,12 @@ # synchronizing configuration SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +OUTOFDATEFLAKEREFS=(hyprland/hyprcursor) # Update flake pushd $SCRIPT_DIR/.. &> /dev/null; sudo nix flake update "$@"; +if [ "$#" -eq 0 ]; then + sudo nix flake update $OUTOFDATEFLAKEREFS; +fi popd &> /dev/null; From d786a00ee336ecbd518b731149ba6110d45b5f1d Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 12 Feb 2025 20:18:05 -0600 Subject: [PATCH 119/317] some plasma fixes --- modules/system/plasma/default.nix | 4 ++-- modules/user/plasma/default.nix | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/modules/system/plasma/default.nix b/modules/system/plasma/default.nix index 48997bb..ea1f90a 100644 --- a/modules/system/plasma/default.nix +++ b/modules/system/plasma/default.nix @@ -10,6 +10,7 @@ in { }; config = lib.mkIf cfg.enable { + systemSettings.tlp.enable = lib.mkForce false; services.xserver.enable = true; services.xserver = { layout = "us"; @@ -20,7 +21,6 @@ in { services.xserver.displayManager.sddm.wayland.enable = true; services.xserver.desktopManager.plasma6.enable = true; - services.printing.enable = true; hardware.pulseaudio.enable = false; @@ -38,6 +38,6 @@ in { ]; virtualisation.waydroid.enable = true; - services.avahi.nssmdns.enable = true; + services.avahi.nssmdns4 = true; }; } diff --git a/modules/user/plasma/default.nix b/modules/user/plasma/default.nix index 401d9f6..efbcfc0 100644 --- a/modules/user/plasma/default.nix +++ b/modules/user/plasma/default.nix @@ -11,8 +11,22 @@ in { imports = [ inputs.plasma-manager.homeManagerModules.plasma-manager ]; config = lib.mkIf cfg.enable { + stylix.targets.gtk.enable = lib.mkForce false; + qt.enable = false; + home.file = { + ".config/qt5ct/colors/oomox-current.conf".enable = lib.mkForce false; + ".config/Trolltech.conf".enable = lib.mkForce false; + ".config/kdeglobals".enable = lib.mkForce false; + ".config/qt5ct/qt5ct.conf".enable = lib.mkForce false; + }; programs.plasma = { enable = true; + workspace = { + clickItemTo = "select"; + lookAndFeel = "org.kde.breezedark.desktop"; + iconTheme = "Breeze-Dark"; + wallpaper = config.stylix.image; + }; shortcuts = { "ActivityManager"."switch-to-activity-080837e2-f10a-45f7-84cb-a3022c9dc5d4" = [ ]; "KDE Keyboard Layout Switcher"."Switch to Last-Used Keyboard Layout" = "Meta+Alt+L"; From 68f10cc45a485b1ea3b3f02ce20e29c971643eaf Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 12 Feb 2025 20:20:48 -0600 Subject: [PATCH 120/317] Fixes config conflict --- modules/user/plasma/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/user/plasma/default.nix b/modules/user/plasma/default.nix index efbcfc0..332edcc 100644 --- a/modules/user/plasma/default.nix +++ b/modules/user/plasma/default.nix @@ -12,7 +12,7 @@ in { config = lib.mkIf cfg.enable { stylix.targets.gtk.enable = lib.mkForce false; - qt.enable = false; + qt.enable = lib.mkForce false; home.file = { ".config/qt5ct/colors/oomox-current.conf".enable = lib.mkForce false; ".config/Trolltech.conf".enable = lib.mkForce false; From 9101886d9c5577a3b7dbbe2fdb89176345d041d5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 12 Feb 2025 20:32:33 -0600 Subject: [PATCH 121/317] Finalized plasma config (I hope!) --- hosts/stardust/configuration.nix | 2 +- modules/user/plasma/default.nix | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/hosts/stardust/configuration.nix b/hosts/stardust/configuration.nix index b70af3f..542cd44 100644 --- a/hosts/stardust/configuration.nix +++ b/hosts/stardust/configuration.nix @@ -38,7 +38,7 @@ # style stylix = { enable = true; - theme = "eris"; + theme = "spaceduck"; }; }; diff --git a/modules/user/plasma/default.nix b/modules/user/plasma/default.nix index 332edcc..ad091d9 100644 --- a/modules/user/plasma/default.nix +++ b/modules/user/plasma/default.nix @@ -19,12 +19,11 @@ in { ".config/kdeglobals".enable = lib.mkForce false; ".config/qt5ct/qt5ct.conf".enable = lib.mkForce false; }; + stylix.targets.kde.enable = true; programs.plasma = { enable = true; workspace = { clickItemTo = "select"; - lookAndFeel = "org.kde.breezedark.desktop"; - iconTheme = "Breeze-Dark"; wallpaper = config.stylix.image; }; shortcuts = { From 33fb08cd681243c04516f44b30c596b756ba0e10 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 15 Feb 2025 16:23:31 -0600 Subject: [PATCH 122/317] Fixed polarias config --- hosts/polarias/configuration.nix | 7 +++++++ hosts/polarias/hardware-configuration.nix | 2 +- hosts/polarias/home.nix | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/hosts/polarias/configuration.nix b/hosts/polarias/configuration.nix index cc4f080..d9871de 100644 --- a/hosts/polarias/configuration.nix +++ b/hosts/polarias/configuration.nix @@ -44,6 +44,13 @@ theme = "ayu-dark"; }; }; + + users.users.emmet.description = "Emmet"; + home-manager.users.emmet.userSettings = { + name = "Emmet"; + email = "emmet@librephoenix.com"; + }; + }; } diff --git a/hosts/polarias/hardware-configuration.nix b/hosts/polarias/hardware-configuration.nix index 07a12df..db9c7cd 100644 --- a/hosts/polarias/hardware-configuration.nix +++ b/hosts/polarias/hardware-configuration.nix @@ -46,7 +46,7 @@ wantedBy = [ "suspend.target" ]; }; - boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "rtsx_pci_sdmmc" ]; + boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "rtsx_pci_sdmmc" "hid_generic" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; diff --git a/hosts/polarias/home.nix b/hosts/polarias/home.nix index 84fc4f7..768e389 100644 --- a/hosts/polarias/home.nix +++ b/hosts/polarias/home.nix @@ -37,5 +37,17 @@ bluetooth.enable = true; }; + wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { + settings = { + monitor = [ + "eDP-1,1920x1080@300,900x1080,1" + "HDMI-A-1,1920x1080,1920x0,1" + "DP-1,1920x1080,0x0,1" + ]; + + }; + }; + + }; } From 85e5c666dee51e318924ecdd225b04ea876d5690 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 16 Feb 2025 15:09:31 -0600 Subject: [PATCH 123/317] fix keybinds --- modules/user/media/default.nix | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/modules/user/media/default.nix b/modules/user/media/default.nix index 4729d21..634a6e1 100644 --- a/modules/user/media/default.nix +++ b/modules/user/media/default.nix @@ -14,7 +14,6 @@ in { vlc #yt-dlp_git # TODO disabled for debugging mpv mpc - ncmpcpp ffmpeg ]; @@ -31,12 +30,16 @@ in { ''; }; - programs.ncmpcpp.bindings = [ - { key = "j"; command = "scroll_down"; } - { key = "k"; command = "scroll_up"; } - { key = "J"; command = [ "select_item" "scroll_down" ]; } - { key = "K"; command = [ "select_item" "scroll_up" ]; } - ]; + programs.ncmpcpp = { + package = (pkgs.ncmpcpp.override { visualizerSupport = true; }); + enable = true; + bindings = [ + { key = "j"; command = "scroll_down"; } + { key = "k"; command = "scroll_up"; } + { key = "J"; command = [ "select_item" "scroll_down" ]; } + { key = "K"; command = [ "select_item" "scroll_up" ]; } + ]; + }; }; } From 1ac3b10b68fd4dea82b3df83a824736a52a081bb Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 16 Feb 2025 15:09:36 -0600 Subject: [PATCH 124/317] autostart emacs daemon --- modules/user/emacs/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index d2c03ef..f3da274 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -70,5 +70,6 @@ in { template = builtins.readFile ./lib/doom-stylix-theme.el.mustache; extension = ".el"; }; + wayland.windowManager.hyprland.settings.exec-once = lib.optionals config.wayland.windowManager.hyprland.enable [ "emacs --daemon" ]; }; } From 919b71abea9b89418146e09ca5d9f1191a2fe0a8 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 16 Feb 2025 15:09:47 -0600 Subject: [PATCH 125/317] add wife to gaming laptop --- hosts/snowfire/configuration.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index 551b7f1..1521489 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -4,7 +4,7 @@ config = { systemSettings = { # users - users = [ "emmet" ]; + users = [ "emmet" "corrina" ]; adminUsers = [ "emmet" ]; # hardware @@ -51,6 +51,12 @@ name = "Emmet"; email = "emmet@librephoenix.com"; }; + users.users.corrina.description = "Corrina"; + home-manager.users.corrina.userSettings = { + name = "Corrina"; + email = ""; + stylix.theme = "spaceduck"; + }; }; From 16f689ff07d3ef4f1f105a5ad72d7e6e955ea06d Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 16 Feb 2025 15:10:05 -0600 Subject: [PATCH 126/317] These scripts broke my thinkpad --- modules/system/phoenix/default.nix | 123 +++++++++++++++-------------- scripts/build.sh | 24 ------ scripts/harden.sh | 33 -------- scripts/install.sh | 48 ----------- scripts/pull.sh | 20 ----- scripts/soften.sh | 27 ------- scripts/sync-posthook.sh | 22 ------ scripts/sync.sh | 13 --- scripts/update.sh | 15 ---- scripts/upgrade.sh | 12 --- 10 files changed, 62 insertions(+), 275 deletions(-) delete mode 100755 scripts/build.sh delete mode 100755 scripts/harden.sh delete mode 100755 scripts/install.sh delete mode 100755 scripts/pull.sh delete mode 100755 scripts/soften.sh delete mode 100755 scripts/sync-posthook.sh delete mode 100755 scripts/sync.sh delete mode 100755 scripts/update.sh delete mode 100755 scripts/upgrade.sh diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 15217b9..f662df0 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -18,67 +18,68 @@ config = { environment.systemPackages = with pkgs; [ attic-client - (pkgs.writeScriptBin "phoenix" '' - if [ "$1" = "sync" ]; then - if [ "$#" = 1 ]; then - ${config.systemSettings.dotfilesDir}/scripts/sync.sh; - exit 0; - fi - elif [ "$1" = "refresh" ]; then - if [ "$#" -gt 1 ]; then - echo "Warning: The 'refresh' command has no subcommands (no $2 subcommand)"; - fi - ${config.systemSettings.dotfilesDir}/scripts/sync-posthook.sh; - exit 0; - elif [ "$1" = "update" ]; then - ${config.systemSettings.dotfilesDir}/scripts/update.sh "''${@:2}"; - exit 0; - elif [ "$1" = "upgrade" ]; then - if [ "$#" -gt 1 ]; then - echo "Warning: The 'upgrade' command has no subcommands (no $2 subcommand)"; - fi - ${config.systemSettings.dotfilesDir}/scripts/upgrade.sh; - exit 0; - elif [ "$1" = "pull" ]; then - if [ "$#" -gt 1 ]; then - echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; - fi - ${config.systemSettings.dotfilesDir}/scripts/pull.sh; - exit 0; - elif [ "$1" = "build" ]; then - if [ "$#" -gt 1 ]; then - echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; - fi - ${config.systemSettings.dotfilesDir}/scripts/build.sh; - exit 0; - elif [ "$1" = "harden" ]; then - if [ "$#" -gt 1 ]; then - echo "Warning: The 'harden' command has no subcommands (no $2 subcommand)"; - fi - ${config.systemSettings.dotfilesDir}/scripts/harden.sh; - exit 0; - elif [ "$1" = "soften" ]; then - if [ "$#" -gt 1 ]; then - echo "Warning: The 'soften' command has no subcommands (no $2 subcommand)"; - fi - ${config.systemSettings.dotfilesDir}/scripts/soften.sh; - exit 0; - elif [ "$1" = "gc" ]; then - if [ "$#" -gt 2 ]; then - echo "Warning: The 'gc' command only accepts one argument (collect_older_than)"; - fi - if [ "$2" = "full" ]; then - sudo nix-collect-garbage --delete-old; - nix-collect-garbage --delete-old; - elif [ "$2" ]; then - sudo nix-collect-garbage --delete-older-than $2; - nix-collect-garbage --delete-older-than $2; - else - sudo nix-collect-garbage --delete-older-than 30d; - nix-collect-garbage --delete-older-than 30d; - fi - fi - '') + # TODO rewrite this from scratch without wrappers + #(pkgs.writeScriptBin "phoenix" '' + # if [ "$1" = "sync" ]; then + # if [ "$#" = 1 ]; then + # ${config.systemSettings.dotfilesDir}/scripts/sync.sh; + # exit 0; + # fi + # elif [ "$1" = "refresh" ]; then + # if [ "$#" -gt 1 ]; then + # echo "Warning: The 'refresh' command has no subcommands (no $2 subcommand)"; + # fi + # ${config.systemSettings.dotfilesDir}/scripts/sync-posthook.sh; + # exit 0; + # elif [ "$1" = "update" ]; then + # ${config.systemSettings.dotfilesDir}/scripts/update.sh "''${@:2}"; + # exit 0; + # elif [ "$1" = "upgrade" ]; then + # if [ "$#" -gt 1 ]; then + # echo "Warning: The 'upgrade' command has no subcommands (no $2 subcommand)"; + # fi + # ${config.systemSettings.dotfilesDir}/scripts/upgrade.sh; + # exit 0; + # elif [ "$1" = "pull" ]; then + # if [ "$#" -gt 1 ]; then + # echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; + # fi + # ${config.systemSettings.dotfilesDir}/scripts/pull.sh; + # exit 0; + # elif [ "$1" = "build" ]; then + # if [ "$#" -gt 1 ]; then + # echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; + # fi + # ${config.systemSettings.dotfilesDir}/scripts/build.sh; + # exit 0; + # elif [ "$1" = "harden" ]; then + # if [ "$#" -gt 1 ]; then + # echo "Warning: The 'harden' command has no subcommands (no $2 subcommand)"; + # fi + # ${config.systemSettings.dotfilesDir}/scripts/harden.sh; + # exit 0; + # elif [ "$1" = "soften" ]; then + # if [ "$#" -gt 1 ]; then + # echo "Warning: The 'soften' command has no subcommands (no $2 subcommand)"; + # fi + # ${config.systemSettings.dotfilesDir}/scripts/soften.sh; + # exit 0; + # elif [ "$1" = "gc" ]; then + # if [ "$#" -gt 2 ]; then + # echo "Warning: The 'gc' command only accepts one argument (collect_older_than)"; + # fi + # if [ "$2" = "full" ]; then + # sudo nix-collect-garbage --delete-old; + # nix-collect-garbage --delete-old; + # elif [ "$2" ]; then + # sudo nix-collect-garbage --delete-older-than $2; + # nix-collect-garbage --delete-older-than $2; + # else + # sudo nix-collect-garbage --delete-older-than 30d; + # nix-collect-garbage --delete-older-than 30d; + # fi + # fi + #'') ]; }; } diff --git a/scripts/build.sh b/scripts/build.sh deleted file mode 100755 index 721bb4c..0000000 --- a/scripts/build.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -# Script to build all systems -# And push to attic cache - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - - -pushd $SCRIPT_DIR/.. &> /dev/null; -nixos-rebuild build --flake .#snowfire; -attic push emmet ./result; -rm ./result; -nixos-rebuild build --flake .#polarias; -attic push emmet ./result; -rm ./result; -nixos-rebuild build --flake .#zenith; -attic push emmet ./result; -rm ./result; -nixos-rebuild build --flake .#stardust; -attic push emmet ./result; -rm ./result; -nixos-rebuild build --flake .#ori; -attic push emmet ./result; -rm ./result; diff --git a/scripts/harden.sh b/scripts/harden.sh deleted file mode 100755 index 02416d2..0000000 --- a/scripts/harden.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/sh - -# This will harden the security of these dotfiles, preventing -# unpriveleged users from editing system-level (root configuration) -# files maliciously - -# Run this inside of ~/.dotfiles (or whatever directory you installed -# the dotfiles to) - -# Run this as root! - -# BTW, this assumes your user account has a PID/GID of 1000 - -# After running this, the command `nix flake update` will require root - -if [ "$#" = 1 ]; then - SCRIPT_DIR=$1; -else - SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -fi -pushd $SCRIPT_DIR/.. &> /dev/null; -sudo chown 0:0 .; -sudo chown 0:0 profiles/*; -sudo chown -R 0:0 system; -sudo chown 0:0 -R scripts; -sudo chown -R 0:0 patches; -sudo chown 0:0 flake.lock; -sudo chown 0:0 flake.nix -sudo chown 0:0 profiles -sudo chown 0:0 profiles/*/configuration.nix; -sudo chown 0:0 profiles/homelab/base.nix; -sudo chown 1000:users **/README.org; -popd &> /dev/null; diff --git a/scripts/install.sh b/scripts/install.sh deleted file mode 100755 index 6b18b53..0000000 --- a/scripts/install.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh - -## THIS DOESN'T WORK ANYMORE BTW - -# TODO update this.. -# Automated script to install my dotfiles - -# Clone dotfiles -if [ $# -gt 0 ] - then - SCRIPT_DIR=$1 - else - SCRIPT_DIR=~/.dotfiles -fi -nix-shell -p git --command "git clone https://gitlab.com/librephoenix/nixos-config $SCRIPT_DIR" - -# Generate hardware config for new system -sudo nixos-generate-config --show-hardware-config > $SCRIPT_DIR/system/hardware-configuration.nix - -# Check if uefi or bios -if [ -d /sys/firmware/efi/efivars ]; then - sed -i "0,/bootMode.*=.*\".*\";/s//bootMode = \"uefi\";/" $SCRIPT_DIR/flake.nix -else - sed -i "0,/bootMode.*=.*\".*\";/s//bootMode = \"bios\";/" $SCRIPT_DIR/flake.nix - grubDevice=$(findmnt / | awk -F' ' '{ print $2 }' | sed 's/\[.*\]//g' | tail -n 1 | lsblk -no pkname | tail -n 1 ) - sed -i "0,/grubDevice.*=.*\".*\";/s//grubDevice = \"\/dev\/$grubDevice\";/" $SCRIPT_DIR/flake.nix -fi - -# Patch flake.nix with different username/name and remove email by default -sed -i "0,/emmet/s//$(whoami)/" $SCRIPT_DIR/flake.nix -sed -i "0,/Emmet/s//$(getent passwd $(whoami) | cut -d ':' -f 5 | cut -d ',' -f 1)/" $SCRIPT_DIR/flake.nix -sed -i "s/emmet@librephoenix.com//" $SCRIPT_DIR/flake.nix -sed -i "s+~/.dotfiles+$SCRIPT_DIR+g" $SCRIPT_DIR/flake.nix - -# Open up editor to manually edit flake.nix before install -if [ -z "$EDITOR" ]; then - EDITOR=nano; -fi -$EDITOR $SCRIPT_DIR/flake.nix; - -# Permissions for files that should be owned by root -sudo $SCRIPT_DIR/scripts/harden.sh $SCRIPT_DIR; - -# Rebuild system -sudo nixos-rebuild switch --flake $SCRIPT_DIR#system; - -# Install and build home-manager configuration -nix run home-manager/master --extra-experimental-features nix-command --extra-experimental-features flakes -- switch --flake $SCRIPT_DIR#user; diff --git a/scripts/pull.sh b/scripts/pull.sh deleted file mode 100755 index 31b5c85..0000000 --- a/scripts/pull.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -# Automated script to update my non-primary systems -# config to be in sync with upstream git repo while -# preserving local edits to dotfiles via git stash - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -# Relax permissions temporarily so git can work -sudo $SCRIPT_DIR/soften.sh $SCRIPT_DIR; - -# Stash local edits, pull changes, and re-apply local edits -pushd $SCRIPT_DIR/.. &> /dev/null; -git stash; -git pull; -git stash apply; -popd &> /dev/null; - -# Permissions for files that should be owned by root -sudo $SCRIPT_DIR/harden.sh $SCRIPT_DIR; diff --git a/scripts/soften.sh b/scripts/soften.sh deleted file mode 100755 index ba3196d..0000000 --- a/scripts/soften.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -# This will soften the security of these dotfiles, allowing -# the default unpriveleged user with UID/GID of 1000 to edit ALL FILES -# in the dotfiles directory - -# This mainly is just here to be used by some scripts - -# Run this inside of ~/.dotfiles (or whatever directory you installed -# the dotfiles to) - -# Run this as root! - -# BTW, this assumes your user account has a UID/GID of 1000 - -# After running this, YOUR UNPRIVELEGED USER CAN MAKE EDITS TO -# IMPORTANT SYSTEM FILES WHICH MAY COMPROMISE THE SYSTEM AFTER -# RUNNING nixos-rebuild switch! - -if [ "$#" = 1 ]; then - SCRIPT_DIR=$1; -else - SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -fi -pushd $SCRIPT_DIR/scripts &> /dev/null; -sudo chown -R 1000:users .; -popd &> /dev/null; diff --git a/scripts/sync-posthook.sh b/scripts/sync-posthook.sh deleted file mode 100755 index 9dcca1f..0000000 --- a/scripts/sync-posthook.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# Post hooks to be called after a -# configuration sync - -# Mainly just to reload stylix - -# xmonad -pgrep xmobar &> /dev/null && echo "Killing old xmobar instances" && echo "Running killall xmobar" && killall xmobar &> /dev/null; # xmonad will restart xmobar -pgrep xmonad &> /dev/null && echo "Recompiling xmonad" && echo "Running xmonad --recompile && xmonad --restart" && xmonad --recompile &> /dev/null && xmonad --restart &> /dev/null; -pgrep .dunst-wrapped &> /dev/null && echo "Restarting dunst" && killall .dunst-wrapped && echo "Running dunst" && dunst &> /dev/null & disown; -pgrep xmonad &> /dev/null && echo "Reapplying background from stylix via feh" && echo "Running ~/.fehbg-stylix" && ~/.fehbg-stylix &> /dev/null & disown; - -# hyprland -pgrep Hyprland &> /dev/null && echo "Reloading hyprland" && hyprctl reload &> /dev/null; -pgrep .waybar-wrapped &> /dev/null && echo "Restarting waybar" && killall .waybar-wrapped && echo "Running waybar" && waybar &> /dev/null & disown; -pgrep fnott &> /dev/null && echo "Restarting fnott" && killall fnott && echo "Running fnott" && fnott &> /dev/null & disown; -pgrep hyprpaper &> /dev/null && echo "Reapplying background via hyprpaper" && killall hyprpaper && echo "Running hyprpaper" && hyprpaper &> /dev/null & disown; -pgrep nwggrid-server &> /dev/null && echo "Restarting nwggrid-server" && killall nwggrid-server && echo "Running nwggrid-wrapper" && nwggrid-wrapper &> /dev/null & disown; - -# emacs -pgrep emacs &> /dev/null && echo "Reloading emacs stylix theme" && echo "Running emacsclient --no-wait --eval \"(load-theme 'doom-stylix t nil)\"" && emacsclient --no-wait --eval "(load-theme 'doom-stylix t nil)" &> /dev/null; diff --git a/scripts/sync.sh b/scripts/sync.sh deleted file mode 100755 index b8e8ac5..0000000 --- a/scripts/sync.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -# Script to synchronize system state -# with configuration files for nixos system -# and home-manager - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -# Rebuild system -sudo nixos-rebuild switch --flake $SCRIPT_DIR/..; - -# Refresh -$SCRIPT_DIR/sync-posthook.sh diff --git a/scripts/update.sh b/scripts/update.sh deleted file mode 100755 index ad2529d..0000000 --- a/scripts/update.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -# Script to update my flake without -# synchronizing configuration - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -OUTOFDATEFLAKEREFS=(hyprland/hyprcursor) - -# Update flake -pushd $SCRIPT_DIR/.. &> /dev/null; -sudo nix flake update "$@"; -if [ "$#" -eq 0 ]; then - sudo nix flake update $OUTOFDATEFLAKEREFS; -fi -popd &> /dev/null; diff --git a/scripts/upgrade.sh b/scripts/upgrade.sh deleted file mode 100755 index 0830316..0000000 --- a/scripts/upgrade.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# Script to update system and sync -# Does not pull changes from git - -SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) - -# Update flake -$SCRIPT_DIR/update.sh; - -# Synchronize system -$SCRIPT_DIR/sync.sh; From 9a50ad5a3fc517770e2c3f6c4d0295b5c37f014f Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 16 Feb 2025 15:16:04 -0600 Subject: [PATCH 127/317] fixed qute-containers --- modules/user/browser/qutebrowser.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/user/browser/qutebrowser.nix b/modules/user/browser/qutebrowser.nix index b9205e0..acdd164 100644 --- a/modules/user/browser/qutebrowser.nix +++ b/modules/user/browser/qutebrowser.nix @@ -108,7 +108,7 @@ let ''; - qute-containers = (pkgs.callPackage ({ lib, stdenv, fetchFromGitHub, dmenuCmd ? config.userSettings.dmenuScripts.dmenuCmd, ... }: + qute-containers = ({ lib, stdenv, fetchFromGitHub, dmenuCmd ? config.userSettings.dmenuScripts.dmenuCmd, ... }: let name = "qute-containers"; version = "unstable"; dmenu = dmenuCmd; @@ -140,7 +140,7 @@ let license = lib.licenses.mit; maintainers = []; }; - })); + }); in { options = { userSettings.qutebrowser = { @@ -150,11 +150,11 @@ in { config = lib.mkIf cfg.enable { home.packages = [ pkgs.qutebrowser - #qute-containers # TODO disabled for debugging + (pkgs.callPackage qute-containers {}) # TODO disabled for debugging ]; -# home.file.".config/qutebrowser/userscripts/container-open".source = "${qute-containers}/bin/container-open"; -# home.file.".config/qutebrowser/userscripts/containers_config".source = "${qute-containers}/bin/containers_config"; + home.file.".config/qutebrowser/userscripts/container-open".source = "${(pkgs.callPackage qute-containers {})}/bin/container-open"; + home.file.".config/qutebrowser/userscripts/containers_config".source = "${(pkgs.callPackage qute-containers {})}/bin/containers_config"; programs.qutebrowser.enable = true; programs.qutebrowser.extraConfig = '' From 1b3b5e4b1203f23c46e82bff6056c1931145cfd5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 18 Feb 2025 20:37:23 -0600 Subject: [PATCH 128/317] home manager uses global packages --- flake.nix | 5 ++-- modules/system/overlays/brave.nix | 22 +++++++++++++++++ modules/system/overlays/ranger.nix | 35 ++++++++++++++++++++++++++++ modules/user/browser/brave.nix | 17 -------------- modules/user/browser/qutebrowser.nix | 2 +- modules/user/home.nix | 3 +-- modules/user/media/default.nix | 4 ++-- modules/user/nix/default.nix | 18 -------------- modules/user/ranger/ranger.nix | 30 ------------------------ 9 files changed, 64 insertions(+), 72 deletions(-) create mode 100644 modules/system/overlays/brave.nix create mode 100644 modules/system/overlays/ranger.nix diff --git a/flake.nix b/flake.nix index d1ae5af..b724571 100644 --- a/flake.nix +++ b/flake.nix @@ -22,7 +22,7 @@ allowUnfree = true; allowUnfreePredicate = (_: true); }; - overlays = [ inputs.rust-overlay.overlays.default inputs.emacs-overlay.overlays.default ]; + overlays = [ inputs.rust-overlay.overlays.default inputs.emacs-overlay.overlays.default inputs.chaotic.overlays.default ]; }; pkgs-stable = import inputs.nixpkgs-stable { @@ -58,7 +58,8 @@ # home manager inputs.home-manager.nixosModules.home-manager - { home-manager.extraSpecialArgs = { + { + home-manager.extraSpecialArgs = { inherit pkgs; inherit pkgs-stable; inherit inputs; diff --git a/modules/system/overlays/brave.nix b/modules/system/overlays/brave.nix new file mode 100644 index 0000000..94b9b7d --- /dev/null +++ b/modules/system/overlays/brave.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + nixpkgs.config.overlays = [ + (self: super: { + brave = super.brave.override { + commandLineArgs = [ + "--password-store=gnome-libsecret" + "--ignore-gpu-blocklist" + "--enable-gpu-rasterization" + "--enable-accelerated-video-decode" + "--enable-quic" + "--enable-zero-copy" + "--enable-native-gpu-memory-buffers" + "--num-raster-threads=4" + ]; + }; + }) + ]; + }; +} diff --git a/modules/system/overlays/ranger.nix b/modules/system/overlays/ranger.nix new file mode 100644 index 0000000..57a8f84 --- /dev/null +++ b/modules/system/overlays/ranger.nix @@ -0,0 +1,35 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + nixpkgs.overlays = [ + (self: super: + { + ranger = super.ranger.overrideAttrs (oldAttrs: rec { + preConfigure = '' + substituteInPlace ranger/__init__.py \ + --replace "DEFAULT_PAGER = 'less'" "DEFAULT_PAGER = '${lib.getBin pkgs.bat}/bin/bat'" + + # give image previews out of the box when building with w3m + substituteInPlace ranger/config/rc.conf \ + --replace "set preview_images false" "set preview_images true" + + # adds this patch: https://github.com/ranger/ranger/pull/1758 + # fixes a bug for kitty users that use image previews + substituteInPlace ranger/ext/img_display.py \ + --replace "self.image_id -= 1" "self.image_id = max(0, self.image_id - 1)" + + # fixes the .desktop file + substituteInPlace doc/ranger.desktop \ + --replace "Icon=utilities-terminal" "Icon=user-desktop" + substituteInPlace doc/ranger.desktop \ + --replace "Terminal=true" "Terminal=false" + substituteInPlace doc/ranger.desktop \ + --replace "Exec=ranger" "Exec=kitty -e ranger %U" + ''; + }); + } + ) + ]; + }; +} diff --git a/modules/user/browser/brave.nix b/modules/user/browser/brave.nix index 3e40b6b..9e8cd85 100644 --- a/modules/user/browser/brave.nix +++ b/modules/user/browser/brave.nix @@ -12,23 +12,6 @@ in { config = lib.mkIf cfg.enable { home.packages = [ pkgs.brave ]; - nixpkgs.config.overlays = [ - (self: super: { - brave = super.brave.override { - commandLineArgs = [ - "--password-store=gnome-libsecret" - "--ignore-gpu-blocklist" - "--enable-gpu-rasterization" - "--enable-accelerated-video-decode" - "--enable-quic" - "--enable-zero-copy" - "--enable-native-gpu-memory-buffers" - "--num-raster-threads=4" - ]; - }; - }) - ]; - xdg.mimeApps.defaultApplications = lib.mkIf (config.userSettings.browser == "brave" ) { "text/html" = "brave-browser.desktop"; "x-scheme-handler/http" = "brave-browser.desktop"; diff --git a/modules/user/browser/qutebrowser.nix b/modules/user/browser/qutebrowser.nix index acdd164..60bc18f 100644 --- a/modules/user/browser/qutebrowser.nix +++ b/modules/user/browser/qutebrowser.nix @@ -150,7 +150,7 @@ in { config = lib.mkIf cfg.enable { home.packages = [ pkgs.qutebrowser - (pkgs.callPackage qute-containers {}) # TODO disabled for debugging + (pkgs.callPackage qute-containers {}) ]; home.file.".config/qutebrowser/userscripts/container-open".source = "${(pkgs.callPackage qute-containers {})}/bin/container-open"; diff --git a/modules/user/home.nix b/modules/user/home.nix index b8aa3cc..80b2500 100644 --- a/modules/user/home.nix +++ b/modules/user/home.nix @@ -1,6 +1,5 @@ { config, lib, pkgs, inputs, ... }: { - imports = [ inputs.chaotic.homeManagerModules.default ]; - + } diff --git a/modules/user/media/default.nix b/modules/user/media/default.nix index 634a6e1..884a140 100644 --- a/modules/user/media/default.nix +++ b/modules/user/media/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, inputs, ... }: let cfg = config.userSettings.media; @@ -12,8 +12,8 @@ in { config = lib.mkIf cfg.enable { home.packages = with pkgs; [ vlc - #yt-dlp_git # TODO disabled for debugging mpv mpc + yt-dlp_git ffmpeg ]; diff --git a/modules/user/nix/default.nix b/modules/user/nix/default.nix index 5f957b0..a2c00e0 100644 --- a/modules/user/nix/default.nix +++ b/modules/user/nix/default.nix @@ -2,24 +2,6 @@ { config = { - nix = { - package = lib.mkForce pkgs.nix; - settings = { - substituters = [ - "https://cache.nixos.org" - "https://hyprland.cachix.org" - "https://nix-community.cachix.org" - ]; - trusted-public-keys = [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - ]; - trusted-users = [ "@wheel" ]; - auto-optimise-store = true; - download-buffer-size = 500000000; - }; - }; home.stateVersion = "22.11"; }; } diff --git a/modules/user/ranger/ranger.nix b/modules/user/ranger/ranger.nix index cbf5df6..73f612f 100644 --- a/modules/user/ranger/ranger.nix +++ b/modules/user/ranger/ranger.nix @@ -10,36 +10,6 @@ in { }; config = lib.mkIf cfg.enable { - nixpkgs.overlays = [ - (self: super: - { - ranger = super.ranger.overrideAttrs (oldAttrs: rec { - preConfigure = '' - substituteInPlace ranger/__init__.py \ - --replace "DEFAULT_PAGER = 'less'" "DEFAULT_PAGER = '${lib.getBin pkgs.bat}/bin/bat'" - - # give image previews out of the box when building with w3m - substituteInPlace ranger/config/rc.conf \ - --replace "set preview_images false" "set preview_images true" - - # adds this patch: https://github.com/ranger/ranger/pull/1758 - # fixes a bug for kitty users that use image previews - substituteInPlace ranger/ext/img_display.py \ - --replace "self.image_id -= 1" "self.image_id = max(0, self.image_id - 1)" - - # fixes the .desktop file - substituteInPlace doc/ranger.desktop \ - --replace "Icon=utilities-terminal" "Icon=user-desktop" - substituteInPlace doc/ranger.desktop \ - --replace "Terminal=true" "Terminal=false" - substituteInPlace doc/ranger.desktop \ - --replace "Exec=ranger" "Exec=kitty -e ranger %U" - ''; - }); - } - ) - ]; - home.packages = with pkgs; [ ranger ripdrag From 352ac4c445f851c1ce8b369099edeebfadce221a Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 18 Feb 2025 20:37:44 -0600 Subject: [PATCH 129/317] Better tlp settings? --- modules/system/tlp/default.nix | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/modules/system/tlp/default.nix b/modules/system/tlp/default.nix index 4fadacc..5eb7fd0 100644 --- a/modules/system/tlp/default.nix +++ b/modules/system/tlp/default.nix @@ -13,8 +13,8 @@ in { services.tlp = { enable = true; settings = { - CPU_SCALING_GOVERNOR_ON_AC = "performance"; - CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + CPU_SCALING_GOVERNOR_ON_AC = "interactive"; + CPU_SCALING_GOVERNOR_ON_BAT = "ondemand"; CPU_ENERGY_PERF_POLICY_ON_BAT = "balance"; CPU_ENERGY_PERF_POLICY_ON_AC = "balance_performance"; CPU_DRIVER_OPMODE_ON_AC = "active"; @@ -25,10 +25,10 @@ in { RUNTIME_PM_ON_AC = "auto"; RUNTIME_PM_ON_BAT = "auto"; - CPU_MIN_PERF_ON_AC = 10; - CPU_MAX_PERF_ON_AC = 90; - CPU_MIN_PERF_ON_BAT = 10; - CPU_MAX_PERF_ON_BAT = 50; + CPU_MIN_PERF_ON_AC = 0; + CPU_MAX_PERF_ON_AC = 100; + CPU_MIN_PERF_ON_BAT = 0; + CPU_MAX_PERF_ON_BAT = 70; CPU_BOOST_ON_AC = 1; CPU_BOOST_ON_BAT = 0; @@ -41,8 +41,8 @@ in { MEM_SLEEP_ON_AC = "deep"; MEM_SLEEP_ON_BAT = "deep"; - PLATFORM_PROFILE_ON_AC = "performance"; - PLATFORM_PROFILE_ON_BAT = "low-power"; + PLATFORM_PROFILE_ON_AC = "quiet"; + PLATFORM_PROFILE_ON_BAT = "quiet"; RADEON_DPM_STATE_ON_AC = "performance"; RADEON_DPM_STATE_ON_BAT = "battery"; From cae83f449ef77463e99d0a7b9adacaa9883592a9 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 18 Feb 2025 20:37:56 -0600 Subject: [PATCH 130/317] cachy scheduler --- modules/system/kernel/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/system/kernel/default.nix b/modules/system/kernel/default.nix index ac579a7..6b83907 100644 --- a/modules/system/kernel/default.nix +++ b/modules/system/kernel/default.nix @@ -24,6 +24,7 @@ in (lib.mkIf (cfg.variant == "server") pkgs.linuxPackages_cachyos-server) (lib.mkIf (cfg.variant == "hardened") pkgs.linuxPackages_cachyos-hardened) ]; + services.scx.enable = true; boot.consoleLogLevel = 0; }; } From 73c20c7f68217e91e7e177778bb1aa2550daaed9 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 23 Feb 2025 15:07:23 -0600 Subject: [PATCH 131/317] Rewrote phoenix script --- modules/system/phoenix/default.nix | 137 ++++++++++++++++------------- 1 file changed, 75 insertions(+), 62 deletions(-) diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index f662df0..70ae27f 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -18,68 +18,81 @@ config = { environment.systemPackages = with pkgs; [ attic-client - # TODO rewrite this from scratch without wrappers - #(pkgs.writeScriptBin "phoenix" '' - # if [ "$1" = "sync" ]; then - # if [ "$#" = 1 ]; then - # ${config.systemSettings.dotfilesDir}/scripts/sync.sh; - # exit 0; - # fi - # elif [ "$1" = "refresh" ]; then - # if [ "$#" -gt 1 ]; then - # echo "Warning: The 'refresh' command has no subcommands (no $2 subcommand)"; - # fi - # ${config.systemSettings.dotfilesDir}/scripts/sync-posthook.sh; - # exit 0; - # elif [ "$1" = "update" ]; then - # ${config.systemSettings.dotfilesDir}/scripts/update.sh "''${@:2}"; - # exit 0; - # elif [ "$1" = "upgrade" ]; then - # if [ "$#" -gt 1 ]; then - # echo "Warning: The 'upgrade' command has no subcommands (no $2 subcommand)"; - # fi - # ${config.systemSettings.dotfilesDir}/scripts/upgrade.sh; - # exit 0; - # elif [ "$1" = "pull" ]; then - # if [ "$#" -gt 1 ]; then - # echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; - # fi - # ${config.systemSettings.dotfilesDir}/scripts/pull.sh; - # exit 0; - # elif [ "$1" = "build" ]; then - # if [ "$#" -gt 1 ]; then - # echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; - # fi - # ${config.systemSettings.dotfilesDir}/scripts/build.sh; - # exit 0; - # elif [ "$1" = "harden" ]; then - # if [ "$#" -gt 1 ]; then - # echo "Warning: The 'harden' command has no subcommands (no $2 subcommand)"; - # fi - # ${config.systemSettings.dotfilesDir}/scripts/harden.sh; - # exit 0; - # elif [ "$1" = "soften" ]; then - # if [ "$#" -gt 1 ]; then - # echo "Warning: The 'soften' command has no subcommands (no $2 subcommand)"; - # fi - # ${config.systemSettings.dotfilesDir}/scripts/soften.sh; - # exit 0; - # elif [ "$1" = "gc" ]; then - # if [ "$#" -gt 2 ]; then - # echo "Warning: The 'gc' command only accepts one argument (collect_older_than)"; - # fi - # if [ "$2" = "full" ]; then - # sudo nix-collect-garbage --delete-old; - # nix-collect-garbage --delete-old; - # elif [ "$2" ]; then - # sudo nix-collect-garbage --delete-older-than $2; - # nix-collect-garbage --delete-older-than $2; - # else - # sudo nix-collect-garbage --delete-older-than 30d; - # nix-collect-garbage --delete-older-than 30d; - # fi - # fi - #'') + (pkgs.writeScriptBin "phoenix" '' + if [[ $EUID -ne 0 ]]; then + echo "Error: This script must be run as root" 1>&2 + exit 1 + fi + if [ "$1" = "sync" ]; then + if [ "$#" = 1 ]; then + exit 0; + fi + elif [ "$1" = "update" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'update' command has no subcommands (no $2 subcommand)"; + fi + pushd ${config.systemSettings.dotfilesDir} &> /dev/null; + nix flake update "''${@:2}"; + popd &> /dev/null; + exit 0; + elif [ "$1" = "pull" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; + fi + exit 0; + pushd ${config.systemSettings.dotfilesDir} &> /dev/null; + git stash; + git pull; + git stash apply; + popd &> /dev/null; + elif [ "$1" = "build" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'build' command has no subcommands (no $2 subcommand)"; + fi + pushd ${config.systemSettings.dotfilesDir} &> /dev/null; + nixos-rebuild build --flake .#snowfire; + attic push emmet ./result; + rm ./result; + nixos-rebuild build --flake .#polarias; + attic push emmet ./result; + rm ./result; + nixos-rebuild build --flake .#zenith; + attic push emmet ./result; + rm ./result; + nixos-rebuild build --flake .#stardust; + attic push emmet ./result; + rm ./result; + nixos-rebuild build --flake .#ori; + attic push emmet ./result; + rm ./result; + exit 0; + elif [ "$1" = "lock" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'lock' command has no subcommands (no $2 subcommand)"; + fi + chown -R 0:0 ${config.systemSettings.dotfilesDir}; + chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; + exit 0; + elif [ "$1" = "unlock" ]; then + if [ "$#" -gt 1 ]; then + echo "Warning: The 'unlock' command has no subcommands (no $2 subcommand)"; + fi + chown -R $DOAS_USER:users ${config.systemSettings.dotfilesDir}; + chown -R $DOAS_USER:users ${config.systemSettings.secretsFlakeDir}; + exit 0; + elif [ "$1" = "gc" ]; then + if [ "$#" -gt 2 ]; then + echo "Warning: The 'gc' command only accepts one argument (collect_older_than)"; + fi + if [ "$2" = "full" ]; then + nix-collect-garbage --delete-old; + elif [ "$2" ]; then + nix-collect-garbage --delete-older-than $2; + else + nix-collect-garbage --delete-older-than 30d; + fi + fi + '') ]; }; } From c6b672ff9ce21465222778d7756d791f356aa853 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 23 Feb 2025 15:07:40 -0600 Subject: [PATCH 132/317] Gaming optimizations? --- hosts/snowfire/configuration.nix | 2 +- modules/system/bluetooth/default.nix | 4 ++- modules/system/gaming/default.nix | 50 +++++++++++++++++++++++++++- modules/system/kernel/default.nix | 1 + 4 files changed, 54 insertions(+), 3 deletions(-) diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index 1521489..be9d805 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -5,7 +5,7 @@ systemSettings = { # users users = [ "emmet" "corrina" ]; - adminUsers = [ "emmet" ]; + adminUsers = [ "emmet" "corrina" ]; # hardware cachy.enable = true; diff --git a/modules/system/bluetooth/default.nix b/modules/system/bluetooth/default.nix index 13694c0..e3fe184 100644 --- a/modules/system/bluetooth/default.nix +++ b/modules/system/bluetooth/default.nix @@ -10,7 +10,9 @@ in { }; config = lib.mkIf cfg.enable { - hardware.bluetooth.enable = true; + hardware.bluetooth = { + enable = true; + }; services.blueman.enable = true; }; } diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index ae6d4b1..f46242f 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -14,7 +14,55 @@ in { nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-unwrapped" ]; hardware.opengl.driSupport32Bit = true; programs.steam.enable = true; - environment.systemPackages = with pkgs; [ pkgs.steam gamemode prismlauncher ]; + environment.systemPackages = with pkgs; + [ steam + gamemode + prismlauncher + inotify-tools + (pkgs.writeScriptBin "steamgrab" ''chown -R $(pgrep -nf steam | xargs -r ps -o uname= -p):steam /opt/Steam;'') + ]; programs.gamemode.enable = true; + programs.gamescope.enable = true; + programs.steam.gamescopeSession.enable = true; + systemSettings.bluetooth.enable = true; + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + settings.General = { + experimental = true; + Privacy = "device"; + JustWorksRepairing = "always"; + Class = "0x000100"; + FastConnectable = true; + }; + }; + hardware.xpadneo.enable = true; + boot = { + extraModulePackages = with config.boot.kernelPackages; [ xpadneo ]; + extraModprobeConfig = '' + options bluetooth disable_ertm=Y + ''; + }; + users.groups = { + steam = { + members = config.systemSettings.users; + }; + }; + systemd.services.steamshare = { + enable = true; + unitConfig = { + Type = "exec"; + }; + serviceConfig = { + ExecStart = [ ''/run/current-system/sw/bin/chmod -R 777 /opt/Steam;'' ''/run/current-system/sw/bin/inotifywait -mr -e close_write,create,moved_to,modify /opt/Steam | while /run/current-system/sw/bin/read path file; do /run/current-system/sw/bin/chmod 777 $path/$file; done;'' ]; + }; + wantedBy = [ "graphical.target" ]; + }; + services.cron = { + enable = true; + systemCronJobs = [ + "*/1 * * * * steamgrab" + ]; + }; }; } diff --git a/modules/system/kernel/default.nix b/modules/system/kernel/default.nix index 6b83907..f2351df 100644 --- a/modules/system/kernel/default.nix +++ b/modules/system/kernel/default.nix @@ -25,6 +25,7 @@ in (lib.mkIf (cfg.variant == "hardened") pkgs.linuxPackages_cachyos-hardened) ]; services.scx.enable = true; + services.scx.scheduler = "scx_lavd"; boot.consoleLogLevel = 0; }; } From edefa9637c5a03ab535713f3d0db2dbfb0453c2b Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 23 Feb 2025 15:07:51 -0600 Subject: [PATCH 133/317] Removed some bloat --- modules/user/hyprland/default.nix | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 77be98c..fae6b7f 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -60,7 +60,6 @@ in "iio-hyprland" "hyprprofile Default" "ydotoold" - "sleep 10 && nextcloud" "sleep 13 && caffeine" "nm-applet" "blueman-applet" @@ -422,8 +421,6 @@ in xdg-utils wlsunset pavucontrol - pamixer - tesseract4 (pkgs.writeScriptBin "workspace-on-monitor" '' #!/bin/sh hyprctl monitors -j | jq ".[$1] | .activeWorkspace.id" @@ -443,15 +440,6 @@ in fi hyprctl dispatch togglespecialworkspace scratch_ranger '') - (pkgs.writeScriptBin "screenshot-ocr" '' - #!/bin/sh - imgname="/tmp/screenshot-ocr-$(date +%Y%m%d%H%M%S).png" - txtname="/tmp/screenshot-ocr-$(date +%Y%m%d%H%M%S)" - txtfname=$txtname.txt - grim -g "$(slurp)" $imgname; - tesseract $imgname $txtname; - wl-copy -n < $txtfname - '') (pkgs.writeScriptBin "sct" '' #!/bin/sh killall wlsunset &> /dev/null; From a1044a90b093933bec78715ba25b3be2ffa7dcae Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 23 Feb 2025 15:08:14 -0600 Subject: [PATCH 134/317] Updated system --- flake.lock | 163 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 124 insertions(+), 39 deletions(-) diff --git a/flake.lock b/flake.lock index ec2c2b7..ec7b7a2 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1737949234, - "narHash": "sha256-rkOIzVI0ND7775hWR+N4RxnI31ajYrsqkXVStB+Qf+8=", + "lastModified": 1740266555, + "narHash": "sha256-NReJCA379CGPRsIy5xifVz0xtBOJ+XrPaAhDKIGV9Ik=", "owner": "StevenBlack", "repo": "hosts", - "rev": "a0af3d5cb1b0fb88c8e6f2037331758f8fcb6109", + "rev": "8df476e3b53f862902119273eaa0a8474443969e", "type": "github" }, "original": { @@ -147,11 +147,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1738314889, - "narHash": "sha256-3qr0n2iMYeNedleoR9rHkFtiCfQKcVI9Ou7a9LKkt4w=", + "lastModified": 1740333969, + "narHash": "sha256-zkLwCGw1PylyV0cGywnYF/duox1gC45BcV5XtkXD6zM=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "393224b463dab363543ac2b6c96f41777516221c", + "rev": "84420d1963cada13bc63be2e118082586690728a", "type": "github" }, "original": { @@ -185,11 +185,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1736899990, - "narHash": "sha256-S79Hqn2EtSxU4kp99t8tRschSifWD4p/51++0xNWUxw=", + "lastModified": 1739223196, + "narHash": "sha256-vAxN2f3rvl5q62gQQjZGVSvF93nAsOxntuFz+e/655w=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "91ca1f82d717b02ceb03a3f423cbe8082ebbb26d", + "rev": "a89108e6272426f4eddd93ba17d0ea101c34fb21", "type": "github" }, "original": { @@ -230,6 +230,28 @@ "type": "github" } }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-schemas": { "locked": { "lastModified": 1721999734, @@ -396,11 +418,11 @@ ] }, "locked": { - "lastModified": 1739044880, - "narHash": "sha256-l+bzq9rsBIQQnBtGayJeOS30L53+mYPjgfQALi20XDg=", + "lastModified": 1740318342, + "narHash": "sha256-fjr9+3Iru6O5qE+2oERQkabqAUXx4awm0+i2MBcta1U=", "owner": "nix-community", "repo": "home-manager", - "rev": "bf9a1a068919ccdfa7d130873936c5fd4c826e85", + "rev": "b5ab2c7fdaa807cf425066ab7cd34b073946b1ca", "type": "github" }, "original": { @@ -418,11 +440,11 @@ ] }, "locked": { - "lastModified": 1736785676, - "narHash": "sha256-TY0jUwR3EW0fnS0X5wXMAVy6h4Z7Y6a3m+Yq++C9AyE=", + "lastModified": 1737630279, + "narHash": "sha256-wJQCxyMRc4P26zDrHmZiRD5bbfcJpqPG3e2djdGG3pk=", "owner": "nix-community", "repo": "home-manager", - "rev": "fc52a210b60f2f52c74eac41a8647c1573d2071d", + "rev": "0db5c8bfcce78583ebbde0b2abbc95ad93445f7c", "type": "github" }, "original": { @@ -790,11 +812,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1739048933, - "narHash": "sha256-ck6MaoYvISBQKqZR+HcxXnx0wOhyCauxfVMaV5zhJxQ=", + "lastModified": 1739891528, + "narHash": "sha256-h8HOCZ/rw2Buzku+GKF77VXxrGjCSOQkLhptiEKMYg0=", "ref": "refs/heads/main", - "rev": "e4e018a2ca6f5a9c33511973454199e1c7c85499", - "revCount": 84, + "rev": "61a5382f4b1ab578064d470b1b3d3f0df396b8ba", + "revCount": 86, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprutils.git" }, @@ -916,11 +938,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1738163270, - "narHash": "sha256-B/7Y1v4y+msFFBW1JAdFjNvVthvNdJKiN6EGRPnqfno=", + "lastModified": 1740162160, + "narHash": "sha256-SSYxFhqCOb3aiPb6MmN68yEzBIltfom8IgRz7phHscM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "59e618d90c065f55ae48446f307e8c09565d5ab0", + "rev": "11415c7ae8539d6292f2928317ee7a8410b28bb9", "type": "github" }, "original": { @@ -932,11 +954,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1738163270, - "narHash": "sha256-B/7Y1v4y+msFFBW1JAdFjNvVthvNdJKiN6EGRPnqfno=", + "lastModified": 1740162160, + "narHash": "sha256-SSYxFhqCOb3aiPb6MmN68yEzBIltfom8IgRz7phHscM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "59e618d90c065f55ae48446f307e8c09565d5ab0", + "rev": "11415c7ae8539d6292f2928317ee7a8410b28bb9", "type": "github" }, "original": { @@ -947,11 +969,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1738142207, - "narHash": "sha256-NGqpVVxNAHwIicXpgaVqJEJWeyqzoQJ9oc8lnK9+WC4=", + "lastModified": 1740126099, + "narHash": "sha256-ozoOtE2hGsqh4XkTJFsrTkNxkRgShxpQxDynaPZUGxk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9d3ae807ebd2981d593cddd0080856873139aa40", + "rev": "32fb99ba93fea2798be0e997ea331dd78167f814", "type": "github" }, "original": { @@ -992,6 +1014,29 @@ "type": "github" } }, + "nur": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": [ + "stylix", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1739903703, + "narHash": "sha256-w2tTcjx39lJoPDaFbIxi+INIjAKE0jbIx9TNjj9ghmg=", + "owner": "nix-community", + "repo": "NUR", + "rev": "2215ad5c4347f522523715e809f5f2022509f504", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, "plasma-manager": { "inputs": { "home-manager": [ @@ -1002,11 +1047,11 @@ ] }, "locked": { - "lastModified": 1736549395, - "narHash": "sha256-XzwkB62Tt5UYoL1jXiHzgk/qz2fUpGHExcSIbyGTtI0=", + "lastModified": 1739557722, + "narHash": "sha256-XikzLpPUDYiNyJ4w2SfRShdbSkIgE3btYdxCGInmtc4=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "a53af7f1514ef4cce8620a9d6a50f238cdedec8b", + "rev": "1f3e1f38dedbbb8aad77e184fb54ec518e2d9522", "type": "github" }, "original": { @@ -1077,11 +1122,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1738290352, - "narHash": "sha256-YKOHUmc0Clm4tMV8grnxYL4IIwtjTayoq/3nqk0QM7k=", + "lastModified": 1740277845, + "narHash": "sha256-NNU0CdiaSbAeZ8tpDG4aFi9qtcdlItRvk8Xns9oBrVU=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b031b584125d33d23a0182f91ddbaf3ab4880236", + "rev": "f933070c29f9c1c5457447a51903f27f76ebb519", "type": "github" }, "original": { @@ -1097,8 +1142,8 @@ ] }, "locked": { - "lastModified": 1739390743, - "narHash": "sha256-Sl0NfkWUy2IzyXOCAzv58U3LjluVFJpWPhp/iTlbSdU=", + "lastModified": 1740339176, + "narHash": "sha256-ayGSORebzKQtgLTxmgy/breWizBBhr+8nF0L256zNT8=", "path": "/etc/nixos.secrets", "type": "path" }, @@ -1120,18 +1165,20 @@ "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", "nixpkgs": "nixpkgs_4", + "nur": "nur", "systems": "systems_4", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", "tinted-tmux": "tinted-tmux", "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1738278499, - "narHash": "sha256-q1SUyXSQ9znHTME53/vPLe+Ga3V1wW3X3gWfa8JsBUM=", + "lastModified": 1740334679, + "narHash": "sha256-FP8ggvqzdHQ1+vr0H9r+PQbFos9CtlO8bYK0tMnJK4o=", "owner": "danth", "repo": "stylix", - "rev": "b00c9f46ae6c27074d24d2db390f0ac5ebcc329f", + "rev": "f121a142abde1b6aa9738e4c21a330c0ddd4eb70", "type": "github" }, "original": { @@ -1234,6 +1281,22 @@ "type": "github" } }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1737565458, + "narHash": "sha256-y+9cvOA6BLKT0WfebDsyUpUa/YxKow9hTjBp6HpQv68=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "ae31625ba47aeaa4bf6a98cf11a8d4886f9463d9", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, "tinted-tmux": { "flake": false, "locked": { @@ -1266,6 +1329,28 @@ "type": "github" } }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "stylix", + "nur", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1733222881, + "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49717b5af6f80172275d47a418c9719a31a78b53", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ From d5a354a0dfd5f534d4ef21dad38c4ae37907de43 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 23 Feb 2025 15:50:26 -0600 Subject: [PATCH 135/317] Fixes fetchGit glitch maybe? --- modules/system/configuration.nix | 3 +++ modules/user/emacs/default.nix | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/system/configuration.nix b/modules/system/configuration.nix index 5942119..7b92bbb 100644 --- a/modules/system/configuration.nix +++ b/modules/system/configuration.nix @@ -2,6 +2,9 @@ { config = { + # Packages + environment.systemPackages = with pkgs; [ git ]; + # Journal services.journald.extraConfig = "SystemMaxUse=50M\nSystemMaxFiles=5"; services.journald.rateLimitBurst = 500; diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index f3da274..d415919 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -45,7 +45,7 @@ in { pname = "ultra-scroll"; version = "0.2.0"; - src = fetchGit { + src = builtins.fetchGit { url = "https://github.com/jdtsmith/ultra-scroll.git"; rev = "64ad7be02e11317576498dabb15c92cf31e2c04c"; ref = "main"; From 1b6bdc979059af4454319752a3fc640faa7993e7 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 23 Feb 2025 15:50:44 -0600 Subject: [PATCH 136/317] Fixes for work computer --- hosts/zenith/configuration.nix | 6 ++- hosts/zenith/hardware-configuration.nix | 59 +++++-------------------- hosts/zenith/home.nix | 10 +++++ modules/user/hyprland/default.nix | 5 ++- 4 files changed, 30 insertions(+), 50 deletions(-) diff --git a/hosts/zenith/configuration.nix b/hosts/zenith/configuration.nix index 9c35ae7..bdafd36 100644 --- a/hosts/zenith/configuration.nix +++ b/hosts/zenith/configuration.nix @@ -10,7 +10,7 @@ # hardware cachy.enable = true; bluetooth.enable = true; - tlp.enable = true; + tlp.enable = false; # intel doesn't work with tlp printing.enable = true; # software @@ -44,6 +44,10 @@ theme = "alph"; }; }; + + home-manager.users.emmet.userSettings = { + name = "Emmet"; + }; }; } diff --git a/hosts/zenith/hardware-configuration.nix b/hosts/zenith/hardware-configuration.nix index 1a27888..78624e1 100644 --- a/hosts/zenith/hardware-configuration.nix +++ b/hosts/zenith/hardware-configuration.nix @@ -1,13 +1,18 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, inputs, ... }: +{ config, lib, pkgs, modulesPath, ... }: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "ahci" "nvme" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ]; + services.fstrim.enable = true; services.xserver.videoDrivers = lib.mkDefault [ "modesetting" ]; @@ -17,61 +22,19 @@ enable32Bit = lib.mkDefault true; }; - boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "ahci" "nvme" "usbhid" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ]; - - # my stupid usb hub crashes systemct suspend half of the time now - # https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Sleep_hooks - systemd.services.root-suspend = { - enable = true; - description = "Root systemd suspend prehook"; - unitConfig = { - Description = "Root systemd suspend prehook"; - Before = "sleep.target"; - }; - serviceConfig = { - Type = "simple"; - ExecStart = "${pkgs.uhubctl}/bin/uhubctl -a off"; - }; - wantedBy = [ "sleep.target" ]; - }; - systemd.services.root-resume = { - enable = true; - description = "Root systemd suspend posthook"; - unitConfig = { - Description = "Root systemd suspend posthook"; - After = "suspend.target"; - }; - serviceConfig = { - Type = "simple"; - ExecStart = "${pkgs.uhubctl}/bin/uhubctl -a on"; - }; - wantedBy = [ "suspend.target" ]; - }; - - services.btrfs.autoScrub = { - enable = true; - interval = "weekly"; - }; - fileSystems."/" = - { device = "/dev/disk/by-uuid/ca98a0cc-4a50-4e28-84e5-0dddcbfea155"; - fsType = "btrfs"; - options = [ "noatime,compress-force=zstd:2,discard=async,commit=120,clear_cache,space_cache=v2,subvol=@" ]; + { device = "/dev/disk/by-uuid/548f7030-af4c-412a-b2ed-d842337aa336"; + fsType = "ext4"; }; - boot.loader.efi.efiSysMountPoint = "/boot"; - - boot.initrd.luks.devices."luks-9c74f9e5-41c3-4ba6-8a87-059dbcd4e2b3".device = "/dev/disk/by-uuid/9c74f9e5-41c3-4ba6-8a87-059dbcd4e2b3"; + boot.initrd.luks.devices."luks-50f310ae-545b-4f09-84b6-e69b5ecacaae".device = "/dev/disk/by-uuid/50f310ae-545b-4f09-84b6-e69b5ecacaae"; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/4898-D64F"; + { device = "/dev/disk/by-uuid/F691-DA8C"; fsType = "vfat"; options = [ "fmask=0077" "dmask=0077" ]; }; - + swapDevices = [ ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 8de6bcb..1a91797 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -40,6 +40,10 @@ bluetooth.enable = true; }; + home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable { + AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card0"; + }; + wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { bind = [ @@ -61,5 +65,11 @@ }; }; + + services.fnott.settings = { + main = { + output = "eDP-1"; # notifications only on main display + }; + }; }; } diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index fae6b7f..2a99608 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -29,7 +29,7 @@ in XDG_CURRENT_DESKTOP = "Hyprland"; XDG_SESSION_DESKTOP = "Hyprland"; XDG_SESSION_TYPE = "wayland"; - WLR_DRM_DEVICES = "/dev/dri/card2:/dev/dri/card1"; + AQ_DRM_DEVICES = "/dev/dri/card2:/dev/dri/card1"; GDK_BACKEND = "wayland,x11,*"; QT_QPA_PLATFORM = "wayland;xcb"; QT_QPA_PLATFORMTHEME = lib.mkForce "qt5ct"; @@ -51,6 +51,9 @@ in package = inputs.hyprland.packages.${pkgs.system}.hyprland; plugins = [ ]; settings = { + env = [ + "AQ_DRM_DEVICES,${config,home.sessionVariables.AQ_DRM_DEVICES}" + ]; exec-once = [ "hyprctl setcursor ${config.gtk.cursorTheme.name} ${builtins.toString config.gtk.cursorTheme.size}" "hyprpaper" From b394cff25980a547613456ef216b3ca878aaf231 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 23 Feb 2025 15:53:04 -0600 Subject: [PATCH 137/317] Fix typo --- modules/user/hyprland/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 2a99608..3360b0e 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -52,7 +52,7 @@ in plugins = [ ]; settings = { env = [ - "AQ_DRM_DEVICES,${config,home.sessionVariables.AQ_DRM_DEVICES}" + "AQ_DRM_DEVICES,${config.home.sessionVariables.AQ_DRM_DEVICES}" ]; exec-once = [ "hyprctl setcursor ${config.gtk.cursorTheme.name} ${builtins.toString config.gtk.cursorTheme.size}" From 8908025c438f884d9da9787120564664552e21cf Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 1 Mar 2025 07:29:37 -0600 Subject: [PATCH 138/317] Updated phoenix script --- modules/system/phoenix/default.nix | 35 +++++++++++++++++++++++------- modules/user/shell/default.nix | 1 + 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 70ae27f..f5a0d97 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -24,27 +24,46 @@ exit 1 fi if [ "$1" = "sync" ]; then - if [ "$#" = 1 ]; then - exit 0; - fi - elif [ "$1" = "update" ]; then if [ "$#" -gt 1 ]; then - echo "Warning: The 'update' command has no subcommands (no $2 subcommand)"; + echo "Warning: The 'sync' command has no subcommands (no $2 subcommand)"; fi + chown -R 0:0 ${config.systemSettings.dotfilesDir}; + chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; + pushd ${config.systemSettings.dotfilesDir} &> /dev/null; + nix flake update secrets; + nixos-rebuild switch; + exit 0; + popd &> /dev/null; + elif [ "$1" = "update" ]; then pushd ${config.systemSettings.dotfilesDir} &> /dev/null; nix flake update "''${@:2}"; popd &> /dev/null; + if [ "$#" -eq 1 ]; then + pushd ${config.systemSettings.secretsFlakeDir} &> /dev/null; + nix flake update; + popd &> /dev/null; + fi exit 0; elif [ "$1" = "pull" ]; then if [ "$#" -gt 1 ]; then echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; fi exit 0; + chown -R $DOAS_USER:users ${config.systemSettings.dotfilesDir}; + chown -R $DOAS_USER:users ${config.systemSettings.secretsFlakeDir}; pushd ${config.systemSettings.dotfilesDir} &> /dev/null; - git stash; - git pull; - git stash apply; + sudo -u $DOAS_USER git stash; + sudo -u $DOAS_USER git pull; + sudo -u $DOAS_USER git stash apply; popd &> /dev/null; + pushd ${config.systemSettings.secretsFlakeDir} &> /dev/null; + sudo -u $DOAS_USER git stash; + sudo -u $DOAS_USER git pull; + sudo -u $DOAS_USER git stash apply; + popd &> /dev/null; + chown -R 0:0 ${config.systemSettings.dotfilesDir}; + chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; + # TODO allow specifying host with $2 in build subcommand elif [ "$1" = "build" ]; then if [ "$#" -gt 1 ]; then echo "Warning: The 'build' command has no subcommands (no $2 subcommand)"; diff --git a/modules/user/shell/default.nix b/modules/user/shell/default.nix index 79daedf..9e1d714 100644 --- a/modules/user/shell/default.nix +++ b/modules/user/shell/default.nix @@ -16,6 +16,7 @@ in { syntaxHighlighting.enable = true; enableCompletion = true; shellAliases = { + phoenix = "sudo phoenix"; ls = "eza --icons -l -T -L=1"; cat = "bat"; htop = "btm"; From 8f04449cb063c329fbbc5efc6e192705e831bbc4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 1 Mar 2025 07:52:28 -0600 Subject: [PATCH 139/317] Updated system --- flake.lock | 89 ++++++++++++++--------------- modules/system/hyprland/default.nix | 2 +- modules/user/recording/default.nix | 2 +- 3 files changed, 46 insertions(+), 47 deletions(-) diff --git a/flake.lock b/flake.lock index ec7b7a2..f84a79b 100644 --- a/flake.lock +++ b/flake.lock @@ -147,11 +147,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1740333969, - "narHash": "sha256-zkLwCGw1PylyV0cGywnYF/duox1gC45BcV5XtkXD6zM=", + "lastModified": 1740820419, + "narHash": "sha256-Q0fbGgkpWyfadaXJmQmX+S+mF9cZSetYXZ+LQFwj0zE=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "84420d1963cada13bc63be2e118082586690728a", + "rev": "25b732c255ccb41258d70d775afb9f16e25fa3d5", "type": "github" }, "original": { @@ -215,7 +215,6 @@ } }, "flake-compat_2": { - "flake": false, "locked": { "lastModified": 1733328505, "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", @@ -316,11 +315,11 @@ ] }, "locked": { - "lastModified": 1735882644, - "narHash": "sha256-3FZAG+pGt3OElQjesCAWeMkQ7C/nB1oTHLRQ8ceP110=", + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "a5a961387e75ae44cc20f0a57ae463da5e959656", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", "type": "github" }, "original": { @@ -418,11 +417,11 @@ ] }, "locked": { - "lastModified": 1740318342, - "narHash": "sha256-fjr9+3Iru6O5qE+2oERQkabqAUXx4awm0+i2MBcta1U=", + "lastModified": 1740796616, + "narHash": "sha256-JU97wIfRxeFN6rpTsUVCwWAdix+Wka4Or23907YIrFI=", "owner": "nix-community", "repo": "home-manager", - "rev": "b5ab2c7fdaa807cf425066ab7cd34b073946b1ca", + "rev": "f0b5e7e8a75abdea32bbff09ddd7b6eeb4b9b445", "type": "github" }, "original": { @@ -440,11 +439,11 @@ ] }, "locked": { - "lastModified": 1737630279, - "narHash": "sha256-wJQCxyMRc4P26zDrHmZiRD5bbfcJpqPG3e2djdGG3pk=", + "lastModified": 1740347597, + "narHash": "sha256-st5q9egkPGz8TUcVVlIQX7y6G3AzHob+6M963bwVq74=", "owner": "nix-community", "repo": "home-manager", - "rev": "0db5c8bfcce78583ebbde0b2abbc95ad93445f7c", + "rev": "12e26a74e5eb1a31e13daaa08858689e25ebd449", "type": "github" }, "original": { @@ -938,11 +937,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1740162160, - "narHash": "sha256-SSYxFhqCOb3aiPb6MmN68yEzBIltfom8IgRz7phHscM=", + "lastModified": 1740743217, + "narHash": "sha256-brsCRzLqimpyhORma84c3W2xPbIidZlIc3JGIuQVSNI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "11415c7ae8539d6292f2928317ee7a8410b28bb9", + "rev": "b27ba4eb322d9d2bf2dc9ada9fd59442f50c8d7c", "type": "github" }, "original": { @@ -954,11 +953,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1740162160, - "narHash": "sha256-SSYxFhqCOb3aiPb6MmN68yEzBIltfom8IgRz7phHscM=", + "lastModified": 1740743217, + "narHash": "sha256-brsCRzLqimpyhORma84c3W2xPbIidZlIc3JGIuQVSNI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "11415c7ae8539d6292f2928317ee7a8410b28bb9", + "rev": "b27ba4eb322d9d2bf2dc9ada9fd59442f50c8d7c", "type": "github" }, "original": { @@ -969,11 +968,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1740126099, - "narHash": "sha256-ozoOtE2hGsqh4XkTJFsrTkNxkRgShxpQxDynaPZUGxk=", + "lastModified": 1740695751, + "narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "32fb99ba93fea2798be0e997ea331dd78167f814", + "rev": "6313551cd05425cd5b3e63fe47dbc324eabb15e4", "type": "github" }, "original": { @@ -1000,11 +999,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1736798957, - "narHash": "sha256-qwpCtZhSsSNQtK4xYGzMiyEDhkNzOCz/Vfu4oL2ETsQ=", + "lastModified": 1740367490, + "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9abb87b552b7f55ac8916b6fc9e5cb486656a2f3", + "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", "type": "github" }, "original": { @@ -1024,11 +1023,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1739903703, - "narHash": "sha256-w2tTcjx39lJoPDaFbIxi+INIjAKE0jbIx9TNjj9ghmg=", + "lastModified": 1740408283, + "narHash": "sha256-2xECnhgF3MU9YjmvOkrRp8wRFo2OjjewgCtlfckhL5s=", "owner": "nix-community", "repo": "NUR", - "rev": "2215ad5c4347f522523715e809f5f2022509f504", + "rev": "496a4a11162bdffb9a7b258942de138873f019f7", "type": "github" }, "original": { @@ -1047,11 +1046,11 @@ ] }, "locked": { - "lastModified": 1739557722, - "narHash": "sha256-XikzLpPUDYiNyJ4w2SfRShdbSkIgE3btYdxCGInmtc4=", + "lastModified": 1740569341, + "narHash": "sha256-WV8nY2IOfWdzBF5syVgCcgOchg/qQtpYh6LECYS9XkY=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "1f3e1f38dedbbb8aad77e184fb54ec518e2d9522", + "rev": "5eeb0172fb74392053b66a8149e61b5e191b2845", "type": "github" }, "original": { @@ -1122,11 +1121,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1740277845, - "narHash": "sha256-NNU0CdiaSbAeZ8tpDG4aFi9qtcdlItRvk8Xns9oBrVU=", + "lastModified": 1740796337, + "narHash": "sha256-FuoXrXZPoJEZQ3PF7t85tEpfBVID9JQIOnVKMNfTAb0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f933070c29f9c1c5457447a51903f27f76ebb519", + "rev": "bbac9527bc6b28b6330b13043d0e76eac11720dc", "type": "github" }, "original": { @@ -1142,8 +1141,8 @@ ] }, "locked": { - "lastModified": 1740339176, - "narHash": "sha256-ayGSORebzKQtgLTxmgy/breWizBBhr+8nF0L256zNT8=", + "lastModified": 1740835758, + "narHash": "sha256-NZC9yaZtCrp3dXIXcHKyhKb4vhY2UIJZeQV50kWfCTw=", "path": "/etc/nixos.secrets", "type": "path" }, @@ -1174,11 +1173,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1740334679, - "narHash": "sha256-FP8ggvqzdHQ1+vr0H9r+PQbFos9CtlO8bYK0tMnJK4o=", + "lastModified": 1740769934, + "narHash": "sha256-iyxUwII/NQNClT77VqQiDpaXJz1r0Z8tNVxgY64mLak=", "owner": "danth", "repo": "stylix", - "rev": "f121a142abde1b6aa9738e4c21a330c0ddd4eb70", + "rev": "de4ee5899042801b62f988687acd454d4d411075", "type": "github" }, "original": { @@ -1284,11 +1283,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1737565458, - "narHash": "sha256-y+9cvOA6BLKT0WfebDsyUpUa/YxKow9hTjBp6HpQv68=", + "lastModified": 1740351358, + "narHash": "sha256-Hdk850xgAd3DL8KX0AbyU7tC834d3Lej1jOo3duWiOA=", "owner": "tinted-theming", "repo": "schemes", - "rev": "ae31625ba47aeaa4bf6a98cf11a8d4886f9463d9", + "rev": "a1bc2bd89e693e7e3f5764cfe8114e2ae150e184", "type": "github" }, "original": { @@ -1300,11 +1299,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1735737224, - "narHash": "sha256-FO2hRBkZsjlIRqzNHCPc/52yxg11kHGA8MEtSun9RwE=", + "lastModified": 1740272597, + "narHash": "sha256-/etfUV3HzAaLW3RSJVwUaW8ULbMn3v6wbTlXSKbcoWQ=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "aead506a9930c717ebf81cc83a2126e9ca08fa64", + "rev": "b6c7f46c8718cc484f2db8b485b06e2a98304cd0", "type": "github" }, "original": { diff --git a/modules/system/hyprland/default.nix b/modules/system/hyprland/default.nix index 5d1011c..2d2980a 100644 --- a/modules/system/hyprland/default.nix +++ b/modules/system/hyprland/default.nix @@ -44,7 +44,7 @@ in wayland.enable = true; enableHidpi = true; theme = "chili"; - package = pkgs.sddm; + package = pkgs.kdePackages.sddm; }; # xwayland diff --git a/modules/user/recording/default.nix b/modules/user/recording/default.nix index 240dfcf..ba44907 100644 --- a/modules/user/recording/default.nix +++ b/modules/user/recording/default.nix @@ -12,7 +12,7 @@ in { config = lib.mkIf cfg.enable { home.packages = with pkgs; [ obs-studio - kdenlive + kdePackages.kdenlive tenacity ardour ]; From 7d6bec4228681069af57705b86a00f4813caad96 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 08:57:31 -0600 Subject: [PATCH 140/317] Fix hyprland after update --- modules/user/hyprland/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 3360b0e..ee0fcef 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -29,7 +29,7 @@ in XDG_CURRENT_DESKTOP = "Hyprland"; XDG_SESSION_DESKTOP = "Hyprland"; XDG_SESSION_TYPE = "wayland"; - AQ_DRM_DEVICES = "/dev/dri/card2:/dev/dri/card1"; + AQ_DRM_DEVICES = "/dev/dri/card1:/dev/dri/card0"; GDK_BACKEND = "wayland,x11,*"; QT_QPA_PLATFORM = "wayland;xcb"; QT_QPA_PLATFORMTHEME = lib.mkForce "qt5ct"; From c5fa7cd2069e9d2b1f137b7787304a2c6bd413bf Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 08:57:55 -0600 Subject: [PATCH 141/317] Fix building godot --- modules/user/godot/default.nix | 346 ++++++++++++++++----------------- 1 file changed, 172 insertions(+), 174 deletions(-) diff --git a/modules/user/godot/default.nix b/modules/user/godot/default.nix index 467604c..d8a4307 100644 --- a/modules/user/godot/default.nix +++ b/modules/user/godot/default.nix @@ -14,184 +14,182 @@ in { godot_4 ]; - # ~/.config/godot must be owned by another user in order for this to work - # does not need to be recursively owned, however - # TODO fix other colors - home.file.".config/godot/editor_settings-4.3.tres".text = '' - [gd_resource type="EditorSettings" format=3] - - [resource] - interface/editor/separate_distraction_mode = true - interface/theme/preset = "Custom" - interface/theme/spacing_preset = "Custom" - interface/theme/base_color = Color(''+config.lib.stylix.colors.base00-dec-r+'',''+config.lib.stylix.colors.base00-dec-g+'', ''+config.lib.stylix.colors.base00-dec-b+'', 0.8) + # TODO write script that applies these settings not as a symlink + #home.file.".config/godot/editor_settings-4.3.tres".text = '' + # [gd_resource type="EditorSettings" format=3] + # + # [resource] + # interface/editor/separate_distraction_mode = true + # interface/theme/preset = "Custom" + # interface/theme/spacing_preset = "Custom" + # interface/theme/base_color = Color(''+config.lib.stylix.colors.base00-dec-r+'',''+config.lib.stylix.colors.base00-dec-g+'', ''+config.lib.stylix.colors.base00-dec-b+'', 0.8) - interface/theme/accent_color = Color(''+config.lib.stylix.colors.base08-dec-r+'',''+config.lib.stylix.colors.base08-dec-g+'', ''+config.lib.stylix.colors.base08-dec-b+'', 1) + # interface/theme/accent_color = Color(''+config.lib.stylix.colors.base08-dec-r+'',''+config.lib.stylix.colors.base08-dec-g+'', ''+config.lib.stylix.colors.base08-dec-b+'', 1) - interface/theme/contrast = 0.3 - interface/theme/icon_saturation = 1.55 - interface/theme/relationship_line_opacity = 0.35 - interface/theme/border_size = 1 - interface/theme/corner_radius = 6 - interface/theme/additional_spacing = 1 - interface/touchscreen/enable_pan_and_scale_gestures = true - interface/touchscreen/scale_gizmo_handles = 2.0 - interface/multi_window/enable = false - interface/multi_window/restore_windows_on_load = false - filesystem/external_programs/raster_image_editor = "krita" - filesystem/external_programs/vector_image_editor = "inkscape" - filesystem/external_programs/3d_model_editor = "blender" - filesystem/external_programs/terminal_emulator = "''+config.userSettings.terminal+''" + # interface/theme/contrast = 0.3 + # interface/theme/icon_saturation = 1.55 + # interface/theme/relationship_line_opacity = 0.35 + # interface/theme/border_size = 1 + # interface/theme/corner_radius = 6 + # interface/theme/additional_spacing = 1 + # interface/touchscreen/enable_pan_and_scale_gestures = true + # interface/touchscreen/scale_gizmo_handles = 2.0 + # interface/multi_window/enable = false + # interface/multi_window/restore_windows_on_load = false + # filesystem/external_programs/raster_image_editor = "krita" + # filesystem/external_programs/vector_image_editor = "inkscape" + # filesystem/external_programs/3d_model_editor = "blender" + # filesystem/external_programs/terminal_emulator = "''+config.userSettings.terminal+''" - filesystem/directories/default_project_path = "/home/''+config.home.username+''/Projects" + # filesystem/directories/default_project_path = "/home/''+config.home.username+''/Projects" - text_editor/theme/highlighting/symbol_color = Color(0.67, 0.79, 1, 1) - text_editor/theme/highlighting/keyword_color = Color(1, 0.44, 0.52, 1) - text_editor/theme/highlighting/control_flow_keyword_color = Color(1, 0.55, 0.8, 1) - text_editor/theme/highlighting/base_type_color = Color(0.26, 1, 0.76, 1) - text_editor/theme/highlighting/engine_type_color = Color(0.56, 1, 0.86, 1) - text_editor/theme/highlighting/user_type_color = Color(0.78, 1, 0.93, 1) - text_editor/theme/highlighting/comment_color = Color(0.764706, 0.769608, 0.77451, 0.5) - text_editor/theme/highlighting/doc_comment_color = Color(0.6, 0.7, 0.8, 0.8) - text_editor/theme/highlighting/string_color = Color(1, 0.93, 0.63, 1) - text_editor/theme/highlighting/background_color = Color(0.0323529, 0.0431373, 0.0539216, 1) - text_editor/theme/highlighting/completion_background_color = Color(0.0588235, 0.0784314, 0.0980392, 1) - text_editor/theme/highlighting/completion_selected_color = Color(1, 1, 1, 0.07) - text_editor/theme/highlighting/completion_existing_color = Color(1, 1, 1, 0.14) - text_editor/theme/highlighting/completion_font_color = Color(0.764706, 0.769608, 0.77451, 1) - text_editor/theme/highlighting/text_color = Color(0.764706, 0.769608, 0.77451, 1) - text_editor/theme/highlighting/line_number_color = Color(0.764706, 0.769608, 0.77451, 0.5) - text_editor/theme/highlighting/safe_line_number_color = Color(0.764706, 0.923529, 0.77451, 0.75) - text_editor/theme/highlighting/caret_color = Color(1, 1, 1, 1) - text_editor/theme/highlighting/selection_color = Color(0.941176, 0.443137, 0.470588, 0.4) - text_editor/theme/highlighting/brace_mismatch_color = Color(1, 0.47, 0.42, 1) - text_editor/theme/highlighting/current_line_color = Color(1, 1, 1, 0.07) - text_editor/theme/highlighting/line_length_guideline_color = Color(0.0588235, 0.0784314, 0.0980392, 1) - text_editor/theme/highlighting/word_highlighted_color = Color(1, 1, 1, 0.07) - text_editor/theme/highlighting/number_color = Color(0.63, 1, 0.88, 1) - text_editor/theme/highlighting/function_color = Color(0.34, 0.7, 1, 1) - text_editor/theme/highlighting/member_variable_color = Color(0.736, 0.88, 1, 1) - text_editor/theme/highlighting/mark_color = Color(1, 0.47, 0.42, 0.3) - text_editor/theme/highlighting/breakpoint_color = Color(1, 0.47, 0.42, 1) - text_editor/theme/highlighting/code_folding_color = Color(1, 1, 1, 0.27) - text_editor/theme/highlighting/search_result_color = Color(1, 1, 1, 0.07) - text_editor/appearance/whitespace/draw_tabs = false - text_editor/behavior/indent/type = 1 - text_editor/behavior/indent/size = 2 - text_editor/behavior/files/trim_trailing_whitespace_on_save = true - editors/panning/2d_editor_panning_scheme = 1 - editors/panning/sub_editors_panning_scheme = 1 - editors/panning/simple_panning = true - project_manager/directory_naming_convention = 3 - asset_library/available_urls = { - "godotengine.org (Official)": "https://godotengine.org/asset-library/api" - } - asset_library/use_threads = true - export/android/java_sdk_path = "" - export/android/android_sdk_path = "" - export/android/debug_keystore = "/home/emmet/.local/share/godot/keystores/debug.keystore" - export/android/debug_keystore_user = "androiddebugkey" - export/android/debug_keystore_pass = "android" - export/android/force_system_user = false - export/android/shutdown_adb_on_exit = true - export/android/one_click_deploy_clear_previous_install = false - export/android/use_wifi_for_remote_debug = false - export/android/wifi_remote_debug_host = "localhost" - export/macos/rcodesign = "" - export/web/http_host = "localhost" - export/web/http_port = 8060 - export/web/use_tls = false - export/web/tls_key = "" - export/web/tls_certificate = "" - export/windows/rcedit = "" - export/windows/osslsigncode = "" - export/windows/wine = "/home/emmet/.nix-profile/bin/wine64" - _default_feature_profile = "" - interface/editors/show_scene_tree_root_selection = true - interface/editors/derive_script_globals_by_name = true - docks/scene_tree/ask_before_deleting_related_animation_tracks = true - _use_favorites_root_selection = false - filesystem/file_server/port = 6010 - filesystem/file_server/password = "" - editors/3d/manipulator_gizmo_size = 80 - editors/3d/manipulator_gizmo_opacity = 0.9 - editors/3d/navigation/show_viewport_rotation_gizmo = true - editors/3d/navigation/show_viewport_navigation_gizmo = false - text_editor/behavior/files/auto_reload_and_parse_scripts_on_save = true - text_editor/behavior/files/open_dominant_script_on_scene_change = false - text_editor/external/use_external_editor = false - text_editor/external/exec_path = "" - text_editor/script_list/script_temperature_enabled = true - text_editor/script_list/script_temperature_history_size = 15 - text_editor/script_list/group_help_pages = true - text_editor/script_list/sort_scripts_by = 0 - text_editor/script_list/list_script_names_as = 0 - text_editor/external/exec_flags = "{file}" - version_control/username = "" - version_control/ssh_public_key_path = "" - version_control/ssh_private_key_path = "" - editors/bone_mapper/handle_colors/unset = Color(0.3, 0.3, 0.3, 1) - editors/bone_mapper/handle_colors/set = Color(0.1, 0.6, 0.25, 1) - editors/bone_mapper/handle_colors/missing = Color(0.8, 0.2, 0.8, 1) - editors/bone_mapper/handle_colors/error = Color(0.8, 0.2, 0.2, 1) - network/debug_adapter/remote_port = 6006 - network/debug_adapter/request_timeout = 1000 - network/debug_adapter/sync_breakpoints = false - editors/3d_gizmos/gizmo_settings/path3d_tilt_disk_size = 0.8 - editors/3d_gizmos/gizmo_colors/path_tilt = Color(1, 1, 0.4, 0.9) - editors/3d_gizmos/gizmo_colors/skeleton = Color(1, 0.8, 0.4, 1) - editors/3d_gizmos/gizmo_colors/selected_bone = Color(0.8, 0.3, 0, 1) - editors/3d_gizmos/gizmo_settings/bone_axis_length = 0.1 - editors/3d_gizmos/gizmo_settings/bone_shape = 1 - editors/3d_gizmos/gizmo_colors/csg = Color(0, 0.4, 1, 0.15) - editors/grid_map/editor_side = 1 - editors/grid_map/palette_min_width = 230 - editors/grid_map/preview_size = 64 - export/ssh/ssh = "" - export/ssh/scp = "" - network/language_server/remote_host = "127.0.0.1" - network/language_server/remote_port = 6005 - network/language_server/enable_smart_resolve = true - network/language_server/show_native_symbols_in_editor = false - network/language_server/use_thread = false - network/language_server/poll_limit_usec = 100000 - text_editor/theme/highlighting/gdscript/function_definition_color = Color(0.4, 0.9, 1, 1) - text_editor/theme/highlighting/gdscript/global_function_color = Color(0.64, 0.64, 0.96, 1) - text_editor/theme/highlighting/gdscript/node_path_color = Color(0.72, 0.77, 0.49, 1) - text_editor/theme/highlighting/gdscript/node_reference_color = Color(0.39, 0.76, 0.35, 1) - text_editor/theme/highlighting/gdscript/annotation_color = Color(1, 0.7, 0.45, 1) - text_editor/theme/highlighting/gdscript/string_name_color = Color(1, 0.76, 0.65, 1) - text_editor/theme/highlighting/comment_markers/critical_color = Color(0.77, 0.35, 0.35, 1) - text_editor/theme/highlighting/comment_markers/warning_color = Color(0.72, 0.61, 0.48, 1) - text_editor/theme/highlighting/comment_markers/notice_color = Color(0.56, 0.67, 0.51, 1) - text_editor/theme/highlighting/comment_markers/critical_list = "ALERT,ATTENTION,CAUTION,CRITICAL,DANGER,SECURITY" - text_editor/theme/highlighting/comment_markers/warning_list = "BUG,DEPRECATED,FIXME,HACK,TASK,TBD,TODO,WARNING" - text_editor/theme/highlighting/comment_markers/notice_list = "INFO,NOTE,NOTICE,TEST,TESTING" - editors/3d_gizmos/gizmo_colors/camera = Color(0.8, 0.4, 0.8, 1) - editors/3d_gizmos/gizmo_colors/stream_player_3d = Color(0.4, 0.8, 1, 1) - editors/3d_gizmos/gizmo_colors/occluder = Color(0.8, 0.5, 1, 1) - editors/3d_gizmos/gizmo_colors/visibility_notifier = Color(0.8, 0.5, 0.7, 1) - editors/3d_gizmos/gizmo_colors/particles = Color(0.8, 0.7, 0.4, 1) - editors/3d_gizmos/gizmo_colors/particle_attractor = Color(1, 0.7, 0.5, 1) - editors/3d_gizmos/gizmo_colors/particle_collision = Color(0.5, 0.7, 1, 1) - editors/3d_gizmos/gizmo_colors/reflection_probe = Color(0.6, 1, 0.5, 1) - editors/3d_gizmos/gizmo_colors/decal = Color(0.6, 0.5, 1, 1) - editors/3d_gizmos/gizmo_colors/voxel_gi = Color(0.5, 1, 0.6, 1) - editors/3d_gizmos/gizmo_colors/lightmap_lines = Color(0.5, 0.6, 1, 1) - editors/3d_gizmos/gizmo_colors/lightprobe_lines = Color(0.5, 0.6, 1, 1) - editors/3d_gizmos/gizmo_colors/joint_body_a = Color(0.6, 0.8, 1, 1) - editors/3d_gizmos/gizmo_colors/joint_body_b = Color(0.6, 0.9, 1, 1) - editors/3d_gizmos/gizmo_colors/fog_volume = Color(0.5, 0.7, 1, 1) - text_editor/help/sort_functions_alphabetically = true - metadata/script_setup_templates_dictionary = { - "AnimatedSprite2D": "0NodeDefault", - "Area2D": "0NodeDefault", - "CanvasLayer": "0NodeDefault", - "Node": "0NodeDefault", - "Node2D": "0NodeDefault" - } - metadata/export_template_download_directory = "/home/emmet/.cache/godot" - ''; + # text_editor/theme/highlighting/symbol_color = Color(0.67, 0.79, 1, 1) + # text_editor/theme/highlighting/keyword_color = Color(1, 0.44, 0.52, 1) + # text_editor/theme/highlighting/control_flow_keyword_color = Color(1, 0.55, 0.8, 1) + # text_editor/theme/highlighting/base_type_color = Color(0.26, 1, 0.76, 1) + # text_editor/theme/highlighting/engine_type_color = Color(0.56, 1, 0.86, 1) + # text_editor/theme/highlighting/user_type_color = Color(0.78, 1, 0.93, 1) + # text_editor/theme/highlighting/comment_color = Color(0.764706, 0.769608, 0.77451, 0.5) + # text_editor/theme/highlighting/doc_comment_color = Color(0.6, 0.7, 0.8, 0.8) + # text_editor/theme/highlighting/string_color = Color(1, 0.93, 0.63, 1) + # text_editor/theme/highlighting/background_color = Color(0.0323529, 0.0431373, 0.0539216, 1) + # text_editor/theme/highlighting/completion_background_color = Color(0.0588235, 0.0784314, 0.0980392, 1) + # text_editor/theme/highlighting/completion_selected_color = Color(1, 1, 1, 0.07) + # text_editor/theme/highlighting/completion_existing_color = Color(1, 1, 1, 0.14) + # text_editor/theme/highlighting/completion_font_color = Color(0.764706, 0.769608, 0.77451, 1) + # text_editor/theme/highlighting/text_color = Color(0.764706, 0.769608, 0.77451, 1) + # text_editor/theme/highlighting/line_number_color = Color(0.764706, 0.769608, 0.77451, 0.5) + # text_editor/theme/highlighting/safe_line_number_color = Color(0.764706, 0.923529, 0.77451, 0.75) + # text_editor/theme/highlighting/caret_color = Color(1, 1, 1, 1) + # text_editor/theme/highlighting/selection_color = Color(0.941176, 0.443137, 0.470588, 0.4) + # text_editor/theme/highlighting/brace_mismatch_color = Color(1, 0.47, 0.42, 1) + # text_editor/theme/highlighting/current_line_color = Color(1, 1, 1, 0.07) + # text_editor/theme/highlighting/line_length_guideline_color = Color(0.0588235, 0.0784314, 0.0980392, 1) + # text_editor/theme/highlighting/word_highlighted_color = Color(1, 1, 1, 0.07) + # text_editor/theme/highlighting/number_color = Color(0.63, 1, 0.88, 1) + # text_editor/theme/highlighting/function_color = Color(0.34, 0.7, 1, 1) + # text_editor/theme/highlighting/member_variable_color = Color(0.736, 0.88, 1, 1) + # text_editor/theme/highlighting/mark_color = Color(1, 0.47, 0.42, 0.3) + # text_editor/theme/highlighting/breakpoint_color = Color(1, 0.47, 0.42, 1) + # text_editor/theme/highlighting/code_folding_color = Color(1, 1, 1, 0.27) + # text_editor/theme/highlighting/search_result_color = Color(1, 1, 1, 0.07) + # text_editor/appearance/whitespace/draw_tabs = false + # text_editor/behavior/indent/type = 1 + # text_editor/behavior/indent/size = 2 + # text_editor/behavior/files/trim_trailing_whitespace_on_save = true + # editors/panning/2d_editor_panning_scheme = 1 + # editors/panning/sub_editors_panning_scheme = 1 + # editors/panning/simple_panning = true + # project_manager/directory_naming_convention = 3 + # asset_library/available_urls = { + # "godotengine.org (Official)": "https://godotengine.org/asset-library/api" + # } + # asset_library/use_threads = true + # export/android/java_sdk_path = "" + # export/android/android_sdk_path = "" + # export/android/debug_keystore = "/home/emmet/.local/share/godot/keystores/debug.keystore" + # export/android/debug_keystore_user = "androiddebugkey" + # export/android/debug_keystore_pass = "android" + # export/android/force_system_user = false + # export/android/shutdown_adb_on_exit = true + # export/android/one_click_deploy_clear_previous_install = false + # export/android/use_wifi_for_remote_debug = false + # export/android/wifi_remote_debug_host = "localhost" + # export/macos/rcodesign = "" + # export/web/http_host = "localhost" + # export/web/http_port = 8060 + # export/web/use_tls = false + # export/web/tls_key = "" + # export/web/tls_certificate = "" + # export/windows/rcedit = "" + # export/windows/osslsigncode = "" + # export/windows/wine = "/home/emmet/.nix-profile/bin/wine64" + # _default_feature_profile = "" + # interface/editors/show_scene_tree_root_selection = true + # interface/editors/derive_script_globals_by_name = true + # docks/scene_tree/ask_before_deleting_related_animation_tracks = true + # _use_favorites_root_selection = false + # filesystem/file_server/port = 6010 + # filesystem/file_server/password = "" + # editors/3d/manipulator_gizmo_size = 80 + # editors/3d/manipulator_gizmo_opacity = 0.9 + # editors/3d/navigation/show_viewport_rotation_gizmo = true + # editors/3d/navigation/show_viewport_navigation_gizmo = false + # text_editor/behavior/files/auto_reload_and_parse_scripts_on_save = true + # text_editor/behavior/files/open_dominant_script_on_scene_change = false + # text_editor/external/use_external_editor = false + # text_editor/external/exec_path = "" + # text_editor/script_list/script_temperature_enabled = true + # text_editor/script_list/script_temperature_history_size = 15 + # text_editor/script_list/group_help_pages = true + # text_editor/script_list/sort_scripts_by = 0 + # text_editor/script_list/list_script_names_as = 0 + # text_editor/external/exec_flags = "{file}" + # version_control/username = "" + # version_control/ssh_public_key_path = "" + # version_control/ssh_private_key_path = "" + # editors/bone_mapper/handle_colors/unset = Color(0.3, 0.3, 0.3, 1) + # editors/bone_mapper/handle_colors/set = Color(0.1, 0.6, 0.25, 1) + # editors/bone_mapper/handle_colors/missing = Color(0.8, 0.2, 0.8, 1) + # editors/bone_mapper/handle_colors/error = Color(0.8, 0.2, 0.2, 1) + # network/debug_adapter/remote_port = 6006 + # network/debug_adapter/request_timeout = 1000 + # network/debug_adapter/sync_breakpoints = false + # editors/3d_gizmos/gizmo_settings/path3d_tilt_disk_size = 0.8 + # editors/3d_gizmos/gizmo_colors/path_tilt = Color(1, 1, 0.4, 0.9) + # editors/3d_gizmos/gizmo_colors/skeleton = Color(1, 0.8, 0.4, 1) + # editors/3d_gizmos/gizmo_colors/selected_bone = Color(0.8, 0.3, 0, 1) + # editors/3d_gizmos/gizmo_settings/bone_axis_length = 0.1 + # editors/3d_gizmos/gizmo_settings/bone_shape = 1 + # editors/3d_gizmos/gizmo_colors/csg = Color(0, 0.4, 1, 0.15) + # editors/grid_map/editor_side = 1 + # editors/grid_map/palette_min_width = 230 + # editors/grid_map/preview_size = 64 + # export/ssh/ssh = "" + # export/ssh/scp = "" + # network/language_server/remote_host = "127.0.0.1" + # network/language_server/remote_port = 6005 + # network/language_server/enable_smart_resolve = true + # network/language_server/show_native_symbols_in_editor = false + # network/language_server/use_thread = false + # network/language_server/poll_limit_usec = 100000 + # text_editor/theme/highlighting/gdscript/function_definition_color = Color(0.4, 0.9, 1, 1) + # text_editor/theme/highlighting/gdscript/global_function_color = Color(0.64, 0.64, 0.96, 1) + # text_editor/theme/highlighting/gdscript/node_path_color = Color(0.72, 0.77, 0.49, 1) + # text_editor/theme/highlighting/gdscript/node_reference_color = Color(0.39, 0.76, 0.35, 1) + # text_editor/theme/highlighting/gdscript/annotation_color = Color(1, 0.7, 0.45, 1) + # text_editor/theme/highlighting/gdscript/string_name_color = Color(1, 0.76, 0.65, 1) + # text_editor/theme/highlighting/comment_markers/critical_color = Color(0.77, 0.35, 0.35, 1) + # text_editor/theme/highlighting/comment_markers/warning_color = Color(0.72, 0.61, 0.48, 1) + # text_editor/theme/highlighting/comment_markers/notice_color = Color(0.56, 0.67, 0.51, 1) + # text_editor/theme/highlighting/comment_markers/critical_list = "ALERT,ATTENTION,CAUTION,CRITICAL,DANGER,SECURITY" + # text_editor/theme/highlighting/comment_markers/warning_list = "BUG,DEPRECATED,FIXME,HACK,TASK,TBD,TODO,WARNING" + # text_editor/theme/highlighting/comment_markers/notice_list = "INFO,NOTE,NOTICE,TEST,TESTING" + # editors/3d_gizmos/gizmo_colors/camera = Color(0.8, 0.4, 0.8, 1) + # editors/3d_gizmos/gizmo_colors/stream_player_3d = Color(0.4, 0.8, 1, 1) + # editors/3d_gizmos/gizmo_colors/occluder = Color(0.8, 0.5, 1, 1) + # editors/3d_gizmos/gizmo_colors/visibility_notifier = Color(0.8, 0.5, 0.7, 1) + # editors/3d_gizmos/gizmo_colors/particles = Color(0.8, 0.7, 0.4, 1) + # editors/3d_gizmos/gizmo_colors/particle_attractor = Color(1, 0.7, 0.5, 1) + # editors/3d_gizmos/gizmo_colors/particle_collision = Color(0.5, 0.7, 1, 1) + # editors/3d_gizmos/gizmo_colors/reflection_probe = Color(0.6, 1, 0.5, 1) + # editors/3d_gizmos/gizmo_colors/decal = Color(0.6, 0.5, 1, 1) + # editors/3d_gizmos/gizmo_colors/voxel_gi = Color(0.5, 1, 0.6, 1) + # editors/3d_gizmos/gizmo_colors/lightmap_lines = Color(0.5, 0.6, 1, 1) + # editors/3d_gizmos/gizmo_colors/lightprobe_lines = Color(0.5, 0.6, 1, 1) + # editors/3d_gizmos/gizmo_colors/joint_body_a = Color(0.6, 0.8, 1, 1) + # editors/3d_gizmos/gizmo_colors/joint_body_b = Color(0.6, 0.9, 1, 1) + # editors/3d_gizmos/gizmo_colors/fog_volume = Color(0.5, 0.7, 1, 1) + # text_editor/help/sort_functions_alphabetically = true + # metadata/script_setup_templates_dictionary = { + # "AnimatedSprite2D": "0NodeDefault", + # "Area2D": "0NodeDefault", + # "CanvasLayer": "0NodeDefault", + # "Node": "0NodeDefault", + # "Node2D": "0NodeDefault" + # } + # metadata/export_template_download_directory = "/home/emmet/.cache/godot" + #''; }; } From 32527be821ce9fa5a61ac4bb0c377472669f6f6b Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 08:58:02 -0600 Subject: [PATCH 142/317] Slight fixes for steam --- modules/user/hyprland/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index ee0fcef..550f883 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -326,6 +326,9 @@ in "center,title:(Resource)" "tile,title:(Godot)" "opacity 0.80,title:ORUI" + "suppressevent maximize,class:^(steam)$" + "float,class:^(steam)$" + "fullscreen,class:^(steam)$" "opacity 1.0,class:^(org.qutebrowser.qutebrowser),fullscreen:1" "opacity 0.85,class:^(Element)$" "opacity 0.85,class:^(Logseq)$" From e48a4ba75a9e7fb1106c6834b7cfe1ee11c9979d Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 08:58:15 -0600 Subject: [PATCH 143/317] Fix indenting in org mode --- modules/user/emacs/init.el | 68 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index e0efb83..f4e7bc6 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -303,8 +303,8 @@ (evil-define-key 'insert org-mode-map (kbd "") '+org/insert-item-above) (evil-define-key 'motion org-mode-map (kbd "") '+org/insert-item-below) (evil-define-key 'motion org-mode-map (kbd "") '+org/insert-item-above) - (evil-define-key 'insert org-mode-map (kbd "") 'org-demote-subtree) - (evil-define-key 'insert org-mode-map (kbd "") 'org-promote-subtree) + (evil-define-key 'insert org-mode-map (kbd "") '+org-indent-maybe-h) + (evil-define-key 'insert org-mode-map (kbd "") '+org-reverse-indent-maybe-h) (evil-define-key 'motion org-mode-map (kbd "mll") 'org-insert-link) (evil-define-key 'motion org-mode-map (kbd "mt") 'org-todo) @@ -806,7 +806,69 @@ (defun +org/insert-item-above (count) "Inserts a new heading, table cell or item above the current one." (interactive "p") - (dotimes (_ count) (+org--insert-item 'above)))) + (dotimes (_ count) (+org--insert-item 'above))) + + ;;;###autoload + (defun +org-indent-maybe-h () + "Indent the current item (header or item), if possible. + Made for `org-tab-first-hook' in evil-mode." + (interactive) + (cond ((not (and (bound-and-true-p evil-local-mode) + (evil-insert-state-p))) + nil) + ((and (bound-and-true-p org-cdlatex-mode) + (or (org-inside-LaTeX-fragment-p) + (org-inside-latex-macro-p))) + nil) + ((org-at-item-p) + (org-indent-item-tree) + t) + ((org-at-heading-p) + (ignore-errors + (org-demote) + t) + ((org-in-src-block-p t) + (save-window-excursion + (org-babel-do-in-edit-buffer + (call-interactively #'indent-for-tab-command))) + t) + ((and (save-excursion + (skip-chars-backward " \t") + (bolp)) + (org-in-subtree-not-table-p)) + (call-interactively #'tab-to-tab-stop) + t))) + + ;;;###autoload + (defun +org-reverse-indent-maybe-h () + "Indent the current item (header or item), if possible. + Made for `org-tab-first-hook' in evil-mode." + (interactive) + (cond ((not (and (bound-and-true-p evil-local-mode) + (evil-insert-state-p))) + nil) + ((and (bound-and-true-p org-cdlatex-mode) + (or (org-inside-LaTeX-fragment-p) + (org-inside-latex-macro-p))) + nil) + ((org-at-item-p) + (org-outdent-item-tree) + t) + ((org-at-heading-p) + (ignore-errors + (org-promote) + t) + ((org-in-src-block-p t) + (save-window-excursion + (org-babel-do-in-edit-buffer + (call-interactively #'indent-for-tab-command))) + t) + ((and (save-excursion + (skip-chars-backward " \t") + (bolp)) + (org-in-subtree-not-table-p)) + (call-interactively #'tab-to-tab-stop) + t)))) (use-package org-roam :after (org) From 15fa120084b66effe99ccbe0b343111a1c646b17 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 11:40:15 -0600 Subject: [PATCH 144/317] hyprland gpu fixes --- hosts/snowfire/home.nix | 4 ++++ modules/user/hyprland/default.nix | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index 596034f..5744a3c 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -41,6 +41,10 @@ bluetooth.enable = true; }; + home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable { + AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card0:/dev/dri/card1"; + }; + wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { monitor = [ diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 550f883..50a370f 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -29,7 +29,6 @@ in XDG_CURRENT_DESKTOP = "Hyprland"; XDG_SESSION_DESKTOP = "Hyprland"; XDG_SESSION_TYPE = "wayland"; - AQ_DRM_DEVICES = "/dev/dri/card1:/dev/dri/card0"; GDK_BACKEND = "wayland,x11,*"; QT_QPA_PLATFORM = "wayland;xcb"; QT_QPA_PLATFORMTHEME = lib.mkForce "qt5ct"; From a298b75c7a4ae4dee6f4c9e9cb555d9f8e8f3212 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 11:40:27 -0600 Subject: [PATCH 145/317] emacs fixes --- modules/user/emacs/default.nix | 2 +- modules/user/emacs/init.el | 16 ++++------------ 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index d415919..3f73127 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -28,7 +28,7 @@ in { treemacs-evil treemacs-nerd-icons treesit-grammars.with-all-grammars git-timemachine wgrep - magit magit-file-icons magit-todos + magit magit-todos undo-fu undo-fu-session org-roam org-node org-node-fakeroam vterm vterm-toggle sudo-edit diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index f4e7bc6..aba58e2 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -159,19 +159,11 @@ (setq magit-display-buffer-function 'magit-display-buffer-fullframe-status-v1) (setq magit-bury-buffer-function 'magit-restore-window-configuration) (define-key magit-mode-map (kbd "SPC") nil) - (add-hook 'git-commit-mode-hook 'evil-insert-state)) + (add-hook 'git-commit-mode-hook 'evil-insert-state) + :custom (magit-format-file-function #'magit-format-file-nerd-icons)) (use-package git-timemachine) -(use-package magit-file-icons - :after (magit nerd-icons) - :init - (magit-file-icons-mode 1) - :custom - (magit-file-icons-enable-diff-file-section-icons t) - (magit-file-icons-enable-untracked-icons t) - (magit-file-icons-enable-diffstat-icons t)) - (use-package magit-todos :after (magit) :config @@ -837,7 +829,7 @@ (bolp)) (org-in-subtree-not-table-p)) (call-interactively #'tab-to-tab-stop) - t))) + t)))) ;;;###autoload (defun +org-reverse-indent-maybe-h () @@ -868,7 +860,7 @@ (bolp)) (org-in-subtree-not-table-p)) (call-interactively #'tab-to-tab-stop) - t)))) + t))))) (use-package org-roam :after (org) From 48263bc76999df4b9cb05caef87866634a122993 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 12:16:27 -0600 Subject: [PATCH 146/317] Make downloads from qb more seamless --- modules/user/browser/qutebrowser.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/user/browser/qutebrowser.nix b/modules/user/browser/qutebrowser.nix index 60bc18f..0536bdd 100644 --- a/modules/user/browser/qutebrowser.nix +++ b/modules/user/browser/qutebrowser.nix @@ -256,6 +256,9 @@ c.url.searchengines = {'DEFAULT': 'https://search.brave.com/search?q={}&source=w config.set('completion.open_categories',["searchengines","quickmarks","bookmarks"]) config.set('downloads.location.directory', '~/Downloads') +config.set('downloads.location.prompt', False) +config.set('downloads.position', 'bottom') +config.set('downloads.remove_finished', 5000) config.set('fileselect.handler', 'external') config.set('fileselect.single_file.command', ['kitty','-e','ranger','--choosefile={}']) From 98d5f73cc1bb9aea502ed6cac13aeb24ff4e8b0b Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 12:19:02 -0600 Subject: [PATCH 147/317] fix file mod time discrepencies for local secrets repo --- flake.lock | 15 +++++++++------ flake.nix | 1 + 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index f84a79b..65cbbb4 100644 --- a/flake.lock +++ b/flake.lock @@ -1141,14 +1141,17 @@ ] }, "locked": { - "lastModified": 1740835758, - "narHash": "sha256-NZC9yaZtCrp3dXIXcHKyhKb4vhY2UIJZeQV50kWfCTw=", - "path": "/etc/nixos.secrets", - "type": "path" + "lastModified": 1740839257, + "narHash": "sha256-rHEB0JnNyXJ1lvxUZZiRYV5elNil5hXO1792Fl807zc=", + "ref": "refs/heads/main", + "rev": "53406ca30dca3007caf57fdc940506e64f605f17", + "revCount": 20, + "type": "git", + "url": "file://path:/etc/nixos.secrets" }, "original": { - "path": "/etc/nixos.secrets", - "type": "path" + "type": "git", + "url": "file://path:/etc/nixos.secrets" } }, "stylix": { diff --git a/flake.nix b/flake.nix index b724571..8cc0800 100644 --- a/flake.nix +++ b/flake.nix @@ -127,6 +127,7 @@ secrets = { url = "path:/etc/nixos.secrets"; + type = "git"; inputs.nixpkgs.follows = "nixpkgs"; }; }; From 9b8e8860820f9a400aefb8db5444b60293658a91 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 12:29:27 -0600 Subject: [PATCH 148/317] Fixed phoenix script --- modules/system/phoenix/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index f5a0d97..a920f23 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -30,10 +30,9 @@ chown -R 0:0 ${config.systemSettings.dotfilesDir}; chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; pushd ${config.systemSettings.dotfilesDir} &> /dev/null; - nix flake update secrets; nixos-rebuild switch; - exit 0; popd &> /dev/null; + exit 0; elif [ "$1" = "update" ]; then pushd ${config.systemSettings.dotfilesDir} &> /dev/null; nix flake update "''${@:2}"; @@ -48,7 +47,6 @@ if [ "$#" -gt 1 ]; then echo "Warning: The 'pull' command has no subcommands (no $2 subcommand)"; fi - exit 0; chown -R $DOAS_USER:users ${config.systemSettings.dotfilesDir}; chown -R $DOAS_USER:users ${config.systemSettings.secretsFlakeDir}; pushd ${config.systemSettings.dotfilesDir} &> /dev/null; @@ -63,6 +61,7 @@ popd &> /dev/null; chown -R 0:0 ${config.systemSettings.dotfilesDir}; chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; + exit 0; # TODO allow specifying host with $2 in build subcommand elif [ "$1" = "build" ]; then if [ "$#" -gt 1 ]; then @@ -110,6 +109,7 @@ else nix-collect-garbage --delete-older-than 30d; fi + exit 0; fi '') ]; From 277dd6992c230b1e0d5e23e54fcf60baf8122c9a Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 12:34:45 -0600 Subject: [PATCH 149/317] Use old sddm for now because themes --- modules/system/hyprland/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/hyprland/default.nix b/modules/system/hyprland/default.nix index 2d2980a..2012b4b 100644 --- a/modules/system/hyprland/default.nix +++ b/modules/system/hyprland/default.nix @@ -44,7 +44,7 @@ in wayland.enable = true; enableHidpi = true; theme = "chili"; - package = pkgs.kdePackages.sddm; + package = pkgs.libsForQt5.sddm; }; # xwayland From ae2090378a47e16346fee2fdb385daf77431fb79 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 12:35:03 -0600 Subject: [PATCH 150/317] Don't spawn nextcloud where it isn't necessary --- hosts/snowfire/configuration.nix | 4 ++++ hosts/zenith/home.nix | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index be9d805..6e7990e 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -57,6 +57,10 @@ email = ""; stylix.theme = "spaceduck"; }; + home-manager.users.corrina.services.nextcloud-client = { + enable = lib.mkForce false; + startInBackground = lib.mkForce false; + }; }; diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 1a91797..48c65e1 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -71,5 +71,10 @@ output = "eDP-1"; # notifications only on main display }; }; + + services.nextcloud-client = { + enable = lib.mkForce false; + startInBackground = lib.mkForce false; + }; }; } From 6781b0585e09a47747f576c1c41eafde11fadc31 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 12:58:35 -0600 Subject: [PATCH 151/317] added sddm avatars --- modules/system/hyprland/default.nix | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/modules/system/hyprland/default.nix b/modules/system/hyprland/default.nix index 2012b4b..60128d6 100644 --- a/modules/system/hyprland/default.nix +++ b/modules/system/hyprland/default.nix @@ -47,6 +47,38 @@ in package = pkgs.libsForQt5.sddm; }; + # Define systemd service to run on boot to load avatars for sddm + systemd.services."sddm-avatar" = { + description = "Service to copy or update users Avatars at startup."; + wantedBy = [ "multi-user.target" ]; + before = [ "sddm.service" ]; + script = '' + set -eu + mkdir -p /var/lib/AccountsService/icons + for user in /home/*; do + username=$(basename "$user") + if [ -f "$user/.face.icon" ]; then + if [ ! -f "/var/lib/AccountsService/icons/$username" ]; then + cp "$user/.face.icon" "/var/lib/AccountsService/icons/$username" + else + if [ "$user/.face.icon" -nt "/var/lib/AccountsService/icons/$username" ]; then + cp "$user/.face.icon" "/var/lib/AccountsService/icons/$username" + fi + fi + fi + done + ''; + serviceConfig = { + Type = "simple"; + User = "root"; + StandardOutput = "journal+console"; + StandardError = "journal+console"; + }; + }; + + # # Ensures SDDM starts after the service. + systemd.services.sddm = { after = [ "sddm-avatar.service" ]; }; + # xwayland services.xserver = { enable = true; From e607d9f02e7ce23cacd8daf7bc2324633cb0adcc Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 2 Mar 2025 12:58:41 -0600 Subject: [PATCH 152/317] fix fcitx deprecated setup warning --- modules/user/japanese/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/user/japanese/default.nix b/modules/user/japanese/default.nix index d916379..99b9c01 100644 --- a/modules/user/japanese/default.nix +++ b/modules/user/japanese/default.nix @@ -17,6 +17,9 @@ in { fcitx5-gtk ]; }; + home.sessionVariables = { + GTK_IM_MODULE = lib.mkForce "wayland"; + }; home.file.".config/fcitx5/config".text = '' [Hotkey] # Enumerate when press trigger key repeatedly From 734186e0872cd3e503dd42a145f87d72fb4cd216 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 8 Mar 2025 10:05:54 -0600 Subject: [PATCH 153/317] Added hyprgamemode toggle for better performance --- modules/user/hyprland/default.nix | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 50a370f..81da9dd 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -89,6 +89,9 @@ in }; decoration = { + shadow = { + enabled = true; + }; rounding = 8; dim_special = 0.0; blur = { @@ -209,6 +212,7 @@ in "SUPER,C,exec,wl-copy $(hyprpicker)" "SUPERSHIFT,S,exec,systemctl suspend" "SUPERCTRL,L,exec,loginctl lock-session" + "SUPERCTRL,G,exec,hyprgamemode" "SUPER,H,movefocus,l" "SUPER,J,movefocus,d" "SUPER,K,movefocus,u" @@ -393,6 +397,31 @@ in GDK_PIXBUF_MODULE_FILE=${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache nwggrid-server -layer-shell-exclusive-zone -1 -g adw-gtk3 -o 0.55 -b ${config.lib.stylix.colors.base00} fi '') + (pkgs.writeScriptBin "hyprgamemode" '' + #!/bin/sh + HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}') + if [ "$HYPRGAMEMODE" = 1 ] ; then + hyprctl --batch "\ + keyword animations:enabled 0;\ + keyword decoration:shadow:enabled 0;\ + keyword decoration:blur:enabled 0;\ + keyword general:gaps_in 0;\ + keyword general:gaps_out 0;\ + keyword general:border_size 1;\ + keyword decoration:rounding 0" + exit + else + hyprctl --batch "\ + keyword animations:enabled ${builtins.toString config.wayland.windowManager.hyprland.settings.animations.enabled};\ + keyword decoration:shadow:enabled ${builtins.toString config.wayland.windowManager.hyprland.settings.decoration.shadow.enabled};\ + keyword decoration:blur:enabled ${builtins.toString config.wayland.windowManager.hyprland.settings.decoration.blur.enabled};\ + keyword general:gaps_in ${builtins.toString config.wayland.windowManager.hyprland.settings.general.gaps_in};\ + keyword general:gaps_out ${builtins.toString config.wayland.windowManager.hyprland.settings.general.gaps_out};\ + keyword general:border_size ${builtins.toString config.wayland.windowManager.hyprland.settings.general.border_size};\ + keyword decoration:rounding ${builtins.toString config.wayland.windowManager.hyprland.settings.decoration.rounding}" + fi + hyprctl reload + '') libva-utils libinput-gestures gsettings-desktop-schemas From 7ef53cbab3f44cf89ae6d30ecfe96151a3738ac4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 8 Mar 2025 10:06:07 -0600 Subject: [PATCH 154/317] Updated system --- flake.lock | 56 +++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/flake.lock b/flake.lock index 65cbbb4..10df461 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1740266555, - "narHash": "sha256-NReJCA379CGPRsIy5xifVz0xtBOJ+XrPaAhDKIGV9Ik=", + "lastModified": 1741407140, + "narHash": "sha256-B6Du0ues8/a3TwjNuuKotj52wiN1CS+AnHyGmNYd3gM=", "owner": "StevenBlack", "repo": "hosts", - "rev": "8df476e3b53f862902119273eaa0a8474443969e", + "rev": "d50598a41beaa1537da42a54ee5a0e1fa77cc034", "type": "github" }, "original": { @@ -147,11 +147,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1740820419, - "narHash": "sha256-Q0fbGgkpWyfadaXJmQmX+S+mF9cZSetYXZ+LQFwj0zE=", + "lastModified": 1741436515, + "narHash": "sha256-nZVbxj4JRfjaCwdvzHpmo8LfSX+roUuAs7A8o5cJ5hU=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "25b732c255ccb41258d70d775afb9f16e25fa3d5", + "rev": "46e8b3c717e9e36d2570fc1c24bd0d3f9d3b1609", "type": "github" }, "original": { @@ -417,11 +417,11 @@ ] }, "locked": { - "lastModified": 1740796616, - "narHash": "sha256-JU97wIfRxeFN6rpTsUVCwWAdix+Wka4Or23907YIrFI=", + "lastModified": 1741416850, + "narHash": "sha256-iqRxCsRxE/Q/3W1RHxQMthPKEda0hhY65uxEpE5TNk4=", "owner": "nix-community", "repo": "home-manager", - "rev": "f0b5e7e8a75abdea32bbff09ddd7b6eeb4b9b445", + "rev": "26f6b862645ff281f3bada5d406e8c20de8d837c", "type": "github" }, "original": { @@ -811,11 +811,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1739891528, - "narHash": "sha256-h8HOCZ/rw2Buzku+GKF77VXxrGjCSOQkLhptiEKMYg0=", + "lastModified": 1741123584, + "narHash": "sha256-mprerMlucqtirmbx6L3VoFnF2bGYc2WSUCj7tuc6xTQ=", "ref": "refs/heads/main", - "rev": "61a5382f4b1ab578064d470b1b3d3f0df396b8ba", - "revCount": 86, + "rev": "6b0154b183f9539097f13af9b5da78ca24da6df2", + "revCount": 87, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprutils.git" }, @@ -937,11 +937,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1740743217, - "narHash": "sha256-brsCRzLqimpyhORma84c3W2xPbIidZlIc3JGIuQVSNI=", + "lastModified": 1741332913, + "narHash": "sha256-ri1e8ZliWS3Jnp9yqpKApHaOo7KBN33W8ECAKA4teAQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b27ba4eb322d9d2bf2dc9ada9fd59442f50c8d7c", + "rev": "20755fa05115c84be00b04690630cb38f0a203ad", "type": "github" }, "original": { @@ -953,11 +953,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1740743217, - "narHash": "sha256-brsCRzLqimpyhORma84c3W2xPbIidZlIc3JGIuQVSNI=", + "lastModified": 1741332913, + "narHash": "sha256-ri1e8ZliWS3Jnp9yqpKApHaOo7KBN33W8ECAKA4teAQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b27ba4eb322d9d2bf2dc9ada9fd59442f50c8d7c", + "rev": "20755fa05115c84be00b04690630cb38f0a203ad", "type": "github" }, "original": { @@ -968,11 +968,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1740695751, - "narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=", + "lastModified": 1741246872, + "narHash": "sha256-Q6pMP4a9ed636qilcYX8XUguvKl/0/LGXhHcRI91p0U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6313551cd05425cd5b3e63fe47dbc324eabb15e4", + "rev": "10069ef4cf863633f57238f179a0297de84bd8d3", "type": "github" }, "original": { @@ -1121,11 +1121,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1740796337, - "narHash": "sha256-FuoXrXZPoJEZQ3PF7t85tEpfBVID9JQIOnVKMNfTAb0=", + "lastModified": 1741400194, + "narHash": "sha256-tEpgT+q5KlGjHSm8MnINgTPErEl8YDzX3Eps8PVc09g=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "bbac9527bc6b28b6330b13043d0e76eac11720dc", + "rev": "16b6045a232fea0e9e4c69e55a6e269607dd8e3f", "type": "github" }, "original": { @@ -1176,11 +1176,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1740769934, - "narHash": "sha256-iyxUwII/NQNClT77VqQiDpaXJz1r0Z8tNVxgY64mLak=", + "lastModified": 1741392477, + "narHash": "sha256-6ySHuduGhlZBv1uxEOlOeHWDEkKuLQ/O63DI+ZRfAmg=", "owner": "danth", "repo": "stylix", - "rev": "de4ee5899042801b62f988687acd454d4d411075", + "rev": "6eea250b10386be0fc23496d1039d76b3147680e", "type": "github" }, "original": { From 3620c1ad51d9ea19fef92c22390f86751618e359 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 8 Mar 2025 13:06:32 -0600 Subject: [PATCH 155/317] reinstall to thinkpad --- flake.lock | 8 ++-- hosts/{polarias => duskfall}/README.org | 0 .../{polarias => duskfall}/configuration.nix | 2 +- hosts/{polarias => duskfall}/default.nix | 0 .../hardware-configuration.nix | 42 +++---------------- hosts/{polarias => duskfall}/home.nix | 8 ++-- modules/system/phoenix/default.nix | 2 +- 7 files changed, 16 insertions(+), 46 deletions(-) rename hosts/{polarias => duskfall}/README.org (100%) rename hosts/{polarias => duskfall}/configuration.nix (96%) rename hosts/{polarias => duskfall}/default.nix (100%) rename hosts/{polarias => duskfall}/hardware-configuration.nix (61%) rename hosts/{polarias => duskfall}/home.nix (83%) diff --git a/flake.lock b/flake.lock index 10df461..c21852e 100644 --- a/flake.lock +++ b/flake.lock @@ -1141,11 +1141,11 @@ ] }, "locked": { - "lastModified": 1740839257, - "narHash": "sha256-rHEB0JnNyXJ1lvxUZZiRYV5elNil5hXO1792Fl807zc=", + "lastModified": 1741460499, + "narHash": "sha256-+162iWgwCKkkvrse9CBatsj4O0IyHj2SquBldXB3qsk=", "ref": "refs/heads/main", - "rev": "53406ca30dca3007caf57fdc940506e64f605f17", - "revCount": 20, + "rev": "a3a90b3f485e677a096199c04c6e1cf48fdc8464", + "revCount": 24, "type": "git", "url": "file://path:/etc/nixos.secrets" }, diff --git a/hosts/polarias/README.org b/hosts/duskfall/README.org similarity index 100% rename from hosts/polarias/README.org rename to hosts/duskfall/README.org diff --git a/hosts/polarias/configuration.nix b/hosts/duskfall/configuration.nix similarity index 96% rename from hosts/polarias/configuration.nix rename to hosts/duskfall/configuration.nix index d9871de..32fce15 100644 --- a/hosts/polarias/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -17,7 +17,7 @@ flatpak.enable = false; virtualization = { docker.enable = true; - virtualMachines.enable = true; + virtualMachines.enable = false; }; # wm diff --git a/hosts/polarias/default.nix b/hosts/duskfall/default.nix similarity index 100% rename from hosts/polarias/default.nix rename to hosts/duskfall/default.nix diff --git a/hosts/polarias/hardware-configuration.nix b/hosts/duskfall/hardware-configuration.nix similarity index 61% rename from hosts/polarias/hardware-configuration.nix rename to hosts/duskfall/hardware-configuration.nix index db9c7cd..8a39a00 100644 --- a/hosts/polarias/hardware-configuration.nix +++ b/hosts/duskfall/hardware-configuration.nix @@ -17,57 +17,25 @@ enable32Bit = lib.mkDefault true; }; - # my stupid usb hub crashes systemct suspend half of the time now - # https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Sleep_hooks - systemd.services.root-suspend = { - enable = true; - description = "Root systemd suspend prehook"; - unitConfig = { - Description = "Root systemd suspend prehook"; - Before = "sleep.target"; - }; - serviceConfig = { - Type = "simple"; - ExecStart = "${pkgs.uhubctl}/bin/uhubctl -a off"; - }; - wantedBy = [ "sleep.target" ]; - }; - systemd.services.root-resume = { - enable = true; - description = "Root systemd suspend posthook"; - unitConfig = { - Description = "Root systemd suspend posthook"; - After = "suspend.target"; - }; - serviceConfig = { - Type = "simple"; - ExecStart = "${pkgs.uhubctl}/bin/uhubctl -a on"; - }; - wantedBy = [ "suspend.target" ]; - }; - - boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "rtsx_pci_sdmmc" "hid_generic" ]; + boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; fileSystems."/" = - { device = "/dev/disk/by-uuid/3618968f-1717-4c8e-b0d8-2556d18d2c4b"; + { device = "/dev/disk/by-uuid/9982bd44-cfaa-4959-8e30-3341f728c29a"; fsType = "ext4"; }; - boot.initrd.luks.devices."luks-06fa6e93-9bde-4703-830e-7ee1a7292a19".device = "/dev/disk/by-uuid/06fa6e93-9bde-4703-830e-7ee1a7292a19"; + boot.initrd.luks.devices."luks-3165c377-6b98-498c-bd86-20a8fc530e9d".device = "/dev/disk/by-uuid/3165c377-6b98-498c-bd86-20a8fc530e9d"; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/E1BC-04BB"; + { device = "/dev/disk/by-uuid/4DA8-3F95"; fsType = "vfat"; options = [ "fmask=0077" "dmask=0077" ]; }; - swapDevices = - [ { device = "/dev/disk/by-uuid/d52b7852-f35f-4325-9adc-24aa5d3da2a3"; - } - ]; + swapDevices = [ ]; services.pipewire.enable = lib.mkForce false; hardware.pulseaudio.enable = true; diff --git a/hosts/polarias/home.nix b/hosts/duskfall/home.nix similarity index 83% rename from hosts/polarias/home.nix rename to hosts/duskfall/home.nix index 768e389..3fea033 100644 --- a/hosts/polarias/home.nix +++ b/hosts/duskfall/home.nix @@ -37,12 +37,14 @@ bluetooth.enable = true; }; + home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable { + AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card0"; + }; + wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { monitor = [ - "eDP-1,1920x1080@300,900x1080,1" - "HDMI-A-1,1920x1080,1920x0,1" - "DP-1,1920x1080,0x0,1" + "eDP-1,1920x1080@60,0x0,1" ]; }; diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index a920f23..4df3ea6 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -71,7 +71,7 @@ nixos-rebuild build --flake .#snowfire; attic push emmet ./result; rm ./result; - nixos-rebuild build --flake .#polarias; + nixos-rebuild build --flake .#duskfall; attic push emmet ./result; rm ./result; nixos-rebuild build --flake .#zenith; From 16b66ba515532e5f94533e9e5f54254e22059101 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 8 Mar 2025 16:24:10 -0600 Subject: [PATCH 156/317] Trying ashell --- flake.lock | 115 +++++++++++++-- flake.nix | 5 + modules/user/bluetooth/default.nix | 3 - .../dmenu-scripts/networkmanager-dmenu.nix | 2 +- modules/user/hyprland/default.nix | 136 ++++++++---------- 5 files changed, 169 insertions(+), 92 deletions(-) diff --git a/flake.lock b/flake.lock index c21852e..d5035c5 100644 --- a/flake.lock +++ b/flake.lock @@ -33,6 +33,29 @@ "type": "github" } }, + "ashell": { + "inputs": { + "crane": "crane", + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1741471836, + "narHash": "sha256-eI3mFllV2GUXkkySHWOSZ6g32amkDHi56nWYWg9LOag=", + "owner": "librephoenix", + "repo": "ashell", + "rev": "02f2d9ce7d04c2a76aa7578c1b9177c6342fbf80", + "type": "github" + }, + "original": { + "owner": "librephoenix", + "repo": "ashell", + "type": "github" + } + }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -139,6 +162,21 @@ "type": "github" } }, + "crane": { + "locked": { + "lastModified": 1739936662, + "narHash": "sha256-x4syUjNUuRblR07nDPeLDP7DpphaBVbUaSoeZkFbGSk=", + "owner": "ipetkov", + "repo": "crane", + "rev": "19de14aaeb869287647d9461cbd389187d8ecdb7", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "emacs-overlay": { "inputs": { "nixpkgs": [ @@ -266,6 +304,24 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { "inputs": { "systems": [ "stylix", @@ -555,7 +611,7 @@ "nixpkgs" ], "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems", + "systems": "systems_2", "xdph": "xdph" }, "locked": { @@ -755,7 +811,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1735497496, @@ -808,7 +864,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_3" + "systems": "systems_4" }, "locked": { "lastModified": 1741123584, @@ -1084,6 +1140,7 @@ }, "root": { "inputs": { + "ashell": "ashell", "blocklist-hosts": "blocklist-hosts", "chaotic": "chaotic", "emacs-overlay": "emacs-overlay", @@ -1094,7 +1151,7 @@ "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_2", "plasma-manager": "plasma-manager", - "rust-overlay": "rust-overlay", + "rust-overlay": "rust-overlay_2", "secrets": "secrets", "stylix": "stylix" } @@ -1117,6 +1174,27 @@ } }, "rust-overlay": { + "inputs": { + "nixpkgs": [ + "ashell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1740969088, + "narHash": "sha256-BajboqzFnDhxVT0SXTDKVJCKtFP96lZXccBlT/43mao=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "20fdb02098fdda9a25a2939b975abdd7bc03f62d", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { "inputs": { "nixpkgs": "nixpkgs_3" }, @@ -1162,13 +1240,13 @@ "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", "nixpkgs": "nixpkgs_4", "nur": "nur", - "systems": "systems_4", + "systems": "systems_5", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -1191,16 +1269,16 @@ }, "systems": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, @@ -1235,6 +1313,21 @@ } }, "systems_4": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_5": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", diff --git a/flake.nix b/flake.nix index 8cc0800..ca1a389 100644 --- a/flake.nix +++ b/flake.nix @@ -105,6 +105,11 @@ inputs.hyprutils.follows = "hyprutils"; }; + ashell = { + url = "github:librephoenix/ashell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + plasma-manager = { url = "github:nix-community/plasma-manager"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/modules/user/bluetooth/default.nix b/modules/user/bluetooth/default.nix index bbff411..b2d88fb 100644 --- a/modules/user/bluetooth/default.nix +++ b/modules/user/bluetooth/default.nix @@ -13,8 +13,5 @@ in { home.packages = with pkgs; [ blueman ]; - services = { - blueman-applet.enable = true; - }; }; } diff --git a/modules/user/dmenu-scripts/networkmanager-dmenu.nix b/modules/user/dmenu-scripts/networkmanager-dmenu.nix index 3c1716c..0207d4e 100644 --- a/modules/user/dmenu-scripts/networkmanager-dmenu.nix +++ b/modules/user/dmenu-scripts/networkmanager-dmenu.nix @@ -5,7 +5,7 @@ let dmenuCmd = cfg.dmenuCmd; in { config = lib.mkIf cfg.enable { - home.packages = with pkgs; [ networkmanager_dmenu networkmanagerapplet ]; + home.packages = with pkgs; [ networkmanager_dmenu ]; home.file.".config/networkmanager-dmenu/config.ini".text = '' [dmenu] diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 81da9dd..6708c27 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -56,15 +56,11 @@ in exec-once = [ "hyprctl setcursor ${config.gtk.cursorTheme.name} ${builtins.toString config.gtk.cursorTheme.size}" "hyprpaper" - "eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2" + "ashell" "hypridle" - "hyprland-monitor-attached ~/.local/bin/eww-reload-bars.sh" "iio-hyprland" "hyprprofile Default" "ydotoold" - "sleep 13 && caffeine" - "nm-applet" - "blueman-applet" "GOMAXPROCS=1 syncthing --no-browser" "STEAM_FRAME_FORCE_CLOSE=1 steam -silent" "protonmail-bridge --noninteractive" @@ -347,18 +343,18 @@ in layerrule = [ "blur,waybar" - "blur,eww" + "blur,ashell" "blur,launcher # fuzzel" "blur,~nwggrid" "blur,gtk-layer-shell" "xray 1,waybar" - "xray 1,eww" + "xray 1,ashell" "xray 1,~nwggrid" "xray 1,gtk-layer-shell" "ignorezero, gtk-layer-shell" - "ignorezero, eww" + "ignorezero, ashell" "animation fade,~nwggrid" - "animation popin 80%, eww" + "animation popin 80%, ashell" ]; blurls = [ @@ -380,12 +376,11 @@ in home.packages = (with pkgs; [ hyprland-monitor-attached - caffeine-ng alacritty kitty killall polkit_gnome - eww + (inputs.ashell.defaultPackage.${system}) nwg-launchers papirus-icon-theme (pkgs.writeScriptBin "nwggrid-wrapper" '' @@ -503,11 +498,58 @@ in then echo "Shouldn't suspend"; sleep 10; else echo "Should suspend"; systemctl suspend; fi '') ]); - home.file.".local/bin/eww-reload-bars.sh" = { - text = ''#!/bin/sh - eww open-many bar:first bar:second bar:third --arg first:monitor=0 --arg second:monitor=1 --arg third:monitor=2;''; - executable = true; - }; + home.file.".config/ashell.yml".text = '' +outputs: All +position: Top +modules: + left: + - [ AppLauncher, SystemInfo ] + center: + - Workspaces + right: + - [Clock, Privacy, Settings, Tray] +appLauncherCmd: "nwggrid-wrapper" # optional, default None +truncateTitleAfterLength: 150 # optional, default 150 +workspaces: + visibilityMode: MonitorSpecific # optional, default All + enableWorkspaceFilling: true # optional, default false +system: + cpuWarnThreshold: 80 # cpu indicator warning level (default 60) + cpuAlertThreshold: 95 # cpu indicator alert level (default 80) + memWarnThreshold: 50 # mem indicator warning level (default 70) + memAlertThreshold: 75 # mem indicator alert level (default 85) + tempWarnThreshold: 90 # temperature indicator warning level (default 60) + tempAlertThreshold: 95 # temperature indicator alert level (default 80) +clock: + format: "%a %d %b %R" # optional, default: %a %d %b %R +mediaPlayer: + maxTitleLength: 100 # optional, default 100 +settings: + lockCmd: "hyprlock &" # optional, default None + audioSinksMoreCmd: "pavucontrol -t 3" # optional default None + audioSourcesMoreCmd: "pavucontrol -t 4" # optional, default None + wifiMoreCmd: "nm-connection-editor" # optional, default None + vpnMoreCmd: "nm-connection-editor" # optional, default None + bluetoothMoreCmd: "blueman-manager" # optional, default None +appearance: + backgroundColor: "#${config.lib.stylix.colors.base00}88" # used as a base background color for header module button + primaryColor: "#${config.lib.stylix.colors.base0B}" # used as a accent color + secondaryColor: "#${config.lib.stylix.colors.base01}" # used for darker background color + successColor: "#${config.lib.stylix.colors.base0A}" # used for success message or happy state + dangerColor: "#${config.lib.stylix.colors.base08}" # used for danger message or danger state (the weak version is used for the warning state + textColor: "#${config.lib.stylix.colors.base07}" # base default text color + # this is a list of color that will be used in the workspace module (one color for each monitor) + workspaceColors: + - "#${config.lib.stylix.colors.base0B}" + - "#${config.lib.stylix.colors.base0B}" + # this is a list of color that will be used in the workspace module + # for the special workspace (one color for each monitor) + # optional, default None + # without a value the workspaceColors list will be used + specialWorkspaceColors: + - "#${config.lib.stylix.colors.base0B}" + - "#${config.lib.stylix.colors.base0B}" + ''; home.file.".config/hypr/hypridle.conf".text = '' general { lock_cmd = pgrep hyprlock || hyprlock @@ -606,70 +648,10 @@ in ''; services.swayosd.enable = true; services.swayosd.topMargin = 0.5; - services.cbatticon = { - enable = true; - iconType = "symbolic"; - }; - home.file.".config/eww/eww.yuck".source = ./eww/eww.yuck; - home.file = { - ".config/eww/eww.scss".source = config.lib.stylix.colors { - template = builtins.readFile ./eww/eww.scss.mustache; - extension = ".scss"; - }; - }; - home.file.".config/nwg-launchers/nwggrid/style.css".text = '' - button, label, image { - background: none; - border-style: none; - box-shadow: none; - color: #${config.lib.stylix.colors.base07}; - font-size: 20px; - } - - button { - padding: 5px; - margin: 5px; - text-shadow: none; - } - - button:hover { - background-color: rgba(${config.lib.stylix.colors.base07-rgb-r},${config.lib.stylix.colors.base07-rgb-g},${config.lib.stylix.colors.base07-rgb-b},0.15); - } - - button:focus { - box-shadow: 0 0 10px; - } - - button:checked { - background-color: rgba(${config.lib.stylix.colors.base07-rgb-r},${config.lib.stylix.colors.base07-rgb-g},${config.lib.stylix.colors.base07-rgb-b},0.15); - } - - #searchbox { - background: none; - border-color: #${config.lib.stylix.colors.base07}; - color: #${config.lib.stylix.colors.base07}; - margin-top: 20px; - margin-bottom: 20px; - font-size: 20px; - } - - #separator { - background-color: rgba(${config.lib.stylix.colors.base00-rgb-r},${config.lib.stylix.colors.base00-rgb-g},${config.lib.stylix.colors.base00-rgb-b},0.55); - color: #${config.lib.stylix.colors.base07}; - margin-left: 500px; - margin-right: 500px; - margin-top: 10px; - margin-bottom: 10px - } - - #description { - margin-bottom: 20px - } - ''; home.file.".config/nwg-launchers/nwggrid/terminal".text = "alacritty -e"; services.udiskie.enable = true; - services.udiskie.tray = "always"; + services.udiskie.tray = "never"; programs.fuzzel.enable = true; programs.fuzzel.package = pkgs.fuzzel; programs.fuzzel.settings = { From c4dcf59357dddfdfd4f794b2418f6548ea68cabf Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 8 Mar 2025 16:24:21 -0600 Subject: [PATCH 157/317] scaling + updated fonts --- hosts/snowfire/home.nix | 6 +++--- hosts/zenith/home.nix | 4 ++-- modules/user/emacs/default.nix | 2 +- modules/user/emacs/init.el | 11 +---------- modules/user/stylix/default.nix | 16 ++++++++-------- 5 files changed, 15 insertions(+), 24 deletions(-) diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index 5744a3c..4bcb212 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -48,9 +48,9 @@ wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { monitor = [ - "eDP-1,1920x1080@300,900x1080,1" - "HDMI-A-1,1920x1080,1920x0,1" - "DP-1,1920x1080,0x0,1" + "eDP-1,1920x1080@300,720x864,1.25" + "HDMI-A-1,1920x1080,1536x0,1.25" + "DP-1,1920x1080,0x0,1.25" ]; }; diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 48c65e1..912d83a 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -59,8 +59,8 @@ ]; monitor = [ - "eDP-1,1920x1080,1920x0,1" - "HDMI-A-1,1920x1080,0x0,1" + "eDP-1,1920x1080,1536x0,1.25" + "HDMI-A-1,1920x1080,0x0,1.25" ]; }; diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index 3f73127..82fe1bd 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -13,7 +13,7 @@ in { home.packages = with pkgs; [ (pkgs.emacsWithPackagesFromUsePackage { config = ./init.el; - package = pkgs.emacs-pgtk; + package = pkgs.emacs-git-pgtk; alwaysEnsure = false; extraEmacsPackages = epkgs: with epkgs; [ org-modern olivetti diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index aba58e2..206591a 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -413,16 +413,7 @@ (setq doom-themes-enable-bold t doom-themes-enable-italic t custom-theme-directory "~/.config/emacs/themes") - (load-theme 'doom-stylix t) - ;; Heading styles - (set-face-attribute 'outline-1 nil :height 195 :foreground (nth 1 (nth 14 doom-themes--colors))) - (set-face-attribute 'outline-2 nil :height 188 :foreground (nth 1 (nth 15 doom-themes--colors))) - (set-face-attribute 'outline-3 nil :height 180 :foreground (nth 1 (nth 19 doom-themes--colors))) - (set-face-attribute 'outline-4 nil :height 173 :foreground (nth 1 (nth 23 doom-themes--colors))) - (set-face-attribute 'outline-5 nil :height 173 :foreground (nth 1 (nth 24 doom-themes--colors))) - (set-face-attribute 'outline-6 nil :height 165 :foreground (nth 1 (nth 16 doom-themes--colors))) - (set-face-attribute 'outline-7 nil :height 160 :foreground (nth 1 (nth 18 doom-themes--colors))) - (set-face-attribute 'outline-8 nil :height 155 :foreground (nth 1 (nth 11 doom-themes--colors)))) + (load-theme 'doom-stylix t)) (use-package doom-modeline :init (doom-modeline-mode 1) diff --git a/modules/user/stylix/default.nix b/modules/user/stylix/default.nix index 05dc088..a00053e 100644 --- a/modules/user/stylix/default.nix +++ b/modules/user/stylix/default.nix @@ -33,20 +33,20 @@ in stylix.fonts = { # TODO abstract fonts into an option monospace = { - name = "FiraCode Nerd Font"; - package = pkgs.nerd-fonts.fira-code; + name = "Source Code Pro"; + package = pkgs.source-code-pro; }; serif = { - name = "FiraCode Nerd Font"; - package = pkgs.nerd-fonts.fira-code; + name = "Source Serif Pro"; + package = pkgs.source-serif-pro; }; sansSerif = { - name = "FiraCode Nerd Font"; - package = pkgs.nerd-fonts.fira-code; + name = "Source Sans Pro"; + package = pkgs.source-sans-pro; }; emoji = { - name = "Noto Color Emoji"; - package = pkgs.noto-fonts-emoji-blob-bin; + name = "Twitter Color Emoji"; + package = pkgs.twitter-color-emoji; }; sizes = { terminal = 18; From c33d75a1bea6428039108947b49fdc1248861ad2 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 8 Mar 2025 16:36:47 -0600 Subject: [PATCH 158/317] fixed some host-specific config --- hosts/duskfall/configuration.nix | 2 +- hosts/duskfall/home.nix | 4 ++++ hosts/zenith/home.nix | 23 +++++++++++++++++++++++ modules/user/hyprland/default.nix | 6 ------ 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index 32fce15..f281ce8 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -41,7 +41,7 @@ # style stylix = { enable = true; - theme = "ayu-dark"; + theme = "io"; }; }; diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index 3fea033..988aaaf 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -43,6 +43,10 @@ wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { + animations = { + enabled = "no"; + }; + monitor = [ "eDP-1,1920x1080@60,0x0,1" ]; diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 912d83a..7e70fff 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -46,6 +46,10 @@ wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { + animations = { + enabled = "no"; + }; + bind = [ ''SUPER,E,exec,if hyprctl clients | grep qutegmail; then echo "scratch_mail respawn not needed"; else qutebrowser --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag num-raster-threads=4 -B ~/.browser/Teaching :'set input.mode_override passthrough -u mail.google.com' :'set window.title_format qutegmail' :'set tabs.show never' :'set statusbar.show never' https://mail.google.com; fi'' "SUPER,E,togglespecialworkspace,scratch_email" @@ -76,5 +80,24 @@ enable = lib.mkForce false; startInBackground = lib.mkForce false; }; + + home.file.".config/hypr/hypridle.conf".text = lib.mkForce '' + general { + lock_cmd = pgrep hyprlock || hyprlock + before_sleep_cmd = loginctl lock-session + ignore_dbus_inhibit = false + } + + listener { + timeout = 3000 # in seconds + on-timeout = loginctl lock-session + } + listener { + timeout = 3015 # in seconds + on-timeout = systemctl suspend + on-resume = hyprctl dispatch dpms on + } + ''; + }; } diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 6708c27..0b9201f 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -557,18 +557,12 @@ appearance: ignore_dbus_inhibit = false } - #listener { - # timeout = 150 # in seconds - # on-timeout = hyprctl dispatch dpms off - # on-resume = hyprctl dispatch dpms on - #} listener { timeout = 165 # in seconds on-timeout = loginctl lock-session } listener { timeout = 180 # in seconds - #timeout = 5400 # in seconds on-timeout = systemctl suspend on-resume = hyprctl dispatch dpms on } From 8a145e6580a0a9d5387349b25dc154eac952827c Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 8 Mar 2025 17:54:36 -0600 Subject: [PATCH 159/317] fixed various problems --- hosts/duskfall/home.nix | 2 +- hosts/zenith/home.nix | 2 +- modules/user/hyprland/default.nix | 1 - modules/user/japanese/default.nix | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index 988aaaf..4f497c3 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -44,7 +44,7 @@ wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { animations = { - enabled = "no"; + enabled = lib.mkForce "no"; }; monitor = [ diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 7e70fff..0be6fa8 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -47,7 +47,7 @@ wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { animations = { - enabled = "no"; + enabled = lib.mkForce "no"; }; bind = [ diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 0b9201f..9ca6898 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -16,7 +16,6 @@ in config = lib.mkIf cfg.enable { userSettings.alacritty.enable = true; userSettings.kitty.enable = true; - userSettings.japanese.enable = true; userSettings.dmenuScripts = { enable = true; dmenuCmd = "fuzzel -d"; diff --git a/modules/user/japanese/default.nix b/modules/user/japanese/default.nix index 99b9c01..dc80f12 100644 --- a/modules/user/japanese/default.nix +++ b/modules/user/japanese/default.nix @@ -18,7 +18,7 @@ in { ]; }; home.sessionVariables = { - GTK_IM_MODULE = lib.mkForce "wayland"; + GTK_IM_MODULE = lib.mkForce ""; }; home.file.".config/fcitx5/config".text = '' [Hotkey] From 6136cc9f2ada896583b3c7a9df4a5ae8af74c716 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 9 Mar 2025 11:10:38 -0500 Subject: [PATCH 160/317] optimized some lower-powered hosts --- hosts/duskfall/configuration.nix | 5 +++++ hosts/duskfall/home.nix | 16 ++++++++++++++-- hosts/zenith/configuration.nix | 6 ++++++ hosts/zenith/home.nix | 8 ++++++++ modules/user/hyprland/default.nix | 2 +- 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index f281ce8..bd7ad2a 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -51,6 +51,11 @@ email = "emmet@librephoenix.com"; }; + environment.systemPackages = with pkgs; [ + libwacom + ]; + services.xserver.wacom.enable = true; + }; } diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index 4f497c3..3574d88 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -47,13 +47,25 @@ enabled = lib.mkForce "no"; }; + decoration = { + shadow.enabled = lib.mkForce false; + blur = { + size = lib.mkForce 10; + passes = lib.mkForce 1; + }; + }; + + input = { + repeat_delay = lib.mkForce 850; + repeat_rate = lib.mkForce 80; + }; + monitor = [ - "eDP-1,1920x1080@60,0x0,1" + "eDP-1,1920x1080@60,0x0,1.25" ]; }; }; - }; } diff --git a/hosts/zenith/configuration.nix b/hosts/zenith/configuration.nix index bdafd36..d5271fb 100644 --- a/hosts/zenith/configuration.nix +++ b/hosts/zenith/configuration.nix @@ -48,6 +48,12 @@ home-manager.users.emmet.userSettings = { name = "Emmet"; }; + + environment.systemPackages = with pkgs; [ + libwacom + ]; + services.xserver.wacom.enable = true; + }; } diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 0be6fa8..947a659 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -50,6 +50,14 @@ enabled = lib.mkForce "no"; }; + decoration = { + shadow.enabled = lib.mkForce false; + blur = { + size = lib.mkForce 10; + passes = lib.mkForce 1; + }; + }; + bind = [ ''SUPER,E,exec,if hyprctl clients | grep qutegmail; then echo "scratch_mail respawn not needed"; else qutebrowser --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag num-raster-threads=4 -B ~/.browser/Teaching :'set input.mode_override passthrough -u mail.google.com' :'set window.title_format qutegmail' :'set tabs.show never' :'set statusbar.show never' https://mail.google.com; fi'' "SUPER,E,togglespecialworkspace,scratch_email" diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 9ca6898..64df54b 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -393,7 +393,7 @@ in '') (pkgs.writeScriptBin "hyprgamemode" '' #!/bin/sh - HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}') + HYPRGAMEMODE=$(hyprctl getoption decoration:blur:enabled | awk 'NR==1{print $2}') if [ "$HYPRGAMEMODE" = 1 ] ; then hyprctl --batch "\ keyword animations:enabled 0;\ From c8eaa63b8aff93c12cd71aa4e57f67e98c22e7c4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 9 Mar 2025 14:01:54 -0500 Subject: [PATCH 161/317] updated hyprgamemode script for more performance in mh wilds :) --- modules/user/hyprland/default.nix | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 64df54b..eaeb9f0 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -395,6 +395,7 @@ in #!/bin/sh HYPRGAMEMODE=$(hyprctl getoption decoration:blur:enabled | awk 'NR==1{print $2}') if [ "$HYPRGAMEMODE" = 1 ] ; then + sync; hyprctl --batch "\ keyword animations:enabled 0;\ keyword decoration:shadow:enabled 0;\ @@ -402,8 +403,16 @@ in keyword general:gaps_in 0;\ keyword general:gaps_out 0;\ keyword general:border_size 1;\ - keyword decoration:rounding 0" - exit + keyword decoration:rounding 0"; + pkill -STOP electron; + pkill -STOP syncthing; + pkill -STOP emacs; + pkill -STOP emacsclient; + systemctl --user stop mpd; + systemctl --user stop nextcloud-client; + pkill ashell; + pkill hypridle; + exit; else hyprctl --batch "\ keyword animations:enabled ${builtins.toString config.wayland.windowManager.hyprland.settings.animations.enabled};\ @@ -412,9 +421,17 @@ in keyword general:gaps_in ${builtins.toString config.wayland.windowManager.hyprland.settings.general.gaps_in};\ keyword general:gaps_out ${builtins.toString config.wayland.windowManager.hyprland.settings.general.gaps_out};\ keyword general:border_size ${builtins.toString config.wayland.windowManager.hyprland.settings.general.border_size};\ - keyword decoration:rounding ${builtins.toString config.wayland.windowManager.hyprland.settings.decoration.rounding}" + keyword decoration:rounding ${builtins.toString config.wayland.windowManager.hyprland.settings.decoration.rounding}"; + pkill -CONT electron; + pkill -CONT syncthing; + pkill -CONT emacs; + pkill -CONT emacsclient; + systemctl --user start mpd; + systemctl --user start nextcloud-client; + ashell & disown; + hypridle & disown; + exit; fi - hyprctl reload '') libva-utils libinput-gestures From 23b046aadb652b8821bfa34774d68454a8bf00c6 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 15 Mar 2025 14:18:21 -0500 Subject: [PATCH 162/317] updated system --- flake.lock | 98 ++++++++++++++--------------- modules/system/hyprland/default.nix | 2 + 2 files changed, 51 insertions(+), 49 deletions(-) diff --git a/flake.lock b/flake.lock index d5035c5..cfa421e 100644 --- a/flake.lock +++ b/flake.lock @@ -126,11 +126,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1741407140, - "narHash": "sha256-B6Du0ues8/a3TwjNuuKotj52wiN1CS+AnHyGmNYd3gM=", + "lastModified": 1741901790, + "narHash": "sha256-34JVDJ6X1naRj+eFbuWSRxdfF5GX8FCTSFXNe78q1S8=", "owner": "StevenBlack", "repo": "hosts", - "rev": "d50598a41beaa1537da42a54ee5a0e1fa77cc034", + "rev": "9644218ede1bc706cb2d76ed18902caad1998901", "type": "github" }, "original": { @@ -185,11 +185,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1741436515, - "narHash": "sha256-nZVbxj4JRfjaCwdvzHpmo8LfSX+roUuAs7A8o5cJ5hU=", + "lastModified": 1742030321, + "narHash": "sha256-O2DgfU9vxiwwk0zDiCtPYrEISBnX1b/DB3F3LG6iX8c=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "46e8b3c717e9e36d2570fc1c24bd0d3f9d3b1609", + "rev": "5ca8419dfc9f6c451aa9bfee0f37ff28c9582774", "type": "github" }, "original": { @@ -223,11 +223,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1739223196, - "narHash": "sha256-vAxN2f3rvl5q62gQQjZGVSvF93nAsOxntuFz+e/655w=", + "lastModified": 1741628778, + "narHash": "sha256-RsvHGNTmO2e/eVfgYK7g+eYEdwwh7SbZa+gZkT24MEA=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "a89108e6272426f4eddd93ba17d0ea101c34fb21", + "rev": "5a81d390bb64afd4e81221749ec4bffcbeb5fa80", "type": "github" }, "original": { @@ -371,11 +371,11 @@ ] }, "locked": { - "lastModified": 1737465171, - "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "lastModified": 1741379162, + "narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc", "type": "github" }, "original": { @@ -473,11 +473,11 @@ ] }, "locked": { - "lastModified": 1741416850, - "narHash": "sha256-iqRxCsRxE/Q/3W1RHxQMthPKEda0hhY65uxEpE5TNk4=", + "lastModified": 1741955947, + "narHash": "sha256-2lbURKclgKqBNm7hVRtWh0A7NrdsibD0EaWhahUVhhY=", "owner": "nix-community", "repo": "home-manager", - "rev": "26f6b862645ff281f3bada5d406e8c20de8d837c", + "rev": "4e12151c9e014e2449e0beca2c0e9534b96a26b4", "type": "github" }, "original": { @@ -495,11 +495,11 @@ ] }, "locked": { - "lastModified": 1740347597, - "narHash": "sha256-st5q9egkPGz8TUcVVlIQX7y6G3AzHob+6M963bwVq74=", + "lastModified": 1741635347, + "narHash": "sha256-2aYfV44h18alHXopyfL4D9GsnpE5XlSVkp4MGe586VU=", "owner": "nix-community", "repo": "home-manager", - "rev": "12e26a74e5eb1a31e13daaa08858689e25ebd449", + "rev": "7fb8678716c158642ac42f9ff7a18c0800fea551", "type": "github" }, "original": { @@ -867,11 +867,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1741123584, - "narHash": "sha256-mprerMlucqtirmbx6L3VoFnF2bGYc2WSUCj7tuc6xTQ=", + "lastModified": 1741534688, + "narHash": "sha256-EV3945SnjOCuRVbGRghsWx/9D89FyshnSO1Q6/TuQ14=", "ref": "refs/heads/main", - "rev": "6b0154b183f9539097f13af9b5da78ca24da6df2", - "revCount": 87, + "rev": "dd1f720cbc2dbb3c71167c9598045dd3261d27b3", + "revCount": 88, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprutils.git" }, @@ -993,11 +993,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1741332913, - "narHash": "sha256-ri1e8ZliWS3Jnp9yqpKApHaOo7KBN33W8ECAKA4teAQ=", + "lastModified": 1741862977, + "narHash": "sha256-prZ0M8vE/ghRGGZcflvxCu40ObKaB+ikn74/xQoNrGQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "20755fa05115c84be00b04690630cb38f0a203ad", + "rev": "cdd2ef009676ac92b715ff26630164bb88fec4e0", "type": "github" }, "original": { @@ -1009,11 +1009,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1741332913, - "narHash": "sha256-ri1e8ZliWS3Jnp9yqpKApHaOo7KBN33W8ECAKA4teAQ=", + "lastModified": 1741862977, + "narHash": "sha256-prZ0M8vE/ghRGGZcflvxCu40ObKaB+ikn74/xQoNrGQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "20755fa05115c84be00b04690630cb38f0a203ad", + "rev": "cdd2ef009676ac92b715ff26630164bb88fec4e0", "type": "github" }, "original": { @@ -1024,11 +1024,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1741246872, - "narHash": "sha256-Q6pMP4a9ed636qilcYX8XUguvKl/0/LGXhHcRI91p0U=", + "lastModified": 1741851582, + "narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "10069ef4cf863633f57238f179a0297de84bd8d3", + "rev": "6607cf789e541e7873d40d3a8f7815ea92204f32", "type": "github" }, "original": { @@ -1055,11 +1055,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1740367490, - "narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=", + "lastModified": 1741513245, + "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0196c0175e9191c474c26ab5548db27ef5d34b05", + "rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1", "type": "github" }, "original": { @@ -1079,11 +1079,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1740408283, - "narHash": "sha256-2xECnhgF3MU9YjmvOkrRp8wRFo2OjjewgCtlfckhL5s=", + "lastModified": 1741693509, + "narHash": "sha256-emkxnsZstiJWmGACimyAYqIKz2Qz5We5h1oBVDyQjLw=", "owner": "nix-community", "repo": "NUR", - "rev": "496a4a11162bdffb9a7b258942de138873f019f7", + "rev": "5479646b2574837f1899da78bdf9a48b75a9fb27", "type": "github" }, "original": { @@ -1199,11 +1199,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1741400194, - "narHash": "sha256-tEpgT+q5KlGjHSm8MnINgTPErEl8YDzX3Eps8PVc09g=", + "lastModified": 1742005800, + "narHash": "sha256-6wuOGWkyW6R4A6Th9NMi6WK2jjddvZt7V2+rLPk6L3o=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "16b6045a232fea0e9e4c69e55a6e269607dd8e3f", + "rev": "028cd247a6375f83b94adc33d83676480fc9c294", "type": "github" }, "original": { @@ -1254,11 +1254,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1741392477, - "narHash": "sha256-6ySHuduGhlZBv1uxEOlOeHWDEkKuLQ/O63DI+ZRfAmg=", + "lastModified": 1742040559, + "narHash": "sha256-Hb3aw00C1/5ORiTCASwMd8vcLAl/GNJfyjXZyl/EKpc=", "owner": "danth", "repo": "stylix", - "rev": "6eea250b10386be0fc23496d1039d76b3147680e", + "rev": "bcc674f1994396137438bac9d905971453d33b12", "type": "github" }, "original": { @@ -1379,11 +1379,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1740351358, - "narHash": "sha256-Hdk850xgAd3DL8KX0AbyU7tC834d3Lej1jOo3duWiOA=", + "lastModified": 1741468895, + "narHash": "sha256-YKM1RJbL68Yp2vESBqeZQBjTETXo8mCTTzLZyckCfZk=", "owner": "tinted-theming", "repo": "schemes", - "rev": "a1bc2bd89e693e7e3f5764cfe8114e2ae150e184", + "rev": "47c8c7726e98069cade5827e5fb2bfee02ce6991", "type": "github" }, "original": { @@ -1395,11 +1395,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1740272597, - "narHash": "sha256-/etfUV3HzAaLW3RSJVwUaW8ULbMn3v6wbTlXSKbcoWQ=", + "lastModified": 1740877430, + "narHash": "sha256-zWcCXgdC4/owfH/eEXx26y5BLzTrefjtSLFHWVD5KxU=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "b6c7f46c8718cc484f2db8b485b06e2a98304cd0", + "rev": "d48ee86394cbe45b112ba23ab63e33656090edb4", "type": "github" }, "original": { diff --git a/modules/system/hyprland/default.nix b/modules/system/hyprland/default.nix index 60128d6..045ab03 100644 --- a/modules/system/hyprland/default.nix +++ b/modules/system/hyprland/default.nix @@ -47,6 +47,8 @@ in package = pkgs.libsForQt5.sddm; }; + services.upower.enable = true; + # Define systemd service to run on boot to load avatars for sddm systemd.services."sddm-avatar" = { description = "Service to copy or update users Avatars at startup."; From 8ff7e88f4f180e030ec2b15bd4e15ce20595e7cd Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 15 Mar 2025 14:19:12 -0500 Subject: [PATCH 163/317] Gaming optimizations --- modules/system/gaming/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index f46242f..2102399 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -19,10 +19,12 @@ in { gamemode prismlauncher inotify-tools + protonup-qt (pkgs.writeScriptBin "steamgrab" ''chown -R $(pgrep -nf steam | xargs -r ps -o uname= -p):steam /opt/Steam;'') ]; programs.gamemode.enable = true; programs.gamescope.enable = true; + programs.gamescope.caSysNice = true; programs.steam.gamescopeSession.enable = true; systemSettings.bluetooth.enable = true; hardware.bluetooth = { From 5efd1662ebc1cdee5237a64301929da6d606e2d5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 15 Mar 2025 14:29:12 -0500 Subject: [PATCH 164/317] typo --- modules/system/gaming/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index 2102399..df05ae5 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -24,7 +24,7 @@ in { ]; programs.gamemode.enable = true; programs.gamescope.enable = true; - programs.gamescope.caSysNice = true; + programs.gamescope.capSysNice = true; programs.steam.gamescopeSession.enable = true; systemSettings.bluetooth.enable = true; hardware.bluetooth = { From 1fb21a05439b34d3d8d2982ba9505eaf6217c72d Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 16 Mar 2025 17:27:01 -0500 Subject: [PATCH 165/317] Better performance with alt gamescope session --- modules/system/gaming/default.nix | 55 +++++++++++++++++++++++++++++-- modules/user/hyprland/default.nix | 1 - 2 files changed, 53 insertions(+), 3 deletions(-) diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index df05ae5..e0f5a21 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -12,6 +12,22 @@ in { config = lib.mkIf cfg.enable { nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-unwrapped" ]; + nixpkgs.config.packageOverrides = pkgs: { + steam = pkgs.steam.override { + extraPkgs = pkgs: with pkgs; [ + xorg.libXcursor + xorg.libXi + xorg.libXinerama + xorg.libXScrnSaver + libpng + libpulseaudio + libvorbis + stdenv.cc.cc.lib + libkrb5 + keyutils + ]; + }; + }; hardware.opengl.driSupport32Bit = true; programs.steam.enable = true; environment.systemPackages = with pkgs; @@ -24,8 +40,43 @@ in { ]; programs.gamemode.enable = true; programs.gamescope.enable = true; - programs.gamescope.capSysNice = true; - programs.steam.gamescopeSession.enable = true; + programs.gamescope.capSysNice = false; + programs.steam.gamescopeSession = { + enable = true; + env = { + WLR_RENDERER = "vulkan"; + DXVK_HDR = "1"; + ENABLE_GAMESCOPE_WSI = "1"; + WINE_FULLSCREEN_FSR = "1"; + # Games allegedly prefer X11 + #SDL_VIDEODRIVER = "x11"; + }; + args = [ + "--xwayland-count 2" + "--expose-wayland" + + "-e" # Enable steam integration + "--steam" + + "--adaptive-sync" + "--hdr-enabled" + "--hdr-itm-enable" + + # External monitor + "--prefer-output eDP-1" + "--output-width 1920" + "--output-height 1080" + # "-r 75" + + # Laptop display + # "--prefer-output eDP-1" + # "--output-width 2560" + # "--output-height 1600" + # "-r 120" + + "--prefer-vk-device 1002:1638" # lspci -nn | grep VGA + ]; + }; systemSettings.bluetooth.enable = true; hardware.bluetooth = { enable = true; diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index eaeb9f0..f46dc00 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -61,7 +61,6 @@ in "hyprprofile Default" "ydotoold" "GOMAXPROCS=1 syncthing --no-browser" - "STEAM_FRAME_FORCE_CLOSE=1 steam -silent" "protonmail-bridge --noninteractive" "sleep 5 && libinput-gestures" "obs-notification-mute-daemon" From 1a2ac810e3d65bd135da14b7dfae4c35a4a2efce Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 19 Mar 2025 11:04:07 -0500 Subject: [PATCH 166/317] ranger gcode preview script --- modules/user/ranger/ranger.nix | 14 ++++++++++++++ modules/user/ranger/scope.sh | 3 +++ 2 files changed, 17 insertions(+) diff --git a/modules/user/ranger/ranger.nix b/modules/user/ranger/ranger.nix index 73f612f..877cb44 100644 --- a/modules/user/ranger/ranger.nix +++ b/modules/user/ranger/ranger.nix @@ -31,6 +31,20 @@ in { fi fi '') + (pkgs.writeScriptBin "gcode-stats" '' + #!/bin/sh + + filename="$1"; + printtime=$(awk -F ":" '/;TIME:/{print $NF; exit}' "$filename"); + actualprinttime=$(echo "scale=2; $printtime / 3600" | bc); + filamentused=$(awk -F ": " '/;Filament used:/{print $NF; exit}' "$filename"); + bedtemp=$(awk -F " S" '/M140 S/{print $NF; exit}' "$filename"); + exttemp=$(awk -F " S" '/M104 S/{print $NF; exit}' "$filename"); + echo "Print Time: $actualprinttime""hr"" +Filament Used: $filamentused +Bed Temp: $bedtemp""C +Extruder Temp: $exttemp ""C" > /dev/stdout; + '') ]; xdg.mimeApps.associations.added = { diff --git a/modules/user/ranger/scope.sh b/modules/user/ranger/scope.sh index 005469d..f4e98a5 100755 --- a/modules/user/ranger/scope.sh +++ b/modules/user/ranger/scope.sh @@ -52,6 +52,9 @@ SQLITE_ROW_LIMIT=5 # Display only the first and the last ( - 1) recor handle_extension() { case "${FILE_EXTENSION_LOWER}" in + gcode) + gcode-stats "${FILE_PATH}" && exit 5 + exit 1;; ## Archive a|ace|alz|arc|arj|bz|bz2|cab|cpio|deb|gz|jar|lha|lz|lzh|lzma|lzo|\ rpm|rz|t7z|tar|tbz|tbz2|tgz|tlz|txz|tZ|tzo|war|xpi|xz|Z|zip) From d6fd22fc61287ef517c7db6d51fa6834ae5b5780 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 20 Mar 2025 14:33:36 -0500 Subject: [PATCH 167/317] intel hwaccel improvements --- hosts/duskfall/hardware-configuration.nix | 10 ++++++++++ hosts/zenith/hardware-configuration.nix | 11 +++++++++++ modules/user/browser/qutebrowser.nix | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/hosts/duskfall/hardware-configuration.nix b/hosts/duskfall/hardware-configuration.nix index 8a39a00..1c83f7d 100644 --- a/hosts/duskfall/hardware-configuration.nix +++ b/hosts/duskfall/hardware-configuration.nix @@ -15,6 +15,16 @@ hardware.graphics = { enable = lib.mkDefault true; enable32Bit = lib.mkDefault true; + extraPackages = with pkgs; [ + intel-media-driver + intel-vaapi-driver + libvdpau-va-gl + ]; + extraPackages32 = with pkgs.driversi686Linux; [ + intel-media-driver + intel-vaapi-driver + libvdpau-va-gl + ]; }; boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; diff --git a/hosts/zenith/hardware-configuration.nix b/hosts/zenith/hardware-configuration.nix index 78624e1..05e544a 100644 --- a/hosts/zenith/hardware-configuration.nix +++ b/hosts/zenith/hardware-configuration.nix @@ -20,6 +20,16 @@ hardware.graphics = { enable = lib.mkDefault true; enable32Bit = lib.mkDefault true; + extraPackages = with pkgs; [ + intel-media-driver + intel-vaapi-driver + libvdpau-va-gl + ]; + extraPackages32 = with pkgs.driversi686Linux; [ + intel-media-driver + intel-vaapi-driver + libvdpau-va-gl + ]; }; fileSystems."/" = @@ -46,4 +56,5 @@ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + } diff --git a/modules/user/browser/qutebrowser.nix b/modules/user/browser/qutebrowser.nix index 0536bdd..8db0820 100644 --- a/modules/user/browser/qutebrowser.nix +++ b/modules/user/browser/qutebrowser.nix @@ -183,7 +183,7 @@ quickmarksHtmlFile.close() config.set('content.blocking.method','both') config.set('scrolling.smooth',True) -config.set('qt.args',['ignore-gpu-blacklist','enable-gpu-rasterization','enable-accelerated-video-decode','enable-quic','enable-zero-copy','enable-native-gpu-memory-buffers','num-raster-threads=4','allow-file-access-from-files']) +config.set('qt.args',['ignore-gpu-blacklist','enable-gpu-rasterization','enable-accelerated-video-decode','enable-quic','enable-zero-copy','enable-native-gpu-memory-buffers','num-raster-threads=4','allow-file-access-from-files','enable-features=VaapiVideoDecoder,VaapiIgnoreDriverChecks,Vulkan,DefaultANGLEVulkan,VulkanFromANGLE']) config.set('qt.workarounds.disable_accelerated_2d_canvas','never') config.load_autoconfig(True) From b87f7203180875bf61840182298b073fb1ea86f4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 21 Mar 2025 09:43:13 -0500 Subject: [PATCH 168/317] added learning apps --- hosts/duskfall/home.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index 3574d88..c33b00a 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -37,6 +37,12 @@ bluetooth.enable = true; }; + home.packages = with pkgs; [ + cage + gcompris + tuxpaint + ]; + home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable { AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card0"; }; From 9a61a9ff034b8c398b3efaea02278b4a0475ac60 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 21 Mar 2025 09:43:25 -0500 Subject: [PATCH 169/317] intel improvements --- hosts/duskfall/configuration.nix | 1 + hosts/duskfall/hardware-configuration.nix | 11 ++++++++++- hosts/zenith/configuration.nix | 1 + hosts/zenith/hardware-configuration.nix | 11 ++++++++++- modules/user/hyprland/default.nix | 3 ++- 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index bd7ad2a..2adf470 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -55,6 +55,7 @@ libwacom ]; services.xserver.wacom.enable = true; + services.xserver.videoDrivers = [ "i915" ]; }; diff --git a/hosts/duskfall/hardware-configuration.nix b/hosts/duskfall/hardware-configuration.nix index 1c83f7d..fe0733f 100644 --- a/hosts/duskfall/hardware-configuration.nix +++ b/hosts/duskfall/hardware-configuration.nix @@ -18,6 +18,8 @@ extraPackages = with pkgs; [ intel-media-driver intel-vaapi-driver + vaapiIntel + vaapiVdpau libvdpau-va-gl ]; extraPackages32 = with pkgs.driversi686Linux; [ @@ -27,8 +29,15 @@ ]; }; + environment.sessionVariables = { + LIBVA_DRIVER_NAME = "iHD"; + }; + + powerManagement.cpuFreqGovernor = "performance"; + services.thermald.enable = true; + boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; - boot.initrd.kernelModules = [ ]; + boot.initrd.kernelModules = [ "i915" ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; diff --git a/hosts/zenith/configuration.nix b/hosts/zenith/configuration.nix index d5271fb..54b099b 100644 --- a/hosts/zenith/configuration.nix +++ b/hosts/zenith/configuration.nix @@ -53,6 +53,7 @@ libwacom ]; services.xserver.wacom.enable = true; + services.xserver.videoDrivers = [ "i915" ]; }; diff --git a/hosts/zenith/hardware-configuration.nix b/hosts/zenith/hardware-configuration.nix index 05e544a..83d435a 100644 --- a/hosts/zenith/hardware-configuration.nix +++ b/hosts/zenith/hardware-configuration.nix @@ -9,7 +9,7 @@ ]; boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "ahci" "nvme" "usb_storage" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; + boot.initrd.kernelModules = [ "i915" ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ]; @@ -23,6 +23,8 @@ extraPackages = with pkgs; [ intel-media-driver intel-vaapi-driver + vaapiIntel + vaapiVdpau libvdpau-va-gl ]; extraPackages32 = with pkgs.driversi686Linux; [ @@ -32,6 +34,13 @@ ]; }; + environment.sessionVariables = { + LIBVA_DRIVER_NAME = "iHD"; + }; + + powerManagement.cpuFreqGovernor = "performance"; + services.thermald.enable = true; + fileSystems."/" = { device = "/dev/disk/by-uuid/548f7030-af4c-412a-b2ed-d842337aa336"; fsType = "ext4"; diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index f46dc00..2704cb3 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -112,6 +112,7 @@ in enable_swallow = true; swallow_regex = "(scratch_term)|(Alacritty)|(kitty)"; font_family = font; + vfr = true; }; bezier = [ @@ -522,7 +523,7 @@ modules: center: - Workspaces right: - - [Clock, Privacy, Settings, Tray] + - [Clock, Settings, Tray] appLauncherCmd: "nwggrid-wrapper" # optional, default None truncateTitleAfterLength: 150 # optional, default 150 workspaces: From eade9c6bd868b48b79eb8691dd8791d07100e663 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 21 Mar 2025 18:59:58 -0500 Subject: [PATCH 170/317] Trying to get out of gamescope session wout reboot --- modules/system/gaming/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index e0f5a21..fdd2441 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -37,6 +37,10 @@ in { inotify-tools protonup-qt (pkgs.writeScriptBin "steamgrab" ''chown -R $(pgrep -nf steam | xargs -r ps -o uname= -p):steam /opt/Steam;'') + (pkgs.writeScriptBin "steamos-session-select" '' + #!/bin/sh + steam -shutdown + '') ]; programs.gamemode.enable = true; programs.gamescope.enable = true; From 89b54b1aaaa2c4b92ac95441d009a37d8ad73c0f Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 22 Mar 2025 09:45:20 -0500 Subject: [PATCH 171/317] updated system --- flake.lock | 262 ++++++++++++------------------ flake.nix | 3 +- hosts/snowfire/configuration.nix | 4 +- modules/system/gaming/default.nix | 1 + 4 files changed, 110 insertions(+), 160 deletions(-) diff --git a/flake.lock b/flake.lock index cfa421e..58cb23a 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1737636397, - "narHash": "sha256-F5MbBj3QVorycVSFE9qjuOTLtIQBqt2VWbXa0uwzm98=", + "lastModified": 1742213273, + "narHash": "sha256-0l0vDb4anfsBu1rOs94bC73Hub+xEivgBAo6QXl2MmU=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "7fe006981fae53e931f513026fc754e322f13145", + "rev": "484b732195cc53f4536ce4bd59a5c6402b1e7ccf", "type": "github" }, "original": { @@ -126,11 +126,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1741901790, - "narHash": "sha256-34JVDJ6X1naRj+eFbuWSRxdfF5GX8FCTSFXNe78q1S8=", + "lastModified": 1742575697, + "narHash": "sha256-D8Ebr02/O4avw/+60o8oZYII9pGz1veb+Gox6XOdQdg=", "owner": "StevenBlack", "repo": "hosts", - "rev": "9644218ede1bc706cb2d76ed18902caad1998901", + "rev": "99c5f53e326ad3fb0525ed65f96925c2234940a9", "type": "github" }, "original": { @@ -185,11 +185,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1742030321, - "narHash": "sha256-O2DgfU9vxiwwk0zDiCtPYrEISBnX1b/DB3F3LG6iX8c=", + "lastModified": 1742576675, + "narHash": "sha256-2JbkmTzqfb5c/zk2xM6JKHZzgN1YsxblgqucbI0P4bU=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "5ca8419dfc9f6c451aa9bfee0f37ff28c9582774", + "rev": "610d71db8074a369a0498572ff75b444d284409d", "type": "github" }, "original": { @@ -473,11 +473,11 @@ ] }, "locked": { - "lastModified": 1741955947, - "narHash": "sha256-2lbURKclgKqBNm7hVRtWh0A7NrdsibD0EaWhahUVhhY=", + "lastModified": 1742588233, + "narHash": "sha256-Fi5g8H5FXMSRqy+mU6gPG0v+C9pzjYbkkiePtz8+PpA=", "owner": "nix-community", "repo": "home-manager", - "rev": "4e12151c9e014e2449e0beca2c0e9534b96a26b4", + "rev": "296ddc64627f4a6a4eb447852d7346b9dd16197d", "type": "github" }, "original": { @@ -524,11 +524,11 @@ ] }, "locked": { - "lastModified": 1737634937, - "narHash": "sha256-Ffw4ujFpi++6pPHe+gCBOfDgAoNlzVPZN6MReC1beu8=", + "lastModified": 1742215578, + "narHash": "sha256-zfs71PXVVPEe56WEyNi2TJQPs0wabU4WAlq0XV7GcdE=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "9c5dd1f7c825ee47f72727ad0a4e16ca46a2688e", + "rev": "2fd36421c21aa87e2fe3bee11067540ae612f719", "type": "github" }, "original": { @@ -553,11 +553,11 @@ ] }, "locked": { - "lastModified": 1737634889, - "narHash": "sha256-9JZE3KxcXOqZH9zs3UeadngDiK/yIACTiAR8HSA/TNI=", + "lastModified": 1739049071, + "narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "0d77b4895ad5f1bb3b0ee43103a5246c58b65591", + "rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73", "type": "github" }, "original": { @@ -582,11 +582,11 @@ ] }, "locked": { - "lastModified": 1734906236, - "narHash": "sha256-vH/ysV2ONGQgYZPtcJKwc8jJivzyVxru2aaOxC20ZOE=", + "lastModified": 1737634889, + "narHash": "sha256-9JZE3KxcXOqZH9zs3UeadngDiK/yIACTiAR8HSA/TNI=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "6dea3fba08fd704dd624b6d4b261638fb4003c9c", + "rev": "0d77b4895ad5f1bb3b0ee43103a5246c58b65591", "type": "github" }, "original": { @@ -602,7 +602,7 @@ "hyprgraphics": "hyprgraphics", "hyprland-protocols": "hyprland-protocols", "hyprland-qtutils": "hyprland-qtutils", - "hyprlang": "hyprlang_2", + "hyprlang": "hyprlang", "hyprutils": [ "hyprutils" ], @@ -615,16 +615,16 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1738457237, - "narHash": "sha256-9mtM+lwnmXnv5TPmdij1rR5fLzzqSjkltcyEuRf8uIk=", + "lastModified": 1742584793, + "narHash": "sha256-Zhau0ocCNRDg/+MTIutjPkN1+pYjYzgyW3P7eqL/LkQ=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "882f7ad7d2bbfc7440d0ccaef93b1cdd78e8e3ff", + "rev": "ccbdba7ee2ccb835306de89a6023134fa6b8006f", "type": "github" }, "original": { "owner": "hyprwm", - "ref": "v0.47.2", + "ref": "main", "repo": "Hyprland", "type": "github" } @@ -641,11 +641,11 @@ ] }, "locked": { - "lastModified": 1737556638, - "narHash": "sha256-laKgI3mr2qz6tas/q3tuGPxMdsGhBi/w+HO+hO2f1AY=", + "lastModified": 1738422629, + "narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "4c75dd5c015c8a0e5a34c6d02a018a650f57feb5", + "rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed", "type": "github" }, "original": { @@ -656,7 +656,11 @@ }, "hyprland-qt-support": { "inputs": { - "hyprlang": "hyprlang", + "hyprlang": [ + "hyprland", + "hyprland-qtutils", + "hyprlang" + ], "nixpkgs": [ "hyprland", "hyprland-qtutils", @@ -685,6 +689,41 @@ "hyprland-qtutils": { "inputs": { "hyprland-qt-support": "hyprland-qt-support", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-qtutils", + "hyprlang", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1739048983, + "narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, + "hyprlang": { + "inputs": { "hyprutils": [ "hyprland", "hyprutils" @@ -699,41 +738,11 @@ ] }, "locked": { - "lastModified": 1737811848, - "narHash": "sha256-WZ7LeiKHk5Y94MU5gHIWn0r8asWxYOvie4LqfCjVIZU=", - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "rev": "9c0831ff98856c0f312fcb8b57553fbe3dd34d5b", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "type": "github" - } - }, - "hyprlang": { - "inputs": { - "hyprutils": "hyprutils", - "nixpkgs": [ - "hyprland", - "hyprland-qtutils", - "hyprland-qt-support", - "nixpkgs" - ], - "systems": [ - "hyprland", - "hyprland-qtutils", - "hyprland-qt-support", - "systems" - ] - }, - "locked": { - "lastModified": 1737634606, - "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", + "lastModified": 1741191527, + "narHash": "sha256-kM+11Nch47Xwfgtw2EpRitJuORy4miwoMuRi5tyMBDY=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f41271d35cc0f370d300413d756c2677f386af9d", + "rev": "72df3861f1197e41b078faa3e38eedd60e00018d", "type": "github" }, "original": { @@ -745,15 +754,15 @@ "hyprlang_2": { "inputs": { "hyprutils": [ - "hyprland", + "hyprlock", "hyprutils" ], "nixpkgs": [ - "hyprland", + "hyprlock", "nixpkgs" ], "systems": [ - "hyprland", + "hyprlock", "systems" ] }, @@ -771,39 +780,10 @@ "type": "github" } }, - "hyprlang_3": { - "inputs": { - "hyprutils": [ - "hyprlock", - "hyprutils" - ], - "nixpkgs": [ - "hyprlock", - "nixpkgs" - ], - "systems": [ - "hyprlock", - "systems" - ] - }, - "locked": { - "lastModified": 1735393019, - "narHash": "sha256-NPpqA8rtmDLsEmZOmz+qR67zsB6Y503Jnv+nSFLKJZ8=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "55608efdaa387af7bfdc0eddb404c409958efa43", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, "hyprlock": { "inputs": { "hyprgraphics": "hyprgraphics_2", - "hyprlang": "hyprlang_3", + "hyprlang": "hyprlang_2", "hyprutils": [ "hyprutils" ], @@ -814,52 +794,20 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1735497496, - "narHash": "sha256-lT6f/5NB73xj9cVesi2SNsL5jVciwZJp8QRohiv+3Hk=", + "lastModified": 1742460722, + "narHash": "sha256-u23NzXN2yez0nO2zEtEaChE/4jhtC8WvpM8OpwUsls8=", "ref": "refs/heads/main", - "rev": "3d63d9b129d5def270bc8a2471347e6f97274e2b", - "revCount": 301, + "rev": "f883e669d147ac189b64ce403300a5a3e4de2c66", + "revCount": 342, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, "original": { - "rev": "3d63d9b129d5def270bc8a2471347e6f97274e2b", "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" } }, "hyprutils": { - "inputs": { - "nixpkgs": [ - "hyprland", - "hyprland-qtutils", - "hyprland-qt-support", - "hyprlang", - "nixpkgs" - ], - "systems": [ - "hyprland", - "hyprland-qtutils", - "hyprland-qt-support", - "hyprlang", - "systems" - ] - }, - "locked": { - "lastModified": 1737632363, - "narHash": "sha256-X9I8POSlHxBVjD0fiX1O2j7U9Zi1+4rIkrsyHP0uHXY=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "006620eb29d54ea9086538891404c78563d1bae1", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprutils", - "type": "github" - } - }, - "hyprutils_2": { "inputs": { "nixpkgs": [ "nixpkgs" @@ -892,11 +840,11 @@ ] }, "locked": { - "lastModified": 1735493474, - "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", + "lastModified": 1739870480, + "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", + "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", "type": "github" }, "original": { @@ -993,11 +941,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1741862977, - "narHash": "sha256-prZ0M8vE/ghRGGZcflvxCu40ObKaB+ikn74/xQoNrGQ=", + "lastModified": 1742512142, + "narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cdd2ef009676ac92b715ff26630164bb88fec4e0", + "rev": "7105ae3957700a9646cc4b766f5815b23ed0c682", "type": "github" }, "original": { @@ -1009,11 +957,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1741862977, - "narHash": "sha256-prZ0M8vE/ghRGGZcflvxCu40ObKaB+ikn74/xQoNrGQ=", + "lastModified": 1742512142, + "narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cdd2ef009676ac92b715ff26630164bb88fec4e0", + "rev": "7105ae3957700a9646cc4b766f5815b23ed0c682", "type": "github" }, "original": { @@ -1024,11 +972,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1741851582, - "narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=", + "lastModified": 1742422364, + "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6607cf789e541e7873d40d3a8f7815ea92204f32", + "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc", "type": "github" }, "original": { @@ -1125,11 +1073,11 @@ ] }, "locked": { - "lastModified": 1737465171, - "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "lastModified": 1742058297, + "narHash": "sha256-b4SZc6TkKw8WQQssbN5O2DaCEzmFfvSTPYHlx/SFW9Y=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "rev": "59f17850021620cd348ad2e9c0c64f4e6325ce2a", "type": "github" }, "original": { @@ -1147,7 +1095,7 @@ "home-manager": "home-manager_2", "hyprland": "hyprland", "hyprlock": "hyprlock", - "hyprutils": "hyprutils_2", + "hyprutils": "hyprutils", "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_2", "plasma-manager": "plasma-manager", @@ -1199,11 +1147,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1742005800, - "narHash": "sha256-6wuOGWkyW6R4A6Th9NMi6WK2jjddvZt7V2+rLPk6L3o=", + "lastModified": 1742524367, + "narHash": "sha256-KzTwk/5ETJavJZYV1DEWdCx05M4duFCxCpRbQSKWpng=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "028cd247a6375f83b94adc33d83676480fc9c294", + "rev": "70bf752d176b2ce07417e346d85486acea9040ef", "type": "github" }, "original": { @@ -1254,11 +1202,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1742040559, - "narHash": "sha256-Hb3aw00C1/5ORiTCASwMd8vcLAl/GNJfyjXZyl/EKpc=", + "lastModified": 1742591463, + "narHash": "sha256-CguaHULcm4RuIGN+i4u80dYZujFgZaeOTiShFxCwFhw=", "owner": "danth", "repo": "stylix", - "rev": "bcc674f1994396137438bac9d905971453d33b12", + "rev": "113643f332e1f70d90991722f8c4e5a0ace6fd06", "type": "github" }, "original": { @@ -1474,11 +1422,11 @@ ] }, "locked": { - "lastModified": 1737634991, - "narHash": "sha256-dBAnb7Kbnier30cA7AgxVSxxARmxKZ1vHZT33THSIr8=", + "lastModified": 1741934139, + "narHash": "sha256-ZhTcTH9FoeAtbPfWGrhkH7RjLJZ7GeF18nygLAMR+WE=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "e09dfe2726c8008f983e45a0aa1a3b7416aaeb8a", + "rev": "150b0b6f52bb422a1b232a53698606fe0320dde0", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index ca1a389..38956a5 100644 --- a/flake.nix +++ b/flake.nix @@ -86,7 +86,7 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; hyprland = { - url = "github:hyprwm/Hyprland/v0.47.2?submodules=true"; + url = "github:hyprwm/Hyprland/main?submodules=true"; inputs.nixpkgs.follows = "nixpkgs"; inputs.hyprutils.follows = "hyprutils"; }; @@ -100,7 +100,6 @@ hyprlock = { type = "git"; url = "https://code.hyprland.org/hyprwm/hyprlock.git"; - rev = "3d63d9b129d5def270bc8a2471347e6f97274e2b"; inputs.nixpkgs.follows = "nixpkgs"; inputs.hyprutils.follows = "hyprutils"; }; diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index 6e7990e..d0bc05a 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -10,7 +10,7 @@ # hardware cachy.enable = true; bluetooth.enable = true; - tlp.enable = true; + tlp.enable = false; printing.enable = true; # software @@ -46,6 +46,8 @@ }; }; + services.thermald.enable = true; + users.users.emmet.description = "Emmet"; home-manager.users.emmet.userSettings = { name = "Emmet"; diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index fdd2441..26d74d3 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -81,6 +81,7 @@ in { "--prefer-vk-device 1002:1638" # lspci -nn | grep VGA ]; }; + chaotic.hdr.enable = true; systemSettings.bluetooth.enable = true; hardware.bluetooth = { enable = true; From f3f50a612c965915bc61df28773f5ab875b0ea20 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 22 Mar 2025 10:02:43 -0500 Subject: [PATCH 172/317] focus on activate --- modules/user/hyprland/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 2704cb3..9c856f2 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -113,6 +113,7 @@ in swallow_regex = "(scratch_term)|(Alacritty)|(kitty)"; font_family = font; vfr = true; + focus_on_activate = true; }; bezier = [ From 6e5af424be2a20c2e3133efd11c83881b417c69a Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 22 Mar 2025 10:02:54 -0500 Subject: [PATCH 173/317] vrr + hdr for hyprland + gamescope --- hosts/snowfire/home.nix | 12 +++++++++--- modules/system/gaming/default.nix | 1 + 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index 4bcb212..d91bcb7 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -48,10 +48,16 @@ wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { monitor = [ - "eDP-1,1920x1080@300,720x864,1.25" - "HDMI-A-1,1920x1080,1536x0,1.25" - "DP-1,1920x1080,0x0,1.25" + "eDP-1,1920x1080@300,720x864,1.25,vrr,1" + "HDMI-A-1,1920x1080,1536x0,1.25,vrr,0" + "DP-1,1920x1080,0x0,1.25,vrr,0" ]; + misc = { + vrr = 1; + }; + experimental = { + xx_color_management_v4 = true; + }; }; }; diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index 26d74d3..743df9c 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -51,6 +51,7 @@ in { WLR_RENDERER = "vulkan"; DXVK_HDR = "1"; ENABLE_GAMESCOPE_WSI = "1"; + ENABLE_HDR_WSI = "1"; WINE_FULLSCREEN_FSR = "1"; # Games allegedly prefer X11 #SDL_VIDEODRIVER = "x11"; From 1f628687fad3c1f6174f0eefd93f38a57636983b Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 22 Mar 2025 15:12:22 -0500 Subject: [PATCH 174/317] some gaming fixes --- modules/system/gaming/default.nix | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index 743df9c..9e5a982 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -29,7 +29,25 @@ in { }; }; hardware.opengl.driSupport32Bit = true; - programs.steam.enable = true; + programs.steam = { + enable = true; + extest.enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + extraPackages = with pkgs; [ + xorg.libXcursor + xorg.libXi + xorg.libXinerama + xorg.libXScrnSaver + libpng + libpulseaudio + libvorbis + stdenv.cc.cc.lib + libkrb5 + keyutils + ]; + }; environment.systemPackages = with pkgs; [ steam gamemode From eb367190d430b3c03e37f8f5437290e2b1b42dae Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 26 Mar 2025 09:04:27 -0500 Subject: [PATCH 175/317] fix org node --- modules/user/emacs/init.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 206591a..0837ac6 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -861,7 +861,7 @@ (org-roam-db-autosync-mode -1) (setq org-roam-capture-templates '(("d" "default" plain "%?" :unnarrowed t :target (file+head "${slug}-%<%Y%m%d%H%M%S>.org" "#+title: ${title}")))) - (evil-define-key 'motion 'global (kbd "N.") 'org-roam-node-find) + (evil-define-key 'motion 'global (kbd "N.") 'org-node-find) (evil-define-key 'motion 'global (kbd "Nr") 'org-roam-refile) (evil-define-key 'motion 'global (kbd "Nb") 'org-roam-buffer-toggle) (evil-define-key 'motion 'global (kbd "nrdd") 'org-roam-dailies-goto-date) @@ -874,9 +874,13 @@ :config (setq org-node-extra-id-dirs '("~/Notes/")) (setq org-id-locations-file "~/Notes/.org-id-locations") + (setq org-node-extra-id-dirs-exclude '("~/Notes/daily/")) (org-node-cache-mode) (org-node-complete-at-point-mode) (setq org-roam-completion-everywhere nil) + (setq org-node-filter-fn + (lambda (node) + (not (string-search "/daily/" (org-node-get-file node))))) (evil-define-key 'motion 'global (kbd "Ni") 'org-node-insert-link) (evil-define-key 'motion 'global (kbd "NR") 'org-node-rewrite-links-ask)) From 68b58ccd0a61998ea9fc0dc529a1c28ec6f87fc6 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 26 Mar 2025 10:20:02 -0500 Subject: [PATCH 176/317] For managing ldap server --- hosts/zenith/home.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 947a659..6af8118 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -40,6 +40,10 @@ bluetooth.enable = true; }; + home.packages = with pkgs; [ + openldap ldapvi + ]; + home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable { AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card0"; }; From 63bac87b76b14c9a6c0065de48a2d72d180a995c Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 26 Mar 2025 10:20:14 -0500 Subject: [PATCH 177/317] Keep zsh when going into nix-shell --- modules/user/shell/default.nix | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/modules/user/shell/default.nix b/modules/user/shell/default.nix index 9e1d714..3f56dff 100644 --- a/modules/user/shell/default.nix +++ b/modules/user/shell/default.nix @@ -15,6 +15,18 @@ in { enableAutosuggestions = true; syntaxHighlighting.enable = true; enableCompletion = true; + plugins = [ + { + name = "zsh-nix-shell"; + file = "nix-shell.plugin.zsh"; + src = pkgs.fetchFromGitHub { + owner = "chisui"; + repo = "zsh-nix-shell"; + rev = "v0.8.0"; + sha256 = "1lzrn0n4fxfcgg65v0qhnj7wnybybqzs4adz7xsrkgmcsr0ii8b7"; + }; + } + ]; shellAliases = { phoenix = "sudo phoenix"; ls = "eza --icons -l -T -L=1"; From 20b3ebac4b91e5f90eb9f316c1cd6cdfde72f362 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 28 Mar 2025 08:15:01 -0500 Subject: [PATCH 178/317] some gaming fixes --- hosts/snowfire/configuration.nix | 2 +- modules/system/gaming/default.nix | 18 +++++++----------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index d0bc05a..b41274b 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -14,7 +14,7 @@ printing.enable = true; # software - flatpak.enable = false; + flatpak.enable = true; gaming.enable = true; virtualization = { docker.enable = true; diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index 9e5a982..579bbd4 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -75,28 +75,22 @@ in { #SDL_VIDEODRIVER = "x11"; }; args = [ - "--xwayland-count 2" - "--expose-wayland" + "--xwayland-count 1" + #"--expose-wayland" "-e" # Enable steam integration - "--steam" "--adaptive-sync" "--hdr-enabled" "--hdr-itm-enable" # External monitor + "--fullscreen" "--prefer-output eDP-1" "--output-width 1920" "--output-height 1080" - # "-r 75" - - # Laptop display - # "--prefer-output eDP-1" - # "--output-width 2560" - # "--output-height 1600" - # "-r 120" - + "--nested-width 1920" + "--nested-height 1080" "--prefer-vk-device 1002:1638" # lspci -nn | grep VGA ]; }; @@ -141,5 +135,7 @@ in { "*/1 * * * * steamgrab" ]; }; + networking.firewall.allowedTCPPorts = [ 24872 ]; + networking.firewall.allowedUDPPorts = [ 24872 ]; }; } From ba53b0650413b9bcfdcb471489c258045f973f8a Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 28 Mar 2025 08:15:08 -0500 Subject: [PATCH 179/317] vrr multi monitor is a bit glitchy --- hosts/snowfire/home.nix | 2 +- modules/user/hyprland/default.nix | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index d91bcb7..ac5665c 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -48,7 +48,7 @@ wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { monitor = [ - "eDP-1,1920x1080@300,720x864,1.25,vrr,1" + "eDP-1,1920x1080@300,720x864,1.25,vrr,0" "HDMI-A-1,1920x1080,1536x0,1.25,vrr,0" "DP-1,1920x1080,0x0,1.25,vrr,0" ]; diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 9c856f2..e501c1f 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -112,7 +112,6 @@ in enable_swallow = true; swallow_regex = "(scratch_term)|(Alacritty)|(kitty)"; font_family = font; - vfr = true; focus_on_activate = true; }; From 145505bd2508924e0d8532132c2666277a683304 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 28 Mar 2025 09:52:41 -0500 Subject: [PATCH 180/317] Updated system --- flake.lock | 82 +++++++++++++++++++++++++++--------------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/flake.lock b/flake.lock index 58cb23a..8eee6db 100644 --- a/flake.lock +++ b/flake.lock @@ -126,11 +126,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1742575697, - "narHash": "sha256-D8Ebr02/O4avw/+60o8oZYII9pGz1veb+Gox6XOdQdg=", + "lastModified": 1742998852, + "narHash": "sha256-8mP510jw0gDsr/TtPiSdjK3fLAA1mFgwcYJerLZ+QBM=", "owner": "StevenBlack", "repo": "hosts", - "rev": "99c5f53e326ad3fb0525ed65f96925c2234940a9", + "rev": "60f983269a1d157f7ccdc13c81717a25a55bf15c", "type": "github" }, "original": { @@ -185,11 +185,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1742576675, - "narHash": "sha256-2JbkmTzqfb5c/zk2xM6JKHZzgN1YsxblgqucbI0P4bU=", + "lastModified": 1743153396, + "narHash": "sha256-Wtgr/u0kYqMHvKjXRu9b7mPo32YDw/7IOIJ2eV8KFuQ=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "610d71db8074a369a0498572ff75b444d284409d", + "rev": "40a9308b06ee2061c5871038024ffcfd992a9ce8", "type": "github" }, "original": { @@ -473,11 +473,11 @@ ] }, "locked": { - "lastModified": 1742588233, - "narHash": "sha256-Fi5g8H5FXMSRqy+mU6gPG0v+C9pzjYbkkiePtz8+PpA=", + "lastModified": 1743136572, + "narHash": "sha256-uwaVrKgi6g1TUq56247j6QvvFtYHloCkjCrEpGBvV54=", "owner": "nix-community", "repo": "home-manager", - "rev": "296ddc64627f4a6a4eb447852d7346b9dd16197d", + "rev": "1efd2503172016a6742c87b47b43ca2c8145607d", "type": "github" }, "original": { @@ -615,11 +615,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1742584793, - "narHash": "sha256-Zhau0ocCNRDg/+MTIutjPkN1+pYjYzgyW3P7eqL/LkQ=", + "lastModified": 1743165127, + "narHash": "sha256-3tqo7xha/WDZN/WhjCM/hVRp9V8ROH3EvUYJhib4uc4=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "ccbdba7ee2ccb835306de89a6023134fa6b8006f", + "rev": "c93140a5f12a25f0a08b162caf31fe68fec62290", "type": "github" }, "original": { @@ -794,11 +794,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1742460722, - "narHash": "sha256-u23NzXN2yez0nO2zEtEaChE/4jhtC8WvpM8OpwUsls8=", + "lastModified": 1743062552, + "narHash": "sha256-JBb5cdHYMsb8+RBsOGwImFRAjmbxWeehRHg6MFEkquo=", "ref": "refs/heads/main", - "rev": "f883e669d147ac189b64ce403300a5a3e4de2c66", - "revCount": 342, + "rev": "d9a162531542d8f7ad431fe9d6162871e5cffb9b", + "revCount": 344, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -815,11 +815,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1741534688, - "narHash": "sha256-EV3945SnjOCuRVbGRghsWx/9D89FyshnSO1Q6/TuQ14=", + "lastModified": 1742984269, + "narHash": "sha256-uz9FaCIbga/gQ5ZG1Hb4HVVjTWT1qjjCAFlCXiaefxg=", "ref": "refs/heads/main", - "rev": "dd1f720cbc2dbb3c71167c9598045dd3261d27b3", - "revCount": 88, + "rev": "7248194a2ce0106ae647b70d0526a96dc9d6ad60", + "revCount": 90, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprutils.git" }, @@ -941,11 +941,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1742512142, - "narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=", + "lastModified": 1742937945, + "narHash": "sha256-lWc+79eZRyvHp/SqMhHTMzZVhpxkRvthsP1Qx6UCq0E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7105ae3957700a9646cc4b766f5815b23ed0c682", + "rev": "d02d88f8de5b882ccdde0465d8fa2db3aa1169f7", "type": "github" }, "original": { @@ -957,11 +957,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1742512142, - "narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=", + "lastModified": 1742937945, + "narHash": "sha256-lWc+79eZRyvHp/SqMhHTMzZVhpxkRvthsP1Qx6UCq0E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7105ae3957700a9646cc4b766f5815b23ed0c682", + "rev": "d02d88f8de5b882ccdde0465d8fa2db3aa1169f7", "type": "github" }, "original": { @@ -972,11 +972,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1742422364, - "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=", + "lastModified": 1742889210, + "narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc", + "rev": "698214a32beb4f4c8e3942372c694f40848b360d", "type": "github" }, "original": { @@ -1050,11 +1050,11 @@ ] }, "locked": { - "lastModified": 1740569341, - "narHash": "sha256-WV8nY2IOfWdzBF5syVgCcgOchg/qQtpYh6LECYS9XkY=", + "lastModified": 1742765550, + "narHash": "sha256-2vVIh2JrL6GAGfgCeY9e6iNKrBjs0Hw3bGQEAbwVs68=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "5eeb0172fb74392053b66a8149e61b5e191b2845", + "rev": "b70be387276e632fe51232887f9e04e2b6ef8c16", "type": "github" }, "original": { @@ -1073,11 +1073,11 @@ ] }, "locked": { - "lastModified": 1742058297, - "narHash": "sha256-b4SZc6TkKw8WQQssbN5O2DaCEzmFfvSTPYHlx/SFW9Y=", + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "59f17850021620cd348ad2e9c0c64f4e6325ce2a", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", "type": "github" }, "original": { @@ -1147,11 +1147,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1742524367, - "narHash": "sha256-KzTwk/5ETJavJZYV1DEWdCx05M4duFCxCpRbQSKWpng=", + "lastModified": 1743129211, + "narHash": "sha256-gE8t+U9miTwm2NYWS9dFY8H1/QB4ifaFDq1KdV9KEqo=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "70bf752d176b2ce07417e346d85486acea9040ef", + "rev": "f93da1d26ba9963f34f94a6872b67a7939699543", "type": "github" }, "original": { @@ -1202,11 +1202,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1742591463, - "narHash": "sha256-CguaHULcm4RuIGN+i4u80dYZujFgZaeOTiShFxCwFhw=", + "lastModified": 1743075971, + "narHash": "sha256-8fSI6C19ZTcHgvoLK17wfEEVI08tgnZfSLgVe3E/22w=", "owner": "danth", "repo": "stylix", - "rev": "113643f332e1f70d90991722f8c4e5a0ace6fd06", + "rev": "2fb8321ea16c595e0208b22021ddaf1f471c634a", "type": "github" }, "original": { From 13d7a839813132d842b8827491cd23c0e376a98b Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 5 Apr 2025 10:40:25 -0500 Subject: [PATCH 181/317] Updated systems --- flake.lock | 150 +++++++++++++++++++--------- flake.nix | 4 +- hosts/snowfire/configuration.nix | 24 ++--- modules/system/gaming/default.nix | 10 +- modules/system/hyprland/default.nix | 34 ++++--- modules/system/phoenix/default.nix | 10 +- modules/user/emacs/default.nix | 2 +- 7 files changed, 154 insertions(+), 80 deletions(-) diff --git a/flake.lock b/flake.lock index 8eee6db..3834658 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1742213273, - "narHash": "sha256-0l0vDb4anfsBu1rOs94bC73Hub+xEivgBAo6QXl2MmU=", + "lastModified": 1743265529, + "narHash": "sha256-QbjP15/2N+VJl0b5jxrrTc+VOt39aU4XrDvtP0Lz5ik=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "484b732195cc53f4536ce4bd59a5c6402b1e7ccf", + "rev": "1d2dbd72c2bbaceab031c592d4810f744741d203", "type": "github" }, "original": { @@ -126,11 +126,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1742998852, - "narHash": "sha256-8mP510jw0gDsr/TtPiSdjK3fLAA1mFgwcYJerLZ+QBM=", + "lastModified": 1743627497, + "narHash": "sha256-TT5aJA/O9SHAjSDcHpQ6MeB8ot1k2f8J7yuz04ssI9g=", "owner": "StevenBlack", "repo": "hosts", - "rev": "60f983269a1d157f7ccdc13c81717a25a55bf15c", + "rev": "815487ebb90b4698aa0800ec4ba5302368bdf585", "type": "github" }, "original": { @@ -185,11 +185,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1743153396, - "narHash": "sha256-Wtgr/u0kYqMHvKjXRu9b7mPo32YDw/7IOIJ2eV8KFuQ=", + "lastModified": 1743846340, + "narHash": "sha256-ZX+SirCnujuBuTftDXpL2IxzIO4UXGZdFiMy3pbHtRQ=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "40a9308b06ee2061c5871038024ffcfd992a9ce8", + "rev": "f529d87520a4ca4083b94c28a47b33b3d9593669", "type": "github" }, "original": { @@ -473,11 +473,11 @@ ] }, "locked": { - "lastModified": 1743136572, - "narHash": "sha256-uwaVrKgi6g1TUq56247j6QvvFtYHloCkjCrEpGBvV54=", + "lastModified": 1743788974, + "narHash": "sha256-2LeVyQZI2wTkSzMLvnN/kJjXVWp4HCVUoq17Bv8TNTk=", "owner": "nix-community", "repo": "home-manager", - "rev": "1efd2503172016a6742c87b47b43ca2c8145607d", + "rev": "0f5908daf890c3d7e7052bef1d6deb0f2710aaa1", "type": "github" }, "original": { @@ -615,11 +615,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1743165127, - "narHash": "sha256-3tqo7xha/WDZN/WhjCM/hVRp9V8ROH3EvUYJhib4uc4=", + "lastModified": 1743809433, + "narHash": "sha256-tCOlE2zMXfd+KNG5ETr2VxhbniDMD7jBbD0JQhYBrlc=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "c93140a5f12a25f0a08b162caf31fe68fec62290", + "rev": "8ba20fcae124591718bddadd94c5e8c381d02097", "type": "github" }, "original": { @@ -641,11 +641,11 @@ ] }, "locked": { - "lastModified": 1738422629, - "narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=", + "lastModified": 1743549251, + "narHash": "sha256-yf+AXt0RkAkCyF6iSnJt6EJAnNG/l6qv70CVzhRP6Bg=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed", + "rev": "4ab17ccac08456cb5e00e8bd323de2efd30612be", "type": "github" }, "original": { @@ -794,11 +794,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1743062552, - "narHash": "sha256-JBb5cdHYMsb8+RBsOGwImFRAjmbxWeehRHg6MFEkquo=", + "lastModified": 1743624959, + "narHash": "sha256-xsSVHatubv6MFexuqZsYQJgjjQ1Mlwn+L8FtGGBhVDs=", "ref": "refs/heads/main", - "rev": "d9a162531542d8f7ad431fe9d6162871e5cffb9b", - "revCount": 344, + "rev": "0b1f2a97ef10cfd10669cbfbb3e45d1cab1073a0", + "revCount": 347, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -900,6 +900,25 @@ "type": "github" } }, + "jovian_2": { + "inputs": { + "nix-github-actions": "nix-github-actions_2", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1743660830, + "narHash": "sha256-ezJqPIuB25iMJeugwHKWnB1DjMvrdpkrPxE3TCULjGk=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "c7ade1c8fe2bdb70d38b3b9a97b874dcaf33b755", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -923,6 +942,28 @@ "type": "github" } }, + "nix-github-actions_2": { + "inputs": { + "nixpkgs": [ + "jovian", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1729697500, + "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1737929020, @@ -941,11 +982,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1742937945, - "narHash": "sha256-lWc+79eZRyvHp/SqMhHTMzZVhpxkRvthsP1Qx6UCq0E=", + "lastModified": 1743703532, + "narHash": "sha256-s1KLDALEeqy+ttrvqV3jx9mBZEvmthQErTVOAzbjHZs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d02d88f8de5b882ccdde0465d8fa2db3aa1169f7", + "rev": "bdb91860de2f719b57eef819b5617762f7120c70", "type": "github" }, "original": { @@ -957,11 +998,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1742937945, - "narHash": "sha256-lWc+79eZRyvHp/SqMhHTMzZVhpxkRvthsP1Qx6UCq0E=", + "lastModified": 1743703532, + "narHash": "sha256-s1KLDALEeqy+ttrvqV3jx9mBZEvmthQErTVOAzbjHZs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d02d88f8de5b882ccdde0465d8fa2db3aa1169f7", + "rev": "bdb91860de2f719b57eef819b5617762f7120c70", "type": "github" }, "original": { @@ -972,11 +1013,27 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1742889210, - "narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=", + "lastModified": 1743583204, + "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "698214a32beb4f4c8e3942372c694f40848b360d", + "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1743583204, + "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", "type": "github" }, "original": { @@ -985,7 +1042,7 @@ "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1736320768, "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", @@ -1001,7 +1058,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1741513245, "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", @@ -1096,7 +1153,8 @@ "hyprland": "hyprland", "hyprlock": "hyprlock", "hyprutils": "hyprutils", - "nixpkgs": "nixpkgs_2", + "jovian": "jovian_2", + "nixpkgs": "nixpkgs_3", "nixpkgs-stable": "nixpkgs-stable_2", "plasma-manager": "plasma-manager", "rust-overlay": "rust-overlay_2", @@ -1144,14 +1202,14 @@ }, "rust-overlay_2": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1743129211, - "narHash": "sha256-gE8t+U9miTwm2NYWS9dFY8H1/QB4ifaFDq1KdV9KEqo=", + "lastModified": 1743820323, + "narHash": "sha256-UXxJogXhPhBFaX4uxmMudcD/x3sEGFtoSc4busTcftY=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f93da1d26ba9963f34f94a6872b67a7939699543", + "rev": "b4734ce867252f92cdc7d25f8cc3b7cef153e703", "type": "github" }, "original": { @@ -1167,11 +1225,11 @@ ] }, "locked": { - "lastModified": 1741460499, - "narHash": "sha256-+162iWgwCKkkvrse9CBatsj4O0IyHj2SquBldXB3qsk=", + "lastModified": 1743867028, + "narHash": "sha256-a+Ehhui2yGJtldBbtR+3tePBbzV2tlMC2aaOEcKR9jg=", "ref": "refs/heads/main", - "rev": "a3a90b3f485e677a096199c04c6e1cf48fdc8464", - "revCount": 24, + "rev": "e31fbee6bc46eabaeebe418175995abaa62bc6eb", + "revCount": 25, "type": "git", "url": "file://path:/etc/nixos.secrets" }, @@ -1192,7 +1250,7 @@ "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "nur": "nur", "systems": "systems_5", "tinted-foot": "tinted-foot", @@ -1202,11 +1260,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1743075971, - "narHash": "sha256-8fSI6C19ZTcHgvoLK17wfEEVI08tgnZfSLgVe3E/22w=", + "lastModified": 1743775855, + "narHash": "sha256-ZhhiYvHlA9f/Ck1i76ilfapLS7abLPRlWJQRxJEDTnQ=", "owner": "danth", "repo": "stylix", - "rev": "2fb8321ea16c595e0208b22021ddaf1f471c634a", + "rev": "581fa67c818aaf91a1533149fb737d3e8c0949b8", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 38956a5..aeed020 100644 --- a/flake.nix +++ b/flake.nix @@ -22,7 +22,7 @@ allowUnfree = true; allowUnfreePredicate = (_: true); }; - overlays = [ inputs.rust-overlay.overlays.default inputs.emacs-overlay.overlays.default inputs.chaotic.overlays.default ]; + overlays = [ inputs.rust-overlay.overlays.default inputs.emacs-overlay.overlays.default inputs.chaotic.overlays.default inputs.jovian.overlays.default ]; }; pkgs-stable = import inputs.nixpkgs-stable { @@ -82,6 +82,8 @@ nixpkgs-stable.url = "nixpkgs/nixos-24.11"; chaotic.url = "github:chaotic-cx/nyx/5071a4037c634d41a57926521fef2e179abe3bd9"; + jovian.url = "github:Jovian-Experiments/Jovian-NixOS"; + home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index b41274b..e39f6e9 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -4,8 +4,8 @@ config = { systemSettings = { # users - users = [ "emmet" "corrina" ]; - adminUsers = [ "emmet" "corrina" ]; + users = [ "emmet" ]; + adminUsers = [ "emmet" ]; # hardware cachy.enable = true; @@ -53,16 +53,16 @@ name = "Emmet"; email = "emmet@librephoenix.com"; }; - users.users.corrina.description = "Corrina"; - home-manager.users.corrina.userSettings = { - name = "Corrina"; - email = ""; - stylix.theme = "spaceduck"; - }; - home-manager.users.corrina.services.nextcloud-client = { - enable = lib.mkForce false; - startInBackground = lib.mkForce false; - }; + #users.users.corrina.description = "Corrina"; + #home-manager.users.corrina.userSettings = { + # name = "Corrina"; + # email = ""; + # stylix.theme = "spaceduck"; + #}; + #home-manager.users.corrina.services.nextcloud-client = { + # enable = lib.mkForce false; + # startInBackground = lib.mkForce false; + #}; }; diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index 579bbd4..0202978 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -1,9 +1,13 @@ -{ lib, config, pkgs, ... }: +{ lib, config, pkgs, inputs, ... }: let cfg = config.systemSettings.gaming; in { + imports = [ + inputs.jovian.nixosModules.default + ]; + options = { systemSettings.gaming = { enable = lib.mkEnableOption "Enable Steam and games"; @@ -11,7 +15,7 @@ in { }; config = lib.mkIf cfg.enable { - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-unwrapped" ]; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-unwrapped" "steam-jupiter-unwrapped" ]; nixpkgs.config.packageOverrides = pkgs: { steam = pkgs.steam.override { extraPkgs = pkgs: with pkgs; [ @@ -63,6 +67,8 @@ in { programs.gamemode.enable = true; programs.gamescope.enable = true; programs.gamescope.capSysNice = false; + jovian.decky-loader.enable = true; + jovian.hardware.has.amd.gpu = true; programs.steam.gamescopeSession = { enable = true; env = { diff --git a/modules/system/hyprland/default.nix b/modules/system/hyprland/default.nix index 045ab03..f53978a 100644 --- a/modules/system/hyprland/default.nix +++ b/modules/system/hyprland/default.nix @@ -25,17 +25,17 @@ in # Necessary packages environment.systemPackages = with pkgs; [ - jq - (sddm-chili-theme.override { - themeConfig = { - background = config.stylix.image; - ScreenWidth = 1920; - ScreenHeight = 1080; - blur = true; - recursiveBlurLoops = 3; - recursiveBlurRadius = 5; - # TODO fix icons with svgs patched from stylix colors - };}) + jq + (sddm-astronaut.override { + themeConfig = { + # TODO Update Theme Config + # https://github.com/Keyitdev/sddm-astronaut-theme/blob/master/Themes/astronaut.conf + background = config.stylix.image; + ScreenWidth = 1920; + ScreenHeight = 1080; + blur = false; + }; + }) ]; # Display manager @@ -43,8 +43,16 @@ in enable = true; wayland.enable = true; enableHidpi = true; - theme = "chili"; - package = pkgs.libsForQt5.sddm; + theme = "sddm-astronaut-theme"; + package = pkgs.kdePackages.sddm; + extraPackages = with pkgs; [ + (sddm-astronaut.override { + themeConfig = { + background = config.stylix.image; + ScreenWidth = 1920; + ScreenHeight = 1080; + blur = false; + };})]; }; services.upower.enable = true; diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 4df3ea6..4d634b6 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -37,11 +37,11 @@ pushd ${config.systemSettings.dotfilesDir} &> /dev/null; nix flake update "''${@:2}"; popd &> /dev/null; - if [ "$#" -eq 1 ]; then - pushd ${config.systemSettings.secretsFlakeDir} &> /dev/null; - nix flake update; - popd &> /dev/null; - fi + #if [ "$#" -eq 1 ]; then + # pushd ${config.systemSettings.secretsFlakeDir} &> /dev/null; + # nix flake update; + # popd &> /dev/null; + #fi exit 0; elif [ "$1" = "pull" ]; then if [ "$#" -gt 1 ]; then diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index 82fe1bd..6dfddec 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -33,7 +33,7 @@ in { org-roam org-node org-node-fakeroam vterm vterm-toggle sudo-edit direnv - gdscript-mode + #gdscript-mode nix-mode python python-mode lsp-mode flycheck lsp-ui lsp-treemacs From 94d0c3fd2c7800b929e501bba4cd490a6d315150 Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 7 Apr 2025 10:05:14 -0500 Subject: [PATCH 182/317] Fix Cura --- modules/user/engineering/default.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/user/engineering/default.nix b/modules/user/engineering/default.nix index 2ef6398..8566727 100644 --- a/modules/user/engineering/default.nix +++ b/modules/user/engineering/default.nix @@ -16,6 +16,17 @@ in { kicad cura-appimage arduino-ide + graphviz ]; + xdg.desktopEntries.cura = lib.mkForce { + name = "Ultimaker Cura"; + genericName = "3D Printing Software"; + icon = "cura-icon"; + exec = "cura -platformtheme gtk3 %u"; + mimeType = [ "model/stl" "application/vnd.ms-3mfdocument" "application/prs.wavefront-obj" "image/bmp" "image/gif" "image/jpeg" "image/png" "text/x-gcode" "application/x-amf" "application/x-ply" "application/x-ctm" "model/vnd.collada+xml" "model/gltf-binary" "model/gltf+json" "model/vnd.collada+xml+zip" ]; + terminal = false; + type = "Application"; + prefersNonDefaultGPU = true; + }; }; } From f202d2011a4576a18596da8004757ee6db68e538 Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 7 Apr 2025 10:05:21 -0500 Subject: [PATCH 183/317] org node fixes --- modules/user/emacs/init.el | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 0837ac6..928d18b 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -877,11 +877,16 @@ (setq org-node-extra-id-dirs-exclude '("~/Notes/daily/")) (org-node-cache-mode) (org-node-complete-at-point-mode) + (setq org-node-datestamp-format "") + (setq org-node-slug-fn 'org-node-slugify-for-web) (setq org-roam-completion-everywhere nil) (setq org-node-filter-fn (lambda (node) (not (string-search "/daily/" (org-node-get-file node))))) + (setq org-node-renames-allowed-dirs '("~/Notes")) + (add-hook 'after-save-hook 'org-node-rename-file-by-title) (evil-define-key 'motion 'global (kbd "Ni") 'org-node-insert-link) + (evil-define-key 'motion 'global (kbd "Nt") 'org-node-add-tags) (evil-define-key 'motion 'global (kbd "NR") 'org-node-rewrite-links-ask)) (use-package org-node-fakeroam From acfd1fd6801369dea5702e282f5c48e676604dfa Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 12 Apr 2025 11:28:59 -0500 Subject: [PATCH 184/317] Some emacs fixes --- modules/user/emacs/init.el | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 928d18b..c9fe5f8 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -408,7 +408,6 @@ ;; Theme and modeline (use-package doom-themes - :after (org) :config (setq doom-themes-enable-bold t doom-themes-enable-italic t @@ -939,11 +938,9 @@ "l" 'dired-find-file " " 'nil) -(use-package vterm - :after evil) +(use-package vterm) (use-package vterm-toggle - :after vterm :config (setq vterm-toggle-fullscreen-p nil) (setq vterm-toggle-cd-auto-create-buffer nil) From a22643fda0dd13056940a2122f3ab1d25b7e7c71 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 12 Apr 2025 12:44:10 -0500 Subject: [PATCH 185/317] gdscript-mode fixed --- modules/user/emacs/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index 6dfddec..82fe1bd 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -33,7 +33,7 @@ in { org-roam org-node org-node-fakeroam vterm vterm-toggle sudo-edit direnv - #gdscript-mode + gdscript-mode nix-mode python python-mode lsp-mode flycheck lsp-ui lsp-treemacs From b6c786fa73eb54b30b5dcf43b4868c33e4aa9217 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 12 Apr 2025 12:44:31 -0500 Subject: [PATCH 186/317] updated system --- flake.lock | 132 ++++++++++++++++++++++++++--------------------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/flake.lock b/flake.lock index 3834658..0358c05 100644 --- a/flake.lock +++ b/flake.lock @@ -126,11 +126,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1743627497, - "narHash": "sha256-TT5aJA/O9SHAjSDcHpQ6MeB8ot1k2f8J7yuz04ssI9g=", + "lastModified": 1744473452, + "narHash": "sha256-kykkmVBzVI1tVLd28L8/gyBmO/RICCvOIcD0EgWXFlA=", "owner": "StevenBlack", "repo": "hosts", - "rev": "815487ebb90b4698aa0800ec4ba5302368bdf585", + "rev": "dabb0647f3975dd723da6743562d4eeb90793228", "type": "github" }, "original": { @@ -185,11 +185,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1743846340, - "narHash": "sha256-ZX+SirCnujuBuTftDXpL2IxzIO4UXGZdFiMy3pbHtRQ=", + "lastModified": 1744474896, + "narHash": "sha256-MBBJAEl6bunRmdvZzEksh2+q+YwA6/4FVPXIcM0XNjA=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "f529d87520a4ca4083b94c28a47b33b3d9593669", + "rev": "1fc1a56e3a6e56ef992f9d3097ba5d39830c7b7d", "type": "github" }, "original": { @@ -223,11 +223,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1741628778, - "narHash": "sha256-RsvHGNTmO2e/eVfgYK7g+eYEdwwh7SbZa+gZkT24MEA=", + "lastModified": 1743774811, + "narHash": "sha256-oiHLDHXq7ymsMVYSg92dD1OLnKLQoU/Gf2F1GoONLCE=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "5a81d390bb64afd4e81221749ec4bffcbeb5fa80", + "rev": "df53a7a31872faf5ca53dd0730038a62ec63ca9e", "type": "github" }, "original": { @@ -371,11 +371,11 @@ ] }, "locked": { - "lastModified": 1741379162, - "narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=", + "lastModified": 1742649964, + "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", "type": "github" }, "original": { @@ -473,11 +473,11 @@ ] }, "locked": { - "lastModified": 1743788974, - "narHash": "sha256-2LeVyQZI2wTkSzMLvnN/kJjXVWp4HCVUoq17Bv8TNTk=", + "lastModified": 1744400600, + "narHash": "sha256-qYhUgA98mhq1QK13r9qVY+sG1ri6FBgyp+GApX6wS20=", "owner": "nix-community", "repo": "home-manager", - "rev": "0f5908daf890c3d7e7052bef1d6deb0f2710aaa1", + "rev": "b74b22bb6167e8dff083ec6988c98798bf8954d3", "type": "github" }, "original": { @@ -495,11 +495,11 @@ ] }, "locked": { - "lastModified": 1741635347, - "narHash": "sha256-2aYfV44h18alHXopyfL4D9GsnpE5XlSVkp4MGe586VU=", + "lastModified": 1743869639, + "narHash": "sha256-Xhe3whfRW/Ay05z9m1EZ1/AkbV1yo0tm1CbgjtCi4rQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "7fb8678716c158642ac42f9ff7a18c0800fea551", + "rev": "d094c6763c6ddb860580e7d3b4201f8f496a6836", "type": "github" }, "original": { @@ -615,11 +615,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1743809433, - "narHash": "sha256-tCOlE2zMXfd+KNG5ETr2VxhbniDMD7jBbD0JQhYBrlc=", + "lastModified": 1744468993, + "narHash": "sha256-0GwJQeIbyjwasSCuHZqnP5WBv1hCe81TjYlGOKaPrKU=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "8ba20fcae124591718bddadd94c5e8c381d02097", + "rev": "65389700878640fa0e90419b9cf34f48e4186fca", "type": "github" }, "original": { @@ -641,11 +641,11 @@ ] }, "locked": { - "lastModified": 1743549251, - "narHash": "sha256-yf+AXt0RkAkCyF6iSnJt6EJAnNG/l6qv70CVzhRP6Bg=", + "lastModified": 1743714874, + "narHash": "sha256-yt8F7NhMFCFHUHy/lNjH/pjZyIDFNk52Q4tivQ31WFo=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "4ab17ccac08456cb5e00e8bd323de2efd30612be", + "rev": "3a5c2bda1c1a4e55cc1330c782547695a93f05b2", "type": "github" }, "original": { @@ -794,11 +794,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1743624959, - "narHash": "sha256-xsSVHatubv6MFexuqZsYQJgjjQ1Mlwn+L8FtGGBhVDs=", + "lastModified": 1744458473, + "narHash": "sha256-Z+MiLf2OdJ7DUf4Hx11KtlJFa5ZvMsi3Ymfs6gxPVtQ=", "ref": "refs/heads/main", - "rev": "0b1f2a97ef10cfd10669cbfbb3e45d1cab1073a0", - "revCount": 347, + "rev": "d9532962274602c2134e0a3240673a4add39ced6", + "revCount": 354, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -815,11 +815,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1742984269, - "narHash": "sha256-uz9FaCIbga/gQ5ZG1Hb4HVVjTWT1qjjCAFlCXiaefxg=", + "lastModified": 1743950287, + "narHash": "sha256-/6IAEWyb8gC/NKZElxiHChkouiUOrVYNq9YqG0Pzm4Y=", "ref": "refs/heads/main", - "rev": "7248194a2ce0106ae647b70d0526a96dc9d6ad60", - "revCount": 90, + "rev": "f2dc70e448b994cef627a157ee340135bd68fbc6", + "revCount": 92, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprutils.git" }, @@ -906,11 +906,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1743660830, - "narHash": "sha256-ezJqPIuB25iMJeugwHKWnB1DjMvrdpkrPxE3TCULjGk=", + "lastModified": 1744436521, + "narHash": "sha256-3Q3+H8YeuRRGXZqL0FgWAcPg2bX416M6NX/VpLGRw+c=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "c7ade1c8fe2bdb70d38b3b9a97b874dcaf33b755", + "rev": "1dd888cc60079910fba27eb43b959b633e3b466c", "type": "github" }, "original": { @@ -982,11 +982,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1743703532, - "narHash": "sha256-s1KLDALEeqy+ttrvqV3jx9mBZEvmthQErTVOAzbjHZs=", + "lastModified": 1744309437, + "narHash": "sha256-QZnNHM823am8apCqKSPdtnzPGTy2ZB4zIXOVoBp5+W0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bdb91860de2f719b57eef819b5617762f7120c70", + "rev": "f9ebe33a928b5d529c895202263a5ce46bdf12f7", "type": "github" }, "original": { @@ -998,11 +998,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1743703532, - "narHash": "sha256-s1KLDALEeqy+ttrvqV3jx9mBZEvmthQErTVOAzbjHZs=", + "lastModified": 1744309437, + "narHash": "sha256-QZnNHM823am8apCqKSPdtnzPGTy2ZB4zIXOVoBp5+W0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bdb91860de2f719b57eef819b5617762f7120c70", + "rev": "f9ebe33a928b5d529c895202263a5ce46bdf12f7", "type": "github" }, "original": { @@ -1029,11 +1029,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1743583204, - "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", + "lastModified": 1744232761, + "narHash": "sha256-gbl9hE39nQRpZaLjhWKmEu5ejtQsgI5TWYrIVVJn30U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", + "rev": "f675531bc7e6657c10a18b565cfebd8aa9e24c14", "type": "github" }, "original": { @@ -1060,11 +1060,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1741513245, - "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", + "lastModified": 1743583204, + "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1", + "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", "type": "github" }, "original": { @@ -1084,11 +1084,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1741693509, - "narHash": "sha256-emkxnsZstiJWmGACimyAYqIKz2Qz5We5h1oBVDyQjLw=", + "lastModified": 1743884191, + "narHash": "sha256-foVcginhVvjg8ZnTzY5wwMeZ4wjJ8yX66PW5kgyivPE=", "owner": "nix-community", "repo": "NUR", - "rev": "5479646b2574837f1899da78bdf9a48b75a9fb27", + "rev": "fde90f5f52e13eed110a0e53a2818a2b09e4d37c", "type": "github" }, "original": { @@ -1205,11 +1205,11 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1743820323, - "narHash": "sha256-UXxJogXhPhBFaX4uxmMudcD/x3sEGFtoSc4busTcftY=", + "lastModified": 1744425163, + "narHash": "sha256-iFcqIbyY25uhtRrQal5vFTxt0q59vDf++nY8du5hof4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b4734ce867252f92cdc7d25f8cc3b7cef153e703", + "rev": "4bb0b6dfc5bafa8b4e8dbe1170f051c437b2cb79", "type": "github" }, "original": { @@ -1225,11 +1225,11 @@ ] }, "locked": { - "lastModified": 1743867028, - "narHash": "sha256-a+Ehhui2yGJtldBbtR+3tePBbzV2tlMC2aaOEcKR9jg=", + "lastModified": 1744477978, + "narHash": "sha256-ibhuAVXGh+vaB2c6Kc3upOQ+5Nx1H37Ovdvy1hQ3R34=", "ref": "refs/heads/main", - "rev": "e31fbee6bc46eabaeebe418175995abaa62bc6eb", - "revCount": 25, + "rev": "35295ca27333e925d9518cb54079bfe0d6a607be", + "revCount": 26, "type": "git", "url": "file://path:/etc/nixos.secrets" }, @@ -1260,11 +1260,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1743775855, - "narHash": "sha256-ZhhiYvHlA9f/Ck1i76ilfapLS7abLPRlWJQRxJEDTnQ=", + "lastModified": 1744270948, + "narHash": "sha256-+1psY8uBaDdkqV/P3G40SzulPvUcb9VHisqQnDozC0U=", "owner": "danth", "repo": "stylix", - "rev": "581fa67c818aaf91a1533149fb737d3e8c0949b8", + "rev": "ce45f19e8acb43e5f02888d873d451e2f994546b", "type": "github" }, "original": { @@ -1385,11 +1385,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1741468895, - "narHash": "sha256-YKM1RJbL68Yp2vESBqeZQBjTETXo8mCTTzLZyckCfZk=", + "lastModified": 1742851696, + "narHash": "sha256-sR4K+OVFKeUOvNIqcCr5Br7NLxOBEwoAgsIyjsZmb8s=", "owner": "tinted-theming", "repo": "schemes", - "rev": "47c8c7726e98069cade5827e5fb2bfee02ce6991", + "rev": "c37771c4ae8ff1667e27ddcf24991ebeb94a4e77", "type": "github" }, "original": { @@ -1401,11 +1401,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1740877430, - "narHash": "sha256-zWcCXgdC4/owfH/eEXx26y5BLzTrefjtSLFHWVD5KxU=", + "lastModified": 1743296873, + "narHash": "sha256-8IQulrb1OBSxMwdKijO9fB70ON//V32dpK9Uioy7FzY=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "d48ee86394cbe45b112ba23ab63e33656090edb4", + "rev": "af5152c8d7546dfb4ff6df94080bf5ff54f64e3a", "type": "github" }, "original": { From 569c03e5401b03cfbf907dbf704ef40a9b24fb30 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 12 Apr 2025 12:54:31 -0500 Subject: [PATCH 187/317] trying gnome on duskfall --- hosts/duskfall/configuration.nix | 6 ++- modules/system/gnome/default.nix | 69 ++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 modules/system/gnome/default.nix diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index 2adf470..f1b7a42 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -10,7 +10,7 @@ # hardware cachy.enable = true; bluetooth.enable = true; - tlp.enable = true; + tlp.enable = false; printing.enable = true; # software @@ -22,6 +22,7 @@ # wm hyprland.enable = true; + gnome.enable = true; # dotfiles dotfilesDir = "/etc/nixos"; @@ -57,6 +58,9 @@ services.xserver.wacom.enable = true; services.xserver.videoDrivers = [ "i915" ]; + services.displayManager.execCmd = lib.mkForce "${pkgs.kdePackages.sddm}/bin/sddm"; + services.displayManager.defaultSession = "gnome"; + }; } diff --git a/modules/system/gnome/default.nix b/modules/system/gnome/default.nix new file mode 100644 index 0000000..914bb16 --- /dev/null +++ b/modules/system/gnome/default.nix @@ -0,0 +1,69 @@ +{ inputs, pkgs, config, lib, ... }: + +let + cfg = config.systemSettings.gnome; +in +{ + options = { + systemSettings.gnome = { + enable = lib.mkEnableOption "Enable gnome"; + }; + }; + + config = lib.mkIf cfg.enable { + services.xserver.enable = true; + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + environment.gnome.excludePackages = with pkgs; [ + orca + evince + # file-roller + geary + gnome-disk-utility + # seahorse + # sushi + # sysprof + # + # gnome-shell-extensions + # + # adwaita-icon-theme + # nixos-background-info + gnome-backgrounds + # gnome-bluetooth + # gnome-color-manager + # gnome-control-center + # gnome-shell-extensions + gnome-tour # GNOME Shell detects the .desktop file on first log-in. + gnome-user-docs + # glib # for gsettings program + # gnome-menus + # gtk3.out # for gtk-launch program + # xdg-user-dirs # Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/ + # xdg-user-dirs-gtk # Used to create the default bookmarks + # + baobab + epiphany + gnome-text-editor + gnome-calculator + gnome-calendar + gnome-characters + # gnome-clocks + gnome-console + gnome-contacts + gnome-font-viewer + gnome-logs + gnome-maps + gnome-music + # gnome-system-monitor + gnome-weather + # loupe + # nautilus + gnome-connections + simple-scan + snapshot + totem + yelp + gnome-software + ]; + }; +} From c6d5fe50f623a512eab11946a2f45114ff19c000 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 12 Apr 2025 16:42:04 -0500 Subject: [PATCH 188/317] jovian doesn't seem to work on my system :| --- flake.lock | 68 +++---------------------------- flake.nix | 4 +- modules/system/gaming/default.nix | 8 +--- 3 files changed, 7 insertions(+), 73 deletions(-) diff --git a/flake.lock b/flake.lock index 0358c05..e1a2f8a 100644 --- a/flake.lock +++ b/flake.lock @@ -900,25 +900,6 @@ "type": "github" } }, - "jovian_2": { - "inputs": { - "nix-github-actions": "nix-github-actions_2", - "nixpkgs": "nixpkgs_2" - }, - "locked": { - "lastModified": 1744436521, - "narHash": "sha256-3Q3+H8YeuRRGXZqL0FgWAcPg2bX416M6NX/VpLGRw+c=", - "owner": "Jovian-Experiments", - "repo": "Jovian-NixOS", - "rev": "1dd888cc60079910fba27eb43b959b633e3b466c", - "type": "github" - }, - "original": { - "owner": "Jovian-Experiments", - "repo": "Jovian-NixOS", - "type": "github" - } - }, "nix-github-actions": { "inputs": { "nixpkgs": [ @@ -942,28 +923,6 @@ "type": "github" } }, - "nix-github-actions_2": { - "inputs": { - "nixpkgs": [ - "jovian", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1729697500, - "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=", - "owner": "zhaofengli", - "repo": "nix-github-actions", - "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf", - "type": "github" - }, - "original": { - "owner": "zhaofengli", - "ref": "matrix-name", - "repo": "nix-github-actions", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1737929020, @@ -1012,22 +971,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1743583204, - "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1744232761, "narHash": "sha256-gbl9hE39nQRpZaLjhWKmEu5ejtQsgI5TWYrIVVJn30U=", @@ -1042,7 +985,7 @@ "type": "indirect" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { "lastModified": 1736320768, "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", @@ -1058,7 +1001,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { "lastModified": 1743583204, "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", @@ -1153,8 +1096,7 @@ "hyprland": "hyprland", "hyprlock": "hyprlock", "hyprutils": "hyprutils", - "jovian": "jovian_2", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_2", "plasma-manager": "plasma-manager", "rust-overlay": "rust-overlay_2", @@ -1202,7 +1144,7 @@ }, "rust-overlay_2": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1744425163, @@ -1250,7 +1192,7 @@ "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "nur": "nur", "systems": "systems_5", "tinted-foot": "tinted-foot", diff --git a/flake.nix b/flake.nix index aeed020..38956a5 100644 --- a/flake.nix +++ b/flake.nix @@ -22,7 +22,7 @@ allowUnfree = true; allowUnfreePredicate = (_: true); }; - overlays = [ inputs.rust-overlay.overlays.default inputs.emacs-overlay.overlays.default inputs.chaotic.overlays.default inputs.jovian.overlays.default ]; + overlays = [ inputs.rust-overlay.overlays.default inputs.emacs-overlay.overlays.default inputs.chaotic.overlays.default ]; }; pkgs-stable = import inputs.nixpkgs-stable { @@ -82,8 +82,6 @@ nixpkgs-stable.url = "nixpkgs/nixos-24.11"; chaotic.url = "github:chaotic-cx/nyx/5071a4037c634d41a57926521fef2e179abe3bd9"; - jovian.url = "github:Jovian-Experiments/Jovian-NixOS"; - home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index 0202978..1c5e3bb 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -4,10 +4,6 @@ let cfg = config.systemSettings.gaming; in { - imports = [ - inputs.jovian.nixosModules.default - ]; - options = { systemSettings.gaming = { enable = lib.mkEnableOption "Enable Steam and games"; @@ -15,7 +11,7 @@ in { }; config = lib.mkIf cfg.enable { - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-unwrapped" "steam-jupiter-unwrapped" ]; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-unwrapped" "steam-jupiter-unwrapped" "steamdeck-hw-theme" ]; nixpkgs.config.packageOverrides = pkgs: { steam = pkgs.steam.override { extraPkgs = pkgs: with pkgs; [ @@ -67,8 +63,6 @@ in { programs.gamemode.enable = true; programs.gamescope.enable = true; programs.gamescope.capSysNice = false; - jovian.decky-loader.enable = true; - jovian.hardware.has.amd.gpu = true; programs.steam.gamescopeSession = { enable = true; env = { From 56c66b47e529195bd2ae38c7e8689efa67ebd0a5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 15 Apr 2025 09:02:13 -0500 Subject: [PATCH 189/317] fixes for duskfall --- flake.lock | 8 ++++---- hosts/duskfall/configuration.nix | 4 ++-- hosts/duskfall/hardware-configuration.nix | 1 + modules/system/gnome/default.nix | 1 - 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/flake.lock b/flake.lock index e1a2f8a..ea1a322 100644 --- a/flake.lock +++ b/flake.lock @@ -1167,11 +1167,11 @@ ] }, "locked": { - "lastModified": 1744477978, - "narHash": "sha256-ibhuAVXGh+vaB2c6Kc3upOQ+5Nx1H37Ovdvy1hQ3R34=", + "lastModified": 1744677857, + "narHash": "sha256-rzB2asFlUmIgk4RYeE02VAp4rEVdgvkYz/uI4nrPr6c=", "ref": "refs/heads/main", - "rev": "35295ca27333e925d9518cb54079bfe0d6a607be", - "revCount": 26, + "rev": "1c92caae52da290404011b17491e91f93c4fbb47", + "revCount": 28, "type": "git", "url": "file://path:/etc/nixos.secrets" }, diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index f1b7a42..9f9891c 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -4,7 +4,7 @@ config = { systemSettings = { # users - users = [ "emmet" ]; + users = [ "emmet" "ignatius" ]; adminUsers = [ "emmet" ]; # hardware @@ -51,6 +51,7 @@ name = "Emmet"; email = "emmet@librephoenix.com"; }; + users.users.ignatius.description = "Ignatius"; environment.systemPackages = with pkgs; [ libwacom @@ -58,7 +59,6 @@ services.xserver.wacom.enable = true; services.xserver.videoDrivers = [ "i915" ]; - services.displayManager.execCmd = lib.mkForce "${pkgs.kdePackages.sddm}/bin/sddm"; services.displayManager.defaultSession = "gnome"; }; diff --git a/hosts/duskfall/hardware-configuration.nix b/hosts/duskfall/hardware-configuration.nix index fe0733f..cf0302e 100644 --- a/hosts/duskfall/hardware-configuration.nix +++ b/hosts/duskfall/hardware-configuration.nix @@ -39,6 +39,7 @@ boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; boot.initrd.kernelModules = [ "i915" ]; boot.kernelModules = [ "kvm-intel" ]; + boot.kernelParams = [ "psmouse.synaptics_intertouch=0" ]; boot.extraModulePackages = [ ]; fileSystems."/" = diff --git a/modules/system/gnome/default.nix b/modules/system/gnome/default.nix index 914bb16..7b42e48 100644 --- a/modules/system/gnome/default.nix +++ b/modules/system/gnome/default.nix @@ -12,7 +12,6 @@ in config = lib.mkIf cfg.enable { services.xserver.enable = true; - services.xserver.displayManager.gdm.enable = true; services.xserver.desktopManager.gnome.enable = true; environment.gnome.excludePackages = with pkgs; [ orca From 1cd425c2b1f270ab89b988fa96f39bb0fe32b918 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 15 Apr 2025 09:03:54 -0500 Subject: [PATCH 190/317] emacs fixes --- modules/user/emacs/init.el | 126 +++++++++++++++++++------------------ 1 file changed, 66 insertions(+), 60 deletions(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index c9fe5f8..f415df6 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -790,67 +790,73 @@ (interactive "p") (dotimes (_ count) (+org--insert-item 'above))) - ;;;###autoload - (defun +org-indent-maybe-h () - "Indent the current item (header or item), if possible. - Made for `org-tab-first-hook' in evil-mode." - (interactive) - (cond ((not (and (bound-and-true-p evil-local-mode) - (evil-insert-state-p))) - nil) - ((and (bound-and-true-p org-cdlatex-mode) - (or (org-inside-LaTeX-fragment-p) - (org-inside-latex-macro-p))) - nil) - ((org-at-item-p) - (org-indent-item-tree) - t) - ((org-at-heading-p) - (ignore-errors - (org-demote) - t) - ((org-in-src-block-p t) - (save-window-excursion - (org-babel-do-in-edit-buffer - (call-interactively #'indent-for-tab-command))) - t) - ((and (save-excursion - (skip-chars-backward " \t") - (bolp)) - (org-in-subtree-not-table-p)) - (call-interactively #'tab-to-tab-stop) - t)))) +(defun +org-indent-maybe-h () + "Indent the current item (header or item), if possible. +Made for `org-tab-first-hook' in evil-mode." + (interactive) + (cond ((not (and (bound-and-true-p evil-local-mode) + (evil-insert-state-p))) + nil) + ((and (bound-and-true-p org-cdlatex-mode) + (or (org-inside-LaTeX-fragment-p) + (org-inside-latex-macro-p))) + nil) + ((org-at-item-p) + (if (eq this-command 'org-shifttab) + (org-outdent-item-tree) + (org-indent-item-tree)) + t) + ((org-at-heading-p) + (ignore-errors + (if (eq this-command 'org-shifttab) + (org-promote) + (org-demote))) + t) + ((org-in-src-block-p t) + (save-window-excursion + (org-babel-do-in-edit-buffer + (call-interactively #'indent-for-tab-command))) + t) + ((and (save-excursion + (skip-chars-backward " \t") + (bolp)) + (org-in-subtree-not-table-p)) + (call-interactively #'tab-to-tab-stop) + t))) - ;;;###autoload - (defun +org-reverse-indent-maybe-h () - "Indent the current item (header or item), if possible. - Made for `org-tab-first-hook' in evil-mode." - (interactive) - (cond ((not (and (bound-and-true-p evil-local-mode) - (evil-insert-state-p))) - nil) - ((and (bound-and-true-p org-cdlatex-mode) - (or (org-inside-LaTeX-fragment-p) - (org-inside-latex-macro-p))) - nil) - ((org-at-item-p) - (org-outdent-item-tree) - t) - ((org-at-heading-p) - (ignore-errors - (org-promote) - t) - ((org-in-src-block-p t) - (save-window-excursion - (org-babel-do-in-edit-buffer - (call-interactively #'indent-for-tab-command))) - t) - ((and (save-excursion - (skip-chars-backward " \t") - (bolp)) - (org-in-subtree-not-table-p)) - (call-interactively #'tab-to-tab-stop) - t))))) +(defun +org-reverse-indent-maybe-h () + "Indent the current item (header or item), if possible. +Made for `org-tab-first-hook' in evil-mode." + (interactive) + (cond ((not (and (bound-and-true-p evil-local-mode) + (evil-insert-state-p))) + nil) + ((and (bound-and-true-p org-cdlatex-mode) + (or (org-inside-LaTeX-fragment-p) + (org-inside-latex-macro-p))) + nil) + ((org-at-item-p) + (if (eq this-command 'org-shifttab) + (org-outdent-item-tree) + (org-outdent-item-tree)) + t) + ((org-at-heading-p) + (ignore-errors + (if (eq this-command 'org-shifttab) + (org-promote) + (org-promote))) + t) + ((org-in-src-block-p t) + (save-window-excursion + (org-babel-do-in-edit-buffer + (call-interactively #'indent-for-tab-command))) + t) + ((and (save-excursion + (skip-chars-forward " \t") + (bolp)) + (org-in-subtree-not-table-p)) + (call-interactively #'tab-to-tab-stop) + t)))) (use-package org-roam :after (org) From c28546a0c860d57967f0e744ad28b63b4530f07a Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 17 Apr 2025 10:24:48 -0500 Subject: [PATCH 191/317] Updated system --- flake.lock | 78 +++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/flake.lock b/flake.lock index ea1a322..6a8be2a 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1743265529, - "narHash": "sha256-QbjP15/2N+VJl0b5jxrrTc+VOt39aU4XrDvtP0Lz5ik=", + "lastModified": 1744289235, + "narHash": "sha256-ZFkHLdimtFzQACsVVyZkZlfYdj4iNy3PkzXfrwmlse8=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "1d2dbd72c2bbaceab031c592d4810f744741d203", + "rev": "c8282f4982b56dfa5e9b9f659809da93f8d37e7a", "type": "github" }, "original": { @@ -185,11 +185,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1744474896, - "narHash": "sha256-MBBJAEl6bunRmdvZzEksh2+q+YwA6/4FVPXIcM0XNjA=", + "lastModified": 1744856187, + "narHash": "sha256-uc2ds4xZrg3f8VHcyZzyF2s1tvLfysG9dxHTNRmTyvY=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "1fc1a56e3a6e56ef992f9d3097ba5d39830c7b7d", + "rev": "896bc4ee7494db74a921559c2fc2771789f9296b", "type": "github" }, "original": { @@ -473,11 +473,11 @@ ] }, "locked": { - "lastModified": 1744400600, - "narHash": "sha256-qYhUgA98mhq1QK13r9qVY+sG1ri6FBgyp+GApX6wS20=", + "lastModified": 1744833442, + "narHash": "sha256-BBMWW2m64Grcc5FlXz74+vdkUyCJOfUGnl+VcS/4x44=", "owner": "nix-community", "repo": "home-manager", - "rev": "b74b22bb6167e8dff083ec6988c98798bf8954d3", + "rev": "c6b75d69b6994ba68ec281bd36faebcc56097800", "type": "github" }, "original": { @@ -553,11 +553,11 @@ ] }, "locked": { - "lastModified": 1739049071, - "narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=", + "lastModified": 1743953322, + "narHash": "sha256-prQ5JKopXtzCMX2eT3dXbaVvGmzjMRE2bXStQDdazpM=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73", + "rev": "9d7f2687c84c729afbc3b13f7937655570f2978d", "type": "github" }, "original": { @@ -615,11 +615,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1744468993, - "narHash": "sha256-0GwJQeIbyjwasSCuHZqnP5WBv1hCe81TjYlGOKaPrKU=", + "lastModified": 1744849150, + "narHash": "sha256-eaKqF4Oc7atN7Y2yTTeAOLN05q+G2YY0597ukgAD2Cs=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "65389700878640fa0e90419b9cf34f48e4186fca", + "rev": "225e13c3cc83308175f0a9aa18cfa31324155034", "type": "github" }, "original": { @@ -738,11 +738,11 @@ ] }, "locked": { - "lastModified": 1741191527, - "narHash": "sha256-kM+11Nch47Xwfgtw2EpRitJuORy4miwoMuRi5tyMBDY=", + "lastModified": 1744468525, + "narHash": "sha256-9HySx+EtsbbKlZDlY+naqqOV679VdxP6x6fP3wxDXJk=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "72df3861f1197e41b078faa3e38eedd60e00018d", + "rev": "f1000c54d266e6e4e9d646df0774fac5b8a652df", "type": "github" }, "original": { @@ -941,11 +941,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1744309437, - "narHash": "sha256-QZnNHM823am8apCqKSPdtnzPGTy2ZB4zIXOVoBp5+W0=", + "lastModified": 1744440957, + "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f9ebe33a928b5d529c895202263a5ce46bdf12f7", + "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "type": "github" }, "original": { @@ -957,11 +957,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1744309437, - "narHash": "sha256-QZnNHM823am8apCqKSPdtnzPGTy2ZB4zIXOVoBp5+W0=", + "lastModified": 1744440957, + "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f9ebe33a928b5d529c895202263a5ce46bdf12f7", + "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "type": "github" }, "original": { @@ -972,11 +972,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1744232761, - "narHash": "sha256-gbl9hE39nQRpZaLjhWKmEu5ejtQsgI5TWYrIVVJn30U=", + "lastModified": 1744463964, + "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f675531bc7e6657c10a18b565cfebd8aa9e24c14", + "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", "type": "github" }, "original": { @@ -987,11 +987,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1736320768, - "narHash": "sha256-nIYdTAiKIGnFNugbomgBJR+Xv5F1ZQU+HfaBqJKroC0=", + "lastModified": 1744536153, + "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4bc9c909d9ac828a039f288cf872d16d38185db8", + "rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", "type": "github" }, "original": { @@ -1147,11 +1147,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1744425163, - "narHash": "sha256-iFcqIbyY25uhtRrQal5vFTxt0q59vDf++nY8du5hof4=", + "lastModified": 1744857263, + "narHash": "sha256-M4X/CnquHozzgwDk+CbFb8Sb4rSGJttfNOKcpRwziis=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "4bb0b6dfc5bafa8b4e8dbe1170f051c437b2cb79", + "rev": "9f3d63d569536cd661a4adcf697e32eb08d61e31", "type": "github" }, "original": { @@ -1202,11 +1202,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1744270948, - "narHash": "sha256-+1psY8uBaDdkqV/P3G40SzulPvUcb9VHisqQnDozC0U=", + "lastModified": 1744668092, + "narHash": "sha256-XDmpI3ywMkypsHKRF2am6BzZ5OjwpQMulAe8L87Ek8U=", "owner": "danth", "repo": "stylix", - "rev": "ce45f19e8acb43e5f02888d873d451e2f994546b", + "rev": "38aff11a7097f4da6b95d4c4d2c0438f25a08d52", "type": "github" }, "original": { @@ -1422,11 +1422,11 @@ ] }, "locked": { - "lastModified": 1741934139, - "narHash": "sha256-ZhTcTH9FoeAtbPfWGrhkH7RjLJZ7GeF18nygLAMR+WE=", + "lastModified": 1744644585, + "narHash": "sha256-p0D/e4J6Sv6GSb+9u8OQcVHSE2gPNYB5ygIfGDyEiXQ=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "150b0b6f52bb422a1b232a53698606fe0320dde0", + "rev": "be6771e754345f18244fb00aae5c9e5ab21ccc26", "type": "github" }, "original": { From 31e2f0807900529db23c47a97fd9f1fd580d1bf5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 17 Apr 2025 10:24:54 -0500 Subject: [PATCH 192/317] Trying yazi instead of ranger --- hosts/snowfire/home.nix | 1 + modules/user/yazi/default.nix | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 modules/user/yazi/default.nix diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index ac5665c..f67ccff 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -17,6 +17,7 @@ brave.enable = true; editor = "emacs"; ranger.enable = true; + yazi.enable = true; git.enable = true; engineering.enable = true; art.enable = true; diff --git a/modules/user/yazi/default.nix b/modules/user/yazi/default.nix new file mode 100644 index 0000000..a5b7dcc --- /dev/null +++ b/modules/user/yazi/default.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ...}: + +let + cfg = config.userSettings.yazi; +in { + options = { + userSettings.yazi = { + enable = lib.mkEnableOption "Enable yazi TUI file manager"; + }; + }; + + config = lib.mkIf cfg.enable { + programs.yazi = { + enable = true; + enableZshIntegration = true; + keymap.manager.prepend_keymap = + [ + { run = "shell ' \"$0\"' --cursor=0 --interactive"; on = [ "@" ]; } + ]; + }; + }; +} From 99435866a4460117f0da7add4fa9d6cc5fc098b5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 17 Apr 2025 11:10:21 -0500 Subject: [PATCH 193/317] Updated system --- flake.lock | 55 +++++++++++------------ flake.nix | 2 +- hosts/snowfire/hardware-configuration.nix | 2 +- modules/system/gaming/default.nix | 1 + 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/flake.lock b/flake.lock index 6a8be2a..169c1d8 100644 --- a/flake.lock +++ b/flake.lock @@ -126,11 +126,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1744473452, - "narHash": "sha256-kykkmVBzVI1tVLd28L8/gyBmO/RICCvOIcD0EgWXFlA=", + "lastModified": 1744900124, + "narHash": "sha256-2l+0DOQkro1XqokQCQYJVy0RLULxLvRdfd+KLvx2E+I=", "owner": "StevenBlack", "repo": "hosts", - "rev": "dabb0647f3975dd723da6743562d4eeb90793228", + "rev": "8c73d7423883d1e9992eb74aabc17f0780b65c8b", "type": "github" }, "original": { @@ -148,17 +148,16 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1737929355, - "narHash": "sha256-3HXBHEx9U229gLBrz2A8vrPbUikfaFsR3XOo8I2fGp8=", + "lastModified": 1744664754, + "narHash": "sha256-xfHUAfPVYp+zD0sOg9KMNEHBj8O06G7xHgDgNQ2Q1lw=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "5071a4037c634d41a57926521fef2e179abe3bd9", + "rev": "1039f51626c6079da063cda3116e7ae0daf2f909", "type": "github" }, "original": { "owner": "chaotic-cx", "repo": "nyx", - "rev": "5071a4037c634d41a57926521fef2e179abe3bd9", "type": "github" } }, @@ -207,11 +206,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1737268357, - "narHash": "sha256-J3At8JDKpQGDeDUcz1eh0h5yFwNH7fPfm+N95TxiOq4=", + "lastModified": 1744618085, + "narHash": "sha256-+VdhZsIiIDtyOL88c4U/Os1PsCMLOCyScIeWL4hxJRM=", "owner": "nix-community", "repo": "fenix", - "rev": "f9662e6ea6020671e1e17102bd20d6692bb38aba", + "rev": "a85d390a5607188dca2dbc39b5b37571651d69ce", "type": "github" }, "original": { @@ -453,11 +452,11 @@ ] }, "locked": { - "lastModified": 1737221749, - "narHash": "sha256-igllW0yG+UbetvhT11jnt9RppSHXYgMykYhZJeqfHs0=", + "lastModified": 1744659400, + "narHash": "sha256-q0wwsR/hvOjj1G8ogdudX5cU0IE/Vgvgjo9g9OpQv5U=", "owner": "nix-community", "repo": "home-manager", - "rev": "97d7946b5e107dd03cc82f21165251d4e0159655", + "rev": "5a096a8822cb98584c5dc4f2616dcd5ed394bfd7", "type": "github" }, "original": { @@ -473,11 +472,11 @@ ] }, "locked": { - "lastModified": 1744833442, - "narHash": "sha256-BBMWW2m64Grcc5FlXz74+vdkUyCJOfUGnl+VcS/4x44=", + "lastModified": 1744902080, + "narHash": "sha256-px7OEMQYhS9StY3sTYYeM/jJspk6SXgoPU7OmOSx+1c=", "owner": "nix-community", "repo": "home-manager", - "rev": "c6b75d69b6994ba68ec281bd36faebcc56097800", + "rev": "2c71aae678c03a39c2542e136b87bd040ae1b3cb", "type": "github" }, "original": { @@ -887,11 +886,11 @@ ] }, "locked": { - "lastModified": 1737126697, - "narHash": "sha256-k1YhjONkiKBHzbjNy4ZsjysBac5UJSolCVq9cTKLeKM=", + "lastModified": 1744648917, + "narHash": "sha256-xtBc0YMCP/x3+3iqnfdd4d9qEHvxQsGHamhhlegsGFE=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "27a0ddac1a14e10ba98530f59db728951495f2ce", + "rev": "66c4c9dccd26330ebb0e91aa6ba89ca8835dfdc5", "type": "github" }, "original": { @@ -925,16 +924,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737929020, - "narHash": "sha256-UC9ARAC8mRxQozZ6eO+KofV2Dd7KShl6X8XZz/ecNHg=", - "owner": "PedroHLC", + "lastModified": 1744463964, + "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "b200ab4d4c4bc99681909139b900f10ad70bc02b", + "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", "type": "github" }, "original": { - "owner": "PedroHLC", - "ref": "revert-376078", + "owner": "NixOS", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -1107,11 +1106,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1737215993, - "narHash": "sha256-W8xioeq+h9dzGvtXPlQAn2nXtgNDN6C8uA1/9F2JP5I=", + "lastModified": 1744539868, + "narHash": "sha256-NPUnfDAwLD69aKetxjC7lV5ysrvs1IKC0Sy4Zai10Mw=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "248bd511aee2c1c1cb2d5314649521d6d93b854a", + "rev": "8365cf853e791c93fa8bc924f031f11949bb1a3c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 38956a5..a5981e3 100644 --- a/flake.nix +++ b/flake.nix @@ -80,7 +80,7 @@ inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; nixpkgs-stable.url = "nixpkgs/nixos-24.11"; - chaotic.url = "github:chaotic-cx/nyx/5071a4037c634d41a57926521fef2e179abe3bd9"; + chaotic.url = "github:chaotic-cx/nyx"; home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/hosts/snowfire/hardware-configuration.nix b/hosts/snowfire/hardware-configuration.nix index 7cb01af..caab46d 100644 --- a/hosts/snowfire/hardware-configuration.nix +++ b/hosts/snowfire/hardware-configuration.nix @@ -15,7 +15,7 @@ boot.kernelModules = [ "kvm-amd" "radeon" "zenpower" "8812au" ]; boot.blacklistedKernelModules = [ "k10temp" ]; boot.kernelParams = [ "amd_pstate=active" "acpi_osi=Linux" "acpi_wake=USB0" ]; - boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower rtl8812au ]; + boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ]; hardware.opengl.enable = true; hardware.opengl.extraPackages = [ pkgs.rocmPackages.clr.icd ]; hardware.opengl.extraPackages32 = [ ]; diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index 1c5e3bb..3f27829 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -25,6 +25,7 @@ in { stdenv.cc.cc.lib libkrb5 keyutils + gamemode ]; }; }; From 7c59e8ba927e4360479d1ed8ffaf933ecfba2b62 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 18 Apr 2025 09:56:25 -0500 Subject: [PATCH 194/317] Basic gnome customizations --- hosts/duskfall/home.nix | 1 + modules/user/gnome/default.nix | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 modules/user/gnome/default.nix diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index c33b00a..4a71c25 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -29,6 +29,7 @@ # wm hyprland.enable = true; + gnome.enable = true; # style stylix.enable = true; diff --git a/modules/user/gnome/default.nix b/modules/user/gnome/default.nix new file mode 100644 index 0000000..e8d699b --- /dev/null +++ b/modules/user/gnome/default.nix @@ -0,0 +1,22 @@ +{ inputs, pkgs, config, lib, ... }: + +let + cfg = config.userSettings.gnome; +in +{ + options = { + systemSettings.gnome = { + enable = lib.mkEnableOption "Enable gnome config"; + }; + }; + + config = lib.mkIf cfg.enable { + stylix.targets.gnome.enable = true; + stylix.targets.gtk.enable = true; + dconf.settings = { + "org/gnome/settings-daemon/plugins/power" = { + ambient-enabled = false; + }; + }; + }; +} From 34d644aff0f1c81f57504c06b744cf32c0289142 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 18 Apr 2025 09:58:07 -0500 Subject: [PATCH 195/317] Typo --- modules/user/gnome/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/user/gnome/default.nix b/modules/user/gnome/default.nix index e8d699b..d1278fa 100644 --- a/modules/user/gnome/default.nix +++ b/modules/user/gnome/default.nix @@ -5,7 +5,7 @@ let in { options = { - systemSettings.gnome = { + userSettings.gnome = { enable = lib.mkEnableOption "Enable gnome config"; }; }; From 37c3ad4ef948edaf13610707bbfb02b00ff8cc51 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 18 Apr 2025 10:26:56 -0500 Subject: [PATCH 196/317] Fix intel iGPUs --- hosts/duskfall/hardware-configuration.nix | 1 + hosts/zenith/hardware-configuration.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/hosts/duskfall/hardware-configuration.nix b/hosts/duskfall/hardware-configuration.nix index cf0302e..16ec566 100644 --- a/hosts/duskfall/hardware-configuration.nix +++ b/hosts/duskfall/hardware-configuration.nix @@ -16,6 +16,7 @@ enable = lib.mkDefault true; enable32Bit = lib.mkDefault true; extraPackages = with pkgs; [ + vpl-gpu-rt intel-media-driver intel-vaapi-driver vaapiIntel diff --git a/hosts/zenith/hardware-configuration.nix b/hosts/zenith/hardware-configuration.nix index 83d435a..0aac4c5 100644 --- a/hosts/zenith/hardware-configuration.nix +++ b/hosts/zenith/hardware-configuration.nix @@ -21,6 +21,7 @@ enable = lib.mkDefault true; enable32Bit = lib.mkDefault true; extraPackages = with pkgs; [ + vpl-gpu-rt intel-media-driver intel-vaapi-driver vaapiIntel From 9c132baedb2098b8b272254d57d48a18d24d1276 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 18 Apr 2025 10:27:07 -0500 Subject: [PATCH 197/317] More theming --- hosts/duskfall/configuration.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index 9f9891c..ee482d8 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -52,6 +52,9 @@ email = "emmet@librephoenix.com"; }; users.users.ignatius.description = "Ignatius"; + home-manager.users.ignatius.userSettings = { + stylix.theme = "woodland"; + }; environment.systemPackages = with pkgs; [ libwacom From 53a87c181591672c3abb8075f4d84ebff0deb851 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 25 Apr 2025 11:10:27 -0500 Subject: [PATCH 198/317] makehuman is kinda cool --- modules/user/art/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/user/art/default.nix b/modules/user/art/default.nix index 02d8158..d3fa853 100644 --- a/modules/user/art/default.nix +++ b/modules/user/art/default.nix @@ -16,6 +16,7 @@ in { pinta inkscape libresprite + makehuman ]; userSettings.blender.enable = true; }; From 0812e99783856e8a2deb5e9c73f347107fd04115 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 25 Apr 2025 11:12:41 -0500 Subject: [PATCH 199/317] gnome is nice to have around --- hosts/snowfire/configuration.nix | 1 + hosts/zenith/configuration.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index e39f6e9..c74cebc 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -23,6 +23,7 @@ # wm hyprland.enable = true; + gnome.enable = true; # dotfiles dotfilesDir = "/etc/nixos"; diff --git a/hosts/zenith/configuration.nix b/hosts/zenith/configuration.nix index 54b099b..a0a6339 100644 --- a/hosts/zenith/configuration.nix +++ b/hosts/zenith/configuration.nix @@ -22,6 +22,7 @@ # wm hyprland.enable = true; + gnome.enable = true; # dotfiles dotfilesDir = "/etc/nixos"; From 909764d6a94da4ac6d942016ee2781592d7bf32b Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 25 Apr 2025 11:12:59 -0500 Subject: [PATCH 200/317] updated system --- flake.lock | 164 ++++++++++++++++++++++++++--------------------------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/flake.lock b/flake.lock index 169c1d8..f988df4 100644 --- a/flake.lock +++ b/flake.lock @@ -61,11 +61,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1732200724, - "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", + "lastModified": 1745523430, + "narHash": "sha256-EAYWV+kXbwsH+8G/8UtmcunDeKwLwSOyfcmzZUkWE/c=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "153d52373b0fb2d343592871009a286ec8837aec", + "rev": "58bfe2553d937d8af0564f79d5b950afbef69717", "type": "github" }, "original": { @@ -126,11 +126,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1744900124, - "narHash": "sha256-2l+0DOQkro1XqokQCQYJVy0RLULxLvRdfd+KLvx2E+I=", + "lastModified": 1745371843, + "narHash": "sha256-FSZzTEQrjY4InqHo1wPbnqqwKHpbfV1Y5JJsYR/c6VU=", "owner": "StevenBlack", "repo": "hosts", - "rev": "8c73d7423883d1e9992eb74aabc17f0780b65c8b", + "rev": "5450d4466d89d08adb32e08c9698f0aebf1bc6e2", "type": "github" }, "original": { @@ -148,11 +148,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1744664754, - "narHash": "sha256-xfHUAfPVYp+zD0sOg9KMNEHBj8O06G7xHgDgNQ2Q1lw=", + "lastModified": 1745593382, + "narHash": "sha256-0+tSl7KY+SiuNZWRnZ/irHblkAdxklfoWGsOOU2BChk=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "1039f51626c6079da063cda3116e7ae0daf2f909", + "rev": "0006aeb72dcf453aac96d37c50cce5a93346a147", "type": "github" }, "original": { @@ -184,11 +184,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1744856187, - "narHash": "sha256-uc2ds4xZrg3f8VHcyZzyF2s1tvLfysG9dxHTNRmTyvY=", + "lastModified": 1745547387, + "narHash": "sha256-YfDZB7jXdvsMzoIBCUgvu8mdAY2gnOBbR0YhRn1gn8I=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "896bc4ee7494db74a921559c2fc2771789f9296b", + "rev": "7e630e5c5e5b860f89d05a64129e51f342766b70", "type": "github" }, "original": { @@ -206,11 +206,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1744618085, - "narHash": "sha256-+VdhZsIiIDtyOL88c4U/Os1PsCMLOCyScIeWL4hxJRM=", + "lastModified": 1745563104, + "narHash": "sha256-YXpJiegajPiUooLCmKtaA3x63oUXTw/C/9c80Vd6Czw=", "owner": "nix-community", "repo": "fenix", - "rev": "a85d390a5607188dca2dbc39b5b37571651d69ce", + "rev": "b4a3938f8161678897983c6fa2461eb5ce54371b", "type": "github" }, "original": { @@ -222,11 +222,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1743774811, - "narHash": "sha256-oiHLDHXq7ymsMVYSg92dD1OLnKLQoU/Gf2F1GoONLCE=", + "lastModified": 1744642301, + "narHash": "sha256-5A6LL7T0lttn1vrKsNOKUk9V0ittdW0VEqh6AtefxJ4=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "df53a7a31872faf5ca53dd0730038a62ec63ca9e", + "rev": "59e3de00f01e5adb851d824cf7911bd90c31083a", "type": "github" }, "original": { @@ -452,11 +452,11 @@ ] }, "locked": { - "lastModified": 1744659400, - "narHash": "sha256-q0wwsR/hvOjj1G8ogdudX5cU0IE/Vgvgjo9g9OpQv5U=", + "lastModified": 1745555634, + "narHash": "sha256-lhVyVn1utb2UVTbyKJ6mfKB7wLTjrj14OlebvO0WU2s=", "owner": "nix-community", "repo": "home-manager", - "rev": "5a096a8822cb98584c5dc4f2616dcd5ed394bfd7", + "rev": "98f4fef7fd7b4a77245db12e33616023162bc6d9", "type": "github" }, "original": { @@ -472,11 +472,11 @@ ] }, "locked": { - "lastModified": 1744902080, - "narHash": "sha256-px7OEMQYhS9StY3sTYYeM/jJspk6SXgoPU7OmOSx+1c=", + "lastModified": 1745593878, + "narHash": "sha256-Rq5qNnUWuhQTqzXDcminu7Z1FPSB1wUaKIEfPTyZkAs=", "owner": "nix-community", "repo": "home-manager", - "rev": "2c71aae678c03a39c2542e136b87bd040ae1b3cb", + "rev": "542078066b1a99cdc5d5fce1365f98b847ca0b5a", "type": "github" }, "original": { @@ -494,11 +494,11 @@ ] }, "locked": { - "lastModified": 1743869639, - "narHash": "sha256-Xhe3whfRW/Ay05z9m1EZ1/AkbV1yo0tm1CbgjtCi4rQ=", + "lastModified": 1745439012, + "narHash": "sha256-TwbdiH28QK7Da2JQTqFHdb+UCJq6QbF2mtf+RxHVzEA=", "owner": "nix-community", "repo": "home-manager", - "rev": "d094c6763c6ddb860580e7d3b4201f8f496a6836", + "rev": "d31710fb2cd536b1966fee2af74e99a0816a61a8", "type": "github" }, "original": { @@ -552,11 +552,11 @@ ] }, "locked": { - "lastModified": 1743953322, - "narHash": "sha256-prQ5JKopXtzCMX2eT3dXbaVvGmzjMRE2bXStQDdazpM=", + "lastModified": 1745015490, + "narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "9d7f2687c84c729afbc3b13f7937655570f2978d", + "rev": "60754910946b4e2dc1377b967b7156cb989c5873", "type": "github" }, "original": { @@ -581,11 +581,11 @@ ] }, "locked": { - "lastModified": 1737634889, - "narHash": "sha256-9JZE3KxcXOqZH9zs3UeadngDiK/yIACTiAR8HSA/TNI=", + "lastModified": 1743953322, + "narHash": "sha256-prQ5JKopXtzCMX2eT3dXbaVvGmzjMRE2bXStQDdazpM=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "0d77b4895ad5f1bb3b0ee43103a5246c58b65591", + "rev": "9d7f2687c84c729afbc3b13f7937655570f2978d", "type": "github" }, "original": { @@ -614,11 +614,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1744849150, - "narHash": "sha256-eaKqF4Oc7atN7Y2yTTeAOLN05q+G2YY0597ukgAD2Cs=", + "lastModified": 1745593751, + "narHash": "sha256-TJ/Nijr83ydAi473NGeazYqcQ0t8lCPU7aaQv98oGg8=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "225e13c3cc83308175f0a9aa18cfa31324155034", + "rev": "742bce016cb848d222fbfcfcf8d3894ea3fdaeff", "type": "github" }, "original": { @@ -766,11 +766,11 @@ ] }, "locked": { - "lastModified": 1737634606, - "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", + "lastModified": 1744468525, + "narHash": "sha256-9HySx+EtsbbKlZDlY+naqqOV679VdxP6x6fP3wxDXJk=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f41271d35cc0f370d300413d756c2677f386af9d", + "rev": "f1000c54d266e6e4e9d646df0774fac5b8a652df", "type": "github" }, "original": { @@ -793,11 +793,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1744458473, - "narHash": "sha256-Z+MiLf2OdJ7DUf4Hx11KtlJFa5ZvMsi3Ymfs6gxPVtQ=", + "lastModified": 1745259435, + "narHash": "sha256-0YzPTkbbIT/HN5QnUlhWcxsTMRWZv7a9H2Ghr5I1Xdo=", "ref": "refs/heads/main", - "rev": "d9532962274602c2134e0a3240673a4add39ced6", - "revCount": 354, + "rev": "eb28a71756ef63d39763c81fc797da30fdcddc9d", + "revCount": 358, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -864,11 +864,11 @@ ] }, "locked": { - "lastModified": 1735493474, - "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", + "lastModified": 1739870480, + "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", + "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", "type": "github" }, "original": { @@ -886,11 +886,11 @@ ] }, "locked": { - "lastModified": 1744648917, - "narHash": "sha256-xtBc0YMCP/x3+3iqnfdd4d9qEHvxQsGHamhhlegsGFE=", + "lastModified": 1745487384, + "narHash": "sha256-WvQ4XXi0vMtEpPqhfo8ztxjeaeHkbW5tfR4O5+w8r5U=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "66c4c9dccd26330ebb0e91aa6ba89ca8835dfdc5", + "rev": "0168e4a65c9d43c22ac38ff27f5fa31c7d535148", "type": "github" }, "original": { @@ -924,11 +924,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744463964, - "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", + "lastModified": 1745391562, + "narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", + "rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7", "type": "github" }, "original": { @@ -940,11 +940,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1744440957, - "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", + "lastModified": 1745487689, + "narHash": "sha256-FQoi3R0NjQeBAsEOo49b5tbDPcJSMWc3QhhaIi9eddw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", + "rev": "5630cf13cceac06cefe9fc607e8dfa8fb342dde3", "type": "github" }, "original": { @@ -956,11 +956,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1744440957, - "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", + "lastModified": 1745487689, + "narHash": "sha256-FQoi3R0NjQeBAsEOo49b5tbDPcJSMWc3QhhaIi9eddw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", + "rev": "5630cf13cceac06cefe9fc607e8dfa8fb342dde3", "type": "github" }, "original": { @@ -971,11 +971,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1744463964, - "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", + "lastModified": 1745391562, + "narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", + "rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7", "type": "github" }, "original": { @@ -1002,11 +1002,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1743583204, - "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", + "lastModified": 1745234285, + "narHash": "sha256-GfpyMzxwkfgRVN0cTGQSkTC0OHhEkv3Jf6Tcjm//qZ0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", + "rev": "c11863f1e964833214b767f4a369c6e6a7aba141", "type": "github" }, "original": { @@ -1026,11 +1026,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1743884191, - "narHash": "sha256-foVcginhVvjg8ZnTzY5wwMeZ4wjJ8yX66PW5kgyivPE=", + "lastModified": 1745459908, + "narHash": "sha256-bWqgohVf/py9EW3bLS/dYbenD2p9N2/Qsw1+CJk1S04=", "owner": "nix-community", "repo": "NUR", - "rev": "fde90f5f52e13eed110a0e53a2818a2b09e4d37c", + "rev": "dbc4ba3233b2bf951521177bf0ee0a7679959035", "type": "github" }, "original": { @@ -1106,11 +1106,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1744539868, - "narHash": "sha256-NPUnfDAwLD69aKetxjC7lV5ysrvs1IKC0Sy4Zai10Mw=", + "lastModified": 1745499382, + "narHash": "sha256-YqhoUWJuWlS7GFvbvu9rzpniNfL738vV+L2cuodhcyU=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "8365cf853e791c93fa8bc924f031f11949bb1a3c", + "rev": "dd41cda70ecf05308d7a3d418be00f351b2b0619", "type": "github" }, "original": { @@ -1146,11 +1146,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1744857263, - "narHash": "sha256-M4X/CnquHozzgwDk+CbFb8Sb4rSGJttfNOKcpRwziis=", + "lastModified": 1745548521, + "narHash": "sha256-xyliq8oS5OnzXjHRGr92RtmrtYI/dflf2gSEo0wMFjc=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "9f3d63d569536cd661a4adcf697e32eb08d61e31", + "rev": "eb0afb4ac0720d55c29e88eb29432103d73ae11d", "type": "github" }, "original": { @@ -1201,11 +1201,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1744668092, - "narHash": "sha256-XDmpI3ywMkypsHKRF2am6BzZ5OjwpQMulAe8L87Ek8U=", + "lastModified": 1745584517, + "narHash": "sha256-vk5fMNU/U+T9hHPPy7MvZbEHcgJ+XN2KTX3awc3ubJ4=", "owner": "danth", "repo": "stylix", - "rev": "38aff11a7097f4da6b95d4c4d2c0438f25a08d52", + "rev": "245a167c75a221e5692c08b8a4aa15c76e32c041", "type": "github" }, "original": { @@ -1326,11 +1326,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1742851696, - "narHash": "sha256-sR4K+OVFKeUOvNIqcCr5Br7NLxOBEwoAgsIyjsZmb8s=", + "lastModified": 1744974599, + "narHash": "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY=", "owner": "tinted-theming", "repo": "schemes", - "rev": "c37771c4ae8ff1667e27ddcf24991ebeb94a4e77", + "rev": "28c26a621123ad4ebd5bbfb34ab39421c0144bdd", "type": "github" }, "original": { @@ -1342,11 +1342,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1743296873, - "narHash": "sha256-8IQulrb1OBSxMwdKijO9fB70ON//V32dpK9Uioy7FzY=", + "lastModified": 1745111349, + "narHash": "sha256-udV+nHdpqgkJI9D0mtvvAzbqubt9jdifS/KhTTbJ45w=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "af5152c8d7546dfb4ff6df94080bf5ff54f64e3a", + "rev": "e009f18a01182b63559fb28f1c786eb027c3dee9", "type": "github" }, "original": { From c1fde985f083c65a3785174eef6602c7cd55d186 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 25 Apr 2025 11:13:52 -0500 Subject: [PATCH 201/317] fix phoenix build when dotfiles are unlocked --- modules/system/phoenix/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 4d634b6..60f8c5d 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -67,6 +67,8 @@ if [ "$#" -gt 1 ]; then echo "Warning: The 'build' command has no subcommands (no $2 subcommand)"; fi + chown -R 0:0 ${config.systemSettings.dotfilesDir}; + chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; pushd ${config.systemSettings.dotfilesDir} &> /dev/null; nixos-rebuild build --flake .#snowfire; attic push emmet ./result; From d704ed1c4993b798bf2180c6c5bc073bef1b3a45 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 26 Apr 2025 10:38:03 -0500 Subject: [PATCH 202/317] Revert "updated system" This reverts commit 909764d6a94da4ac6d942016ee2781592d7bf32b. --- flake.lock | 164 ++++++++++++++++++++++++++--------------------------- 1 file changed, 82 insertions(+), 82 deletions(-) diff --git a/flake.lock b/flake.lock index f988df4..169c1d8 100644 --- a/flake.lock +++ b/flake.lock @@ -61,11 +61,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1745523430, - "narHash": "sha256-EAYWV+kXbwsH+8G/8UtmcunDeKwLwSOyfcmzZUkWE/c=", + "lastModified": 1732200724, + "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "58bfe2553d937d8af0564f79d5b950afbef69717", + "rev": "153d52373b0fb2d343592871009a286ec8837aec", "type": "github" }, "original": { @@ -126,11 +126,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1745371843, - "narHash": "sha256-FSZzTEQrjY4InqHo1wPbnqqwKHpbfV1Y5JJsYR/c6VU=", + "lastModified": 1744900124, + "narHash": "sha256-2l+0DOQkro1XqokQCQYJVy0RLULxLvRdfd+KLvx2E+I=", "owner": "StevenBlack", "repo": "hosts", - "rev": "5450d4466d89d08adb32e08c9698f0aebf1bc6e2", + "rev": "8c73d7423883d1e9992eb74aabc17f0780b65c8b", "type": "github" }, "original": { @@ -148,11 +148,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1745593382, - "narHash": "sha256-0+tSl7KY+SiuNZWRnZ/irHblkAdxklfoWGsOOU2BChk=", + "lastModified": 1744664754, + "narHash": "sha256-xfHUAfPVYp+zD0sOg9KMNEHBj8O06G7xHgDgNQ2Q1lw=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "0006aeb72dcf453aac96d37c50cce5a93346a147", + "rev": "1039f51626c6079da063cda3116e7ae0daf2f909", "type": "github" }, "original": { @@ -184,11 +184,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1745547387, - "narHash": "sha256-YfDZB7jXdvsMzoIBCUgvu8mdAY2gnOBbR0YhRn1gn8I=", + "lastModified": 1744856187, + "narHash": "sha256-uc2ds4xZrg3f8VHcyZzyF2s1tvLfysG9dxHTNRmTyvY=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "7e630e5c5e5b860f89d05a64129e51f342766b70", + "rev": "896bc4ee7494db74a921559c2fc2771789f9296b", "type": "github" }, "original": { @@ -206,11 +206,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1745563104, - "narHash": "sha256-YXpJiegajPiUooLCmKtaA3x63oUXTw/C/9c80Vd6Czw=", + "lastModified": 1744618085, + "narHash": "sha256-+VdhZsIiIDtyOL88c4U/Os1PsCMLOCyScIeWL4hxJRM=", "owner": "nix-community", "repo": "fenix", - "rev": "b4a3938f8161678897983c6fa2461eb5ce54371b", + "rev": "a85d390a5607188dca2dbc39b5b37571651d69ce", "type": "github" }, "original": { @@ -222,11 +222,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1744642301, - "narHash": "sha256-5A6LL7T0lttn1vrKsNOKUk9V0ittdW0VEqh6AtefxJ4=", + "lastModified": 1743774811, + "narHash": "sha256-oiHLDHXq7ymsMVYSg92dD1OLnKLQoU/Gf2F1GoONLCE=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "59e3de00f01e5adb851d824cf7911bd90c31083a", + "rev": "df53a7a31872faf5ca53dd0730038a62ec63ca9e", "type": "github" }, "original": { @@ -452,11 +452,11 @@ ] }, "locked": { - "lastModified": 1745555634, - "narHash": "sha256-lhVyVn1utb2UVTbyKJ6mfKB7wLTjrj14OlebvO0WU2s=", + "lastModified": 1744659400, + "narHash": "sha256-q0wwsR/hvOjj1G8ogdudX5cU0IE/Vgvgjo9g9OpQv5U=", "owner": "nix-community", "repo": "home-manager", - "rev": "98f4fef7fd7b4a77245db12e33616023162bc6d9", + "rev": "5a096a8822cb98584c5dc4f2616dcd5ed394bfd7", "type": "github" }, "original": { @@ -472,11 +472,11 @@ ] }, "locked": { - "lastModified": 1745593878, - "narHash": "sha256-Rq5qNnUWuhQTqzXDcminu7Z1FPSB1wUaKIEfPTyZkAs=", + "lastModified": 1744902080, + "narHash": "sha256-px7OEMQYhS9StY3sTYYeM/jJspk6SXgoPU7OmOSx+1c=", "owner": "nix-community", "repo": "home-manager", - "rev": "542078066b1a99cdc5d5fce1365f98b847ca0b5a", + "rev": "2c71aae678c03a39c2542e136b87bd040ae1b3cb", "type": "github" }, "original": { @@ -494,11 +494,11 @@ ] }, "locked": { - "lastModified": 1745439012, - "narHash": "sha256-TwbdiH28QK7Da2JQTqFHdb+UCJq6QbF2mtf+RxHVzEA=", + "lastModified": 1743869639, + "narHash": "sha256-Xhe3whfRW/Ay05z9m1EZ1/AkbV1yo0tm1CbgjtCi4rQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "d31710fb2cd536b1966fee2af74e99a0816a61a8", + "rev": "d094c6763c6ddb860580e7d3b4201f8f496a6836", "type": "github" }, "original": { @@ -552,11 +552,11 @@ ] }, "locked": { - "lastModified": 1745015490, - "narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=", + "lastModified": 1743953322, + "narHash": "sha256-prQ5JKopXtzCMX2eT3dXbaVvGmzjMRE2bXStQDdazpM=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "60754910946b4e2dc1377b967b7156cb989c5873", + "rev": "9d7f2687c84c729afbc3b13f7937655570f2978d", "type": "github" }, "original": { @@ -581,11 +581,11 @@ ] }, "locked": { - "lastModified": 1743953322, - "narHash": "sha256-prQ5JKopXtzCMX2eT3dXbaVvGmzjMRE2bXStQDdazpM=", + "lastModified": 1737634889, + "narHash": "sha256-9JZE3KxcXOqZH9zs3UeadngDiK/yIACTiAR8HSA/TNI=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "9d7f2687c84c729afbc3b13f7937655570f2978d", + "rev": "0d77b4895ad5f1bb3b0ee43103a5246c58b65591", "type": "github" }, "original": { @@ -614,11 +614,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1745593751, - "narHash": "sha256-TJ/Nijr83ydAi473NGeazYqcQ0t8lCPU7aaQv98oGg8=", + "lastModified": 1744849150, + "narHash": "sha256-eaKqF4Oc7atN7Y2yTTeAOLN05q+G2YY0597ukgAD2Cs=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "742bce016cb848d222fbfcfcf8d3894ea3fdaeff", + "rev": "225e13c3cc83308175f0a9aa18cfa31324155034", "type": "github" }, "original": { @@ -766,11 +766,11 @@ ] }, "locked": { - "lastModified": 1744468525, - "narHash": "sha256-9HySx+EtsbbKlZDlY+naqqOV679VdxP6x6fP3wxDXJk=", + "lastModified": 1737634606, + "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f1000c54d266e6e4e9d646df0774fac5b8a652df", + "rev": "f41271d35cc0f370d300413d756c2677f386af9d", "type": "github" }, "original": { @@ -793,11 +793,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1745259435, - "narHash": "sha256-0YzPTkbbIT/HN5QnUlhWcxsTMRWZv7a9H2Ghr5I1Xdo=", + "lastModified": 1744458473, + "narHash": "sha256-Z+MiLf2OdJ7DUf4Hx11KtlJFa5ZvMsi3Ymfs6gxPVtQ=", "ref": "refs/heads/main", - "rev": "eb28a71756ef63d39763c81fc797da30fdcddc9d", - "revCount": 358, + "rev": "d9532962274602c2134e0a3240673a4add39ced6", + "revCount": 354, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -864,11 +864,11 @@ ] }, "locked": { - "lastModified": 1739870480, - "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", + "lastModified": 1735493474, + "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", + "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", "type": "github" }, "original": { @@ -886,11 +886,11 @@ ] }, "locked": { - "lastModified": 1745487384, - "narHash": "sha256-WvQ4XXi0vMtEpPqhfo8ztxjeaeHkbW5tfR4O5+w8r5U=", + "lastModified": 1744648917, + "narHash": "sha256-xtBc0YMCP/x3+3iqnfdd4d9qEHvxQsGHamhhlegsGFE=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "0168e4a65c9d43c22ac38ff27f5fa31c7d535148", + "rev": "66c4c9dccd26330ebb0e91aa6ba89ca8835dfdc5", "type": "github" }, "original": { @@ -924,11 +924,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745391562, - "narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=", + "lastModified": 1744463964, + "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7", + "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", "type": "github" }, "original": { @@ -940,11 +940,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1745487689, - "narHash": "sha256-FQoi3R0NjQeBAsEOo49b5tbDPcJSMWc3QhhaIi9eddw=", + "lastModified": 1744440957, + "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5630cf13cceac06cefe9fc607e8dfa8fb342dde3", + "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "type": "github" }, "original": { @@ -956,11 +956,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1745487689, - "narHash": "sha256-FQoi3R0NjQeBAsEOo49b5tbDPcJSMWc3QhhaIi9eddw=", + "lastModified": 1744440957, + "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5630cf13cceac06cefe9fc607e8dfa8fb342dde3", + "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", "type": "github" }, "original": { @@ -971,11 +971,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1745391562, - "narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=", + "lastModified": 1744463964, + "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7", + "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", "type": "github" }, "original": { @@ -1002,11 +1002,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1745234285, - "narHash": "sha256-GfpyMzxwkfgRVN0cTGQSkTC0OHhEkv3Jf6Tcjm//qZ0=", + "lastModified": 1743583204, + "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c11863f1e964833214b767f4a369c6e6a7aba141", + "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", "type": "github" }, "original": { @@ -1026,11 +1026,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1745459908, - "narHash": "sha256-bWqgohVf/py9EW3bLS/dYbenD2p9N2/Qsw1+CJk1S04=", + "lastModified": 1743884191, + "narHash": "sha256-foVcginhVvjg8ZnTzY5wwMeZ4wjJ8yX66PW5kgyivPE=", "owner": "nix-community", "repo": "NUR", - "rev": "dbc4ba3233b2bf951521177bf0ee0a7679959035", + "rev": "fde90f5f52e13eed110a0e53a2818a2b09e4d37c", "type": "github" }, "original": { @@ -1106,11 +1106,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1745499382, - "narHash": "sha256-YqhoUWJuWlS7GFvbvu9rzpniNfL738vV+L2cuodhcyU=", + "lastModified": 1744539868, + "narHash": "sha256-NPUnfDAwLD69aKetxjC7lV5ysrvs1IKC0Sy4Zai10Mw=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "dd41cda70ecf05308d7a3d418be00f351b2b0619", + "rev": "8365cf853e791c93fa8bc924f031f11949bb1a3c", "type": "github" }, "original": { @@ -1146,11 +1146,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1745548521, - "narHash": "sha256-xyliq8oS5OnzXjHRGr92RtmrtYI/dflf2gSEo0wMFjc=", + "lastModified": 1744857263, + "narHash": "sha256-M4X/CnquHozzgwDk+CbFb8Sb4rSGJttfNOKcpRwziis=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "eb0afb4ac0720d55c29e88eb29432103d73ae11d", + "rev": "9f3d63d569536cd661a4adcf697e32eb08d61e31", "type": "github" }, "original": { @@ -1201,11 +1201,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1745584517, - "narHash": "sha256-vk5fMNU/U+T9hHPPy7MvZbEHcgJ+XN2KTX3awc3ubJ4=", + "lastModified": 1744668092, + "narHash": "sha256-XDmpI3ywMkypsHKRF2am6BzZ5OjwpQMulAe8L87Ek8U=", "owner": "danth", "repo": "stylix", - "rev": "245a167c75a221e5692c08b8a4aa15c76e32c041", + "rev": "38aff11a7097f4da6b95d4c4d2c0438f25a08d52", "type": "github" }, "original": { @@ -1326,11 +1326,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1744974599, - "narHash": "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY=", + "lastModified": 1742851696, + "narHash": "sha256-sR4K+OVFKeUOvNIqcCr5Br7NLxOBEwoAgsIyjsZmb8s=", "owner": "tinted-theming", "repo": "schemes", - "rev": "28c26a621123ad4ebd5bbfb34ab39421c0144bdd", + "rev": "c37771c4ae8ff1667e27ddcf24991ebeb94a4e77", "type": "github" }, "original": { @@ -1342,11 +1342,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1745111349, - "narHash": "sha256-udV+nHdpqgkJI9D0mtvvAzbqubt9jdifS/KhTTbJ45w=", + "lastModified": 1743296873, + "narHash": "sha256-8IQulrb1OBSxMwdKijO9fB70ON//V32dpK9Uioy7FzY=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "e009f18a01182b63559fb28f1c786eb027c3dee9", + "rev": "af5152c8d7546dfb4ff6df94080bf5ff54f64e3a", "type": "github" }, "original": { From 3e87bd1b9e6070077afcacbedb4f8e30be6daf37 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 2 May 2025 10:42:14 -0500 Subject: [PATCH 203/317] switching over to yazi --- hosts/duskfall/home.nix | 1 + hosts/ori/home.nix | 1 + hosts/stardust/home.nix | 1 + hosts/zenith/home.nix | 1 + modules/user/hyprland/default.nix | 24 ++++++++++++------------ 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index 4a71c25..c848eff 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -17,6 +17,7 @@ brave.enable = true; editor = "emacs"; ranger.enable = true; + yazi.enable = true; git.enable = true; engineering.enable = true; art.enable = true; diff --git a/hosts/ori/home.nix b/hosts/ori/home.nix index d1cc1db..b4a01ac 100644 --- a/hosts/ori/home.nix +++ b/hosts/ori/home.nix @@ -13,6 +13,7 @@ # programs ranger.enable = true; + yazi.enable = true; git.enable = true; }; diff --git a/hosts/stardust/home.nix b/hosts/stardust/home.nix index e882522..055dc96 100644 --- a/hosts/stardust/home.nix +++ b/hosts/stardust/home.nix @@ -16,6 +16,7 @@ browser = "brave"; editor = "kate"; ranger.enable = true; + yazi.enable = true; git.enable = true; art.enable = true; flatpak.enable = false; diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 6af8118..f4dffd9 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -16,6 +16,7 @@ brave.enable = true; editor = "emacs"; ranger.enable = true; + yazi.enable = true; git.enable = true; engineering.enable = true; art.enable = true; diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index e501c1f..7d8a17a 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -65,7 +65,7 @@ in "sleep 5 && libinput-gestures" "obs-notification-mute-daemon" "alacritty --class scratch_term" - "kitty --class scratch_ranger -e ranger" + "kitty --class scratch_yazi -e yazi" "alacritty --class scratch_numbat -e numbat" "kitty --class scratch_music -e ncmpcpp" "alacritty --class scratch_btm -e btm" @@ -240,15 +240,15 @@ in "SUPERSHIFT,9,movetoworkspace,9" ''SUPER,Z,exec,if hyprctl clients | grep scratch_term; then echo "scratch_term respawn not needed"; else alacritty --class scratch_term; fi'' "SUPER,Z,togglespecialworkspace,scratch_term" - ''SUPER,F,exec,if hyprctl clients | grep scratch_ranger; then echo "scratch_ranger respawn not needed"; else kitty --class scratch_ranger -e ranger; fi'' - "SUPER,F,togglespecialworkspace,scratch_ranger" - ''SUPER,N,exec,if hyprctl clients | grep scratch_numbat; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_numbat -e numbat; fi'' + ''SUPER,F,exec,if hyprctl clients | grep scratch_yazi; then echo "scratch_yazi respawn not needed"; else kitty --class scratch_yazi -e yazi; fi'' + "SUPER,F,togglespecialworkspace,scratch_yazi" + ''SUPER,N,exec,if hyprctl clients | grep scratch_numbat; then echo "scratch_numbat respawn not needed"; else alacritty --class scratch_numbat -e numbat; fi'' "SUPER,N,togglespecialworkspace,scratch_numbat" ''SUPER,M,exec,if hyprctl clients | grep scratch_music; then echo "scratch_music respawn not needed"; else kitty --class scratch_music -e ncmpcpp; fi'' "SUPER,M,togglespecialworkspace,scratch_music" - ''SUPER,B,exec,if hyprctl clients | grep scratch_btm; then echo "scratch_ranger respawn not needed"; else alacritty --class scratch_btm -e btm; fi'' + ''SUPER,B,exec,if hyprctl clients | grep scratch_btm; then echo "scratch_yazi respawn not needed"; else alacritty --class scratch_btm -e btm; fi'' "SUPER,B,togglespecialworkspace,scratch_btm" - ''SUPER,D,exec,if hyprctl clients | grep Element; then echo "scratch_ranger respawn not needed"; else element-desktop; fi'' + ''SUPER,D,exec,if hyprctl clients | grep Element; then echo "scratch_yazi respawn not needed"; else element-desktop; fi'' "SUPER,D,togglespecialworkspace,scratch_element" ''SUPER,equal, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 + 0.5}')"'' ''SUPER,minus, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | grep float | awk '{print $2 - 0.5}')"'' @@ -274,10 +274,10 @@ in "center,class:^(scratch_term)$" "float,class:^(float_term)$" "center,class:^(float_term)$" - "float,class:^(scratch_ranger)$" - "size 80% 85%,class:^(scratch_ranger)$" - "workspace special:scratch_ranger silent,class:^(scratch_ranger)$" - "center,class:^(scratch_ranger)$" + "float,class:^(scratch_yazi)$" + "size 80% 85%,class:^(scratch_yazi)$" + "workspace special:scratch_yazi silent,class:^(scratch_yazi)$" + "center,class:^(scratch_yazi)$" "float,class:^(scratch_numbat)$" "size 80% 85%,class:^(scratch_numbat)$" "workspace special:scratch_numbat silent,class:^(scratch_numbat)$" @@ -477,13 +477,13 @@ in file="''${*:2}" file=''${file// /\\ } echo $file - workspace=$(hyprctl monitors -j | jq ".[] | select(.specialWorkspace.name == \"special:scratch_ranger\") | .activeWorkspace.id") + workspace=$(hyprctl monitors -j | jq ".[] | select(.specialWorkspace.name == \"special:scratch_yazi\") | .activeWorkspace.id") if [ -z "''${workspace}" ]; then hyprctl dispatch exec -- "$command"; else hyprctl dispatch exec "[workspace $workspace]" -- "$command" "$file"; fi - hyprctl dispatch togglespecialworkspace scratch_ranger + hyprctl dispatch togglespecialworkspace scratch_yazi '') (pkgs.writeScriptBin "sct" '' #!/bin/sh From 3e63f2385fb614ab9d6e8a36a4b500e66aa50914 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 2 May 2025 11:00:28 -0500 Subject: [PATCH 204/317] yazi fileselect for qb --- modules/user/browser/qutebrowser.nix | 6 +++--- modules/user/hyprland/default.nix | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/user/browser/qutebrowser.nix b/modules/user/browser/qutebrowser.nix index 8db0820..1ba4491 100644 --- a/modules/user/browser/qutebrowser.nix +++ b/modules/user/browser/qutebrowser.nix @@ -261,9 +261,9 @@ config.set('downloads.position', 'bottom') config.set('downloads.remove_finished', 5000) config.set('fileselect.handler', 'external') -config.set('fileselect.single_file.command', ['kitty','-e','ranger','--choosefile={}']) -config.set('fileselect.multiple_files.command', ['kitty','-e','ranger','--choosefiles={}']) -config.set('fileselect.folder.command', ['kitty','-e','ranger','--choosedir={}']) +config.set('fileselect.single_file.command', ['kitty','--class','filechoose_yazi','-e','yazi','--chooser-file={}']) +config.set('fileselect.multiple_files.command', ['kitty','--class','filechoose_yazi','-e','yazi','--chooser-file={}']) +config.set('fileselect.folder.command', ['kitty','--class','--filechoose_yazi','-e','yazi','--chooser-file={}']) # needs fixing upstream to work # bindings from doom emacs config.bind('', 'cmd-set-text :') diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 7d8a17a..7e2ec25 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -278,6 +278,9 @@ in "size 80% 85%,class:^(scratch_yazi)$" "workspace special:scratch_yazi silent,class:^(scratch_yazi)$" "center,class:^(scratch_yazi)$" + "float,class:^(filechoose_yazi)$" + "size 80% 85%,class:^(filechoose_yazi)$" + "center,class:^(filechoose_yazi)$" "float,class:^(scratch_numbat)$" "size 80% 85%,class:^(scratch_numbat)$" "workspace special:scratch_numbat silent,class:^(scratch_numbat)$" From e5d999585604051bcab1fa4c8aa56364fe5cff30 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 2 May 2025 14:42:30 -0500 Subject: [PATCH 205/317] trying to make an automatic system updater/builder --- hosts/ori/configuration.nix | 1 + modules/system/phoenix/default.nix | 33 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/hosts/ori/configuration.nix b/hosts/ori/configuration.nix index 869f0b0..c343f46 100644 --- a/hosts/ori/configuration.nix +++ b/hosts/ori/configuration.nix @@ -17,6 +17,7 @@ # dotfiles dotfilesDir = "/etc/nixos"; + systemBuilder.enable = true; # security security = { diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 60f8c5d..84f7b84 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -13,11 +13,18 @@ description = "Absolute path to my secrets flake"; type = lib.types.path; }; + systemBuilder.enable = lib.mkEnableOption "Enable automatic config updater and builder"; + systemBuilder.buildCronExpression = lib.mkOption { + default = "Sat *-*-* 02:00:00"; # Sat morning at 2am + description = "Cron expression for when the system should auto build config"; + type = lib.types.str; + }; }; }; config = { environment.systemPackages = with pkgs; [ attic-client + git (pkgs.writeScriptBin "phoenix" '' if [[ $EUID -ne 0 ]]; then echo "Error: This script must be run as root" 1>&2 @@ -115,5 +122,31 @@ fi '') ]; + systemd.services."phoenix-system-builder" = lib.mkIf config.systemSettings.systemBuilder.enable { + script = '' + pushd /etc/nixos; + /run/current-system/sw/bin/git pull; + nix flake update; + /run/current-system/sw/bin/git stage *; + /run/current-system/sw/bin/git commit -m "Updated system"; + /run/current-system/sw/bin/git push; + popd; + pushd /etc/nixos.secrets; + /run/current-system/sw/bin/git pull; + popd; + /run/current-system/sw/bin/phoenix build; + ''; + serviceConfig = { + Type = "simple"; + User = "root"; + }; + }; + systemd.timers."phoenix-system-builder-auto" = lib.mkIf config.systemSettings.systemBuilder.enable { + wantedBy = [ "timers.target" ]; + timerConfig = { + OnCalendar = config.systemSettings.systemBuilder.buildCronExpression; + Unit = "phoenix-system-builder.service"; + }; + }; }; } From abd1c42b79f49d744fa155c955195e459a681e8e Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 3 May 2025 09:58:57 -0500 Subject: [PATCH 206/317] Fix auto build script --- modules/system/phoenix/default.nix | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 84f7b84..01bef34 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -134,7 +134,24 @@ pushd /etc/nixos.secrets; /run/current-system/sw/bin/git pull; popd; - /run/current-system/sw/bin/phoenix build; + chown -R 0:0 ${config.systemSettings.dotfilesDir}; + chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; + pushd ${config.systemSettings.dotfilesDir} &> /dev/null; + nixos-rebuild build --flake .#snowfire; + attic push emmet ./result; + rm ./result; + nixos-rebuild build --flake .#duskfall; + attic push emmet ./result; + rm ./result; + nixos-rebuild build --flake .#zenith; + attic push emmet ./result; + rm ./result; + nixos-rebuild build --flake .#stardust; + attic push emmet ./result; + rm ./result; + nixos-rebuild build --flake .#ori; + attic push emmet ./result; + rm ./result; ''; serviceConfig = { Type = "simple"; From 07305f2422ce311918c6902f6a037e89b4a001a5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 3 May 2025 10:11:29 -0500 Subject: [PATCH 207/317] hopefully this fixes auto-builder? --- modules/system/phoenix/default.nix | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 01bef34..57faa91 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -124,33 +124,31 @@ ]; systemd.services."phoenix-system-builder" = lib.mkIf config.systemSettings.systemBuilder.enable { script = '' - pushd /etc/nixos; - /run/current-system/sw/bin/git pull; + cd ${config.systemSettings.dotfilesDir}; + ${pkgs.git}/bin/git pull; nix flake update; - /run/current-system/sw/bin/git stage *; - /run/current-system/sw/bin/git commit -m "Updated system"; - /run/current-system/sw/bin/git push; - popd; - pushd /etc/nixos.secrets; - /run/current-system/sw/bin/git pull; - popd; + ${pkgs.git}/bin/git stage *; + ${pkgs.git}/bin/git commit -m "Updated system"; + ${pkgs.git}/bin/git push; + cd ${config.systemSettings.secretsFlakeDir}; + ${pkgs.git}/bin/git pull; chown -R 0:0 ${config.systemSettings.dotfilesDir}; chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; - pushd ${config.systemSettings.dotfilesDir} &> /dev/null; + cd ${config.systemSettings.dotfilesDir}; nixos-rebuild build --flake .#snowfire; - attic push emmet ./result; + ${pkgs.attic-client}/bin/attic push emmet ./result; rm ./result; nixos-rebuild build --flake .#duskfall; - attic push emmet ./result; + ${pkgs.attic-client}/bin/attic push emmet ./result; rm ./result; nixos-rebuild build --flake .#zenith; - attic push emmet ./result; + ${pkgs.attic-client}/bin/attic push emmet ./result; rm ./result; nixos-rebuild build --flake .#stardust; - attic push emmet ./result; + ${pkgs.attic-client}/bin/attic push emmet ./result; rm ./result; nixos-rebuild build --flake .#ori; - attic push emmet ./result; + ${pkgs.attic-client}/bin/attic push emmet ./result; rm ./result; ''; serviceConfig = { From 3702ea7d4f315af7c7095c8d315bd8cf898555c9 Mon Sep 17 00:00:00 2001 From: Ori Date: Sat, 3 May 2025 10:39:02 -0500 Subject: [PATCH 208/317] Updated system --- flake.lock | 202 ++++++++++++++--------------- modules/system/phoenix/default.nix | 6 + 2 files changed, 107 insertions(+), 101 deletions(-) diff --git a/flake.lock b/flake.lock index 169c1d8..8fcb963 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1744289235, - "narHash": "sha256-ZFkHLdimtFzQACsVVyZkZlfYdj4iNy3PkzXfrwmlse8=", + "lastModified": 1745357003, + "narHash": "sha256-jYwzQkv1r7HN/4qrAuKp+NR4YYNp2xDrOX5O9YVqkWo=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "c8282f4982b56dfa5e9b9f659809da93f8d37e7a", + "rev": "a19cf76ee1a15c1c12083fa372747ce46387289f", "type": "github" }, "original": { @@ -61,11 +61,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1732200724, - "narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=", + "lastModified": 1745523430, + "narHash": "sha256-EAYWV+kXbwsH+8G/8UtmcunDeKwLwSOyfcmzZUkWE/c=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "153d52373b0fb2d343592871009a286ec8837aec", + "rev": "58bfe2553d937d8af0564f79d5b950afbef69717", "type": "github" }, "original": { @@ -126,11 +126,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1744900124, - "narHash": "sha256-2l+0DOQkro1XqokQCQYJVy0RLULxLvRdfd+KLvx2E+I=", + "lastModified": 1746061167, + "narHash": "sha256-DBr3ai6lvPrJlKiq0btt+aT7XAxiWJNaKPc7sKFwl+0=", "owner": "StevenBlack", "repo": "hosts", - "rev": "8c73d7423883d1e9992eb74aabc17f0780b65c8b", + "rev": "181b549344d3920a140c9ee48e086d95cdc2a668", "type": "github" }, "original": { @@ -148,11 +148,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1744664754, - "narHash": "sha256-xfHUAfPVYp+zD0sOg9KMNEHBj8O06G7xHgDgNQ2Q1lw=", + "lastModified": 1746266314, + "narHash": "sha256-bk6mSt/SMjzMYW6d/P6DUrWK4vq6haD9y7oTPmNT5P4=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "1039f51626c6079da063cda3116e7ae0daf2f909", + "rev": "531cb9b2eeb83fbbc8487215f4f69ae85613bb66", "type": "github" }, "original": { @@ -184,11 +184,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1744856187, - "narHash": "sha256-uc2ds4xZrg3f8VHcyZzyF2s1tvLfysG9dxHTNRmTyvY=", + "lastModified": 1746240489, + "narHash": "sha256-DWMG7jkpxrEGzTZZerDqaxT8X983tibFGfNeoWtX1yU=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "896bc4ee7494db74a921559c2fc2771789f9296b", + "rev": "66bb2d7a4df96d0c1e63648850b7aed1b2e8d683", "type": "github" }, "original": { @@ -206,11 +206,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1744618085, - "narHash": "sha256-+VdhZsIiIDtyOL88c4U/Os1PsCMLOCyScIeWL4hxJRM=", + "lastModified": 1745995211, + "narHash": "sha256-hf6Xu3KS06WyE/3dqV96iLGx3jIYQq9e68iCEFHrt04=", "owner": "nix-community", "repo": "fenix", - "rev": "a85d390a5607188dca2dbc39b5b37571651d69ce", + "rev": "0db04339c4e4c0fd42dbbaebe3590a67cbd12aa3", "type": "github" }, "original": { @@ -222,11 +222,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1743774811, - "narHash": "sha256-oiHLDHXq7ymsMVYSg92dD1OLnKLQoU/Gf2F1GoONLCE=", + "lastModified": 1744642301, + "narHash": "sha256-5A6LL7T0lttn1vrKsNOKUk9V0ittdW0VEqh6AtefxJ4=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "df53a7a31872faf5ca53dd0730038a62ec63ca9e", + "rev": "59e3de00f01e5adb851d824cf7911bd90c31083a", "type": "github" }, "original": { @@ -452,11 +452,11 @@ ] }, "locked": { - "lastModified": 1744659400, - "narHash": "sha256-q0wwsR/hvOjj1G8ogdudX5cU0IE/Vgvgjo9g9OpQv5U=", + "lastModified": 1745987135, + "narHash": "sha256-8Up4QPuMZEJBU0eefAY+nUe7DYKQQzvaHnMpNdwRgKA=", "owner": "nix-community", "repo": "home-manager", - "rev": "5a096a8822cb98584c5dc4f2616dcd5ed394bfd7", + "rev": "d2b3e6c83d457aa0e7f9344c61c3fed32bad0f7e", "type": "github" }, "original": { @@ -472,11 +472,11 @@ ] }, "locked": { - "lastModified": 1744902080, - "narHash": "sha256-px7OEMQYhS9StY3sTYYeM/jJspk6SXgoPU7OmOSx+1c=", + "lastModified": 1746243165, + "narHash": "sha256-DQycVmlyLQNLjLJ/FzpokVmbxGQ8HjQQ4zN4nyq2vII=", "owner": "nix-community", "repo": "home-manager", - "rev": "2c71aae678c03a39c2542e136b87bd040ae1b3cb", + "rev": "c0962eeeabfb8127713f859ec8a5f0e86dead0f2", "type": "github" }, "original": { @@ -494,11 +494,11 @@ ] }, "locked": { - "lastModified": 1743869639, - "narHash": "sha256-Xhe3whfRW/Ay05z9m1EZ1/AkbV1yo0tm1CbgjtCi4rQ=", + "lastModified": 1746040799, + "narHash": "sha256-osgPX/SzIpkR50vev/rqoTEAVkEcOWXoQXmbzsaI4KU=", "owner": "nix-community", "repo": "home-manager", - "rev": "d094c6763c6ddb860580e7d3b4201f8f496a6836", + "rev": "5f217e5a319f6c186283b530f8c975e66c028433", "type": "github" }, "original": { @@ -523,11 +523,11 @@ ] }, "locked": { - "lastModified": 1742215578, - "narHash": "sha256-zfs71PXVVPEe56WEyNi2TJQPs0wabU4WAlq0XV7GcdE=", + "lastModified": 1745948457, + "narHash": "sha256-lzTV10FJTCGNtMdgW5YAhCAqezeAzKOd/97HbQK8GTU=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "2fd36421c21aa87e2fe3bee11067540ae612f719", + "rev": "ac903e80b33ba6a88df83d02232483d99f327573", "type": "github" }, "original": { @@ -552,11 +552,11 @@ ] }, "locked": { - "lastModified": 1743953322, - "narHash": "sha256-prQ5JKopXtzCMX2eT3dXbaVvGmzjMRE2bXStQDdazpM=", + "lastModified": 1745015490, + "narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "9d7f2687c84c729afbc3b13f7937655570f2978d", + "rev": "60754910946b4e2dc1377b967b7156cb989c5873", "type": "github" }, "original": { @@ -581,11 +581,11 @@ ] }, "locked": { - "lastModified": 1737634889, - "narHash": "sha256-9JZE3KxcXOqZH9zs3UeadngDiK/yIACTiAR8HSA/TNI=", + "lastModified": 1743953322, + "narHash": "sha256-prQ5JKopXtzCMX2eT3dXbaVvGmzjMRE2bXStQDdazpM=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "0d77b4895ad5f1bb3b0ee43103a5246c58b65591", + "rev": "9d7f2687c84c729afbc3b13f7937655570f2978d", "type": "github" }, "original": { @@ -614,11 +614,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1744849150, - "narHash": "sha256-eaKqF4Oc7atN7Y2yTTeAOLN05q+G2YY0597ukgAD2Cs=", + "lastModified": 1746281222, + "narHash": "sha256-Q+t43sBvv0+iq/jatZ7a+GACptpQ/7hZ/9xY6ODN5zw=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "225e13c3cc83308175f0a9aa18cfa31324155034", + "rev": "cdf5736f1a5e6cc1c3bb8fd50501ab17189725ea", "type": "github" }, "original": { @@ -708,11 +708,11 @@ ] }, "locked": { - "lastModified": 1739048983, - "narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=", + "lastModified": 1745951494, + "narHash": "sha256-2dModE32doiyQMmd6EDAQeZnz+5LOs6KXyE0qX76WIg=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8", + "rev": "4be1d324faf8d6e82c2be9f8510d299984dfdd2e", "type": "github" }, "original": { @@ -737,11 +737,11 @@ ] }, "locked": { - "lastModified": 1744468525, - "narHash": "sha256-9HySx+EtsbbKlZDlY+naqqOV679VdxP6x6fP3wxDXJk=", + "lastModified": 1745357019, + "narHash": "sha256-q/C3qj9FWHQenObXuw/nGIT8iIsWFjgmcQYcA+ZfpPs=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f1000c54d266e6e4e9d646df0774fac5b8a652df", + "rev": "397600c42b8d7a443a5b4e92aa15f46650a90f18", "type": "github" }, "original": { @@ -766,11 +766,11 @@ ] }, "locked": { - "lastModified": 1737634606, - "narHash": "sha256-W7W87Cv6wqZ9PHegI6rH1+ve3zJPiyevMFf0/HwdbCQ=", + "lastModified": 1744468525, + "narHash": "sha256-9HySx+EtsbbKlZDlY+naqqOV679VdxP6x6fP3wxDXJk=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f41271d35cc0f370d300413d756c2677f386af9d", + "rev": "f1000c54d266e6e4e9d646df0774fac5b8a652df", "type": "github" }, "original": { @@ -793,11 +793,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1744458473, - "narHash": "sha256-Z+MiLf2OdJ7DUf4Hx11KtlJFa5ZvMsi3Ymfs6gxPVtQ=", + "lastModified": 1745997160, + "narHash": "sha256-gTFloyC0x68Uy4qLfGwZSu0YYR4ZeB/7YiBwoglkVOw=", "ref": "refs/heads/main", - "rev": "d9532962274602c2134e0a3240673a4add39ced6", - "revCount": 354, + "rev": "0e3e7206bc248d154dbafb6f7acd7d6d3ad2ff93", + "revCount": 361, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -814,11 +814,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1743950287, - "narHash": "sha256-/6IAEWyb8gC/NKZElxiHChkouiUOrVYNq9YqG0Pzm4Y=", + "lastModified": 1745975815, + "narHash": "sha256-s3GzsRxBL/N/xYgUXZhQh4t62uR1BN4zxXgWBtJ3lWM=", "ref": "refs/heads/main", - "rev": "f2dc70e448b994cef627a157ee340135bd68fbc6", - "revCount": 92, + "rev": "05878d9470c9e5cbc8807813f9ec2006627a0ca0", + "revCount": 94, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprutils.git" }, @@ -864,11 +864,11 @@ ] }, "locked": { - "lastModified": 1735493474, - "narHash": "sha256-fktzv4NaqKm94VAkAoVqO/nqQlw+X0/tJJNAeCSfzK4=", + "lastModified": 1739870480, + "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "de913476b59ee88685fdc018e77b8f6637a2ae0b", + "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", "type": "github" }, "original": { @@ -886,11 +886,11 @@ ] }, "locked": { - "lastModified": 1744648917, - "narHash": "sha256-xtBc0YMCP/x3+3iqnfdd4d9qEHvxQsGHamhhlegsGFE=", + "lastModified": 1745487384, + "narHash": "sha256-WvQ4XXi0vMtEpPqhfo8ztxjeaeHkbW5tfR4O5+w8r5U=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "66c4c9dccd26330ebb0e91aa6ba89ca8835dfdc5", + "rev": "0168e4a65c9d43c22ac38ff27f5fa31c7d535148", "type": "github" }, "original": { @@ -924,11 +924,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744463964, - "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", + "lastModified": 1746141548, + "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", + "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", "type": "github" }, "original": { @@ -940,11 +940,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1744440957, - "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", + "lastModified": 1746183838, + "narHash": "sha256-kwaaguGkAqTZ1oK0yXeQ3ayYjs8u/W7eEfrFpFfIDFA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", + "rev": "bf3287dac860542719fe7554e21e686108716879", "type": "github" }, "original": { @@ -956,11 +956,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1744440957, - "narHash": "sha256-FHlSkNqFmPxPJvy+6fNLaNeWnF1lZSgqVCl/eWaJRc4=", + "lastModified": 1746183838, + "narHash": "sha256-kwaaguGkAqTZ1oK0yXeQ3ayYjs8u/W7eEfrFpFfIDFA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "26d499fc9f1d567283d5d56fcf367edd815dba1d", + "rev": "bf3287dac860542719fe7554e21e686108716879", "type": "github" }, "original": { @@ -971,11 +971,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1744463964, - "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=", + "lastModified": 1746141548, + "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650", + "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", "type": "github" }, "original": { @@ -1002,11 +1002,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1743583204, - "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", + "lastModified": 1745930157, + "narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", + "rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae", "type": "github" }, "original": { @@ -1026,11 +1026,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1743884191, - "narHash": "sha256-foVcginhVvjg8ZnTzY5wwMeZ4wjJ8yX66PW5kgyivPE=", + "lastModified": 1746056780, + "narHash": "sha256-/emueQGaoT4vu0QjU9LDOG5roxRSfdY0K2KkxuzazcM=", "owner": "nix-community", "repo": "NUR", - "rev": "fde90f5f52e13eed110a0e53a2818a2b09e4d37c", + "rev": "d476cd0972dd6242d76374fcc277e6735715c167", "type": "github" }, "original": { @@ -1106,11 +1106,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1744539868, - "narHash": "sha256-NPUnfDAwLD69aKetxjC7lV5ysrvs1IKC0Sy4Zai10Mw=", + "lastModified": 1745949276, + "narHash": "sha256-9ZK31t2HUiGdLLnDafrRnSrrO12JwqcAFbrJ9nRwh0Y=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "8365cf853e791c93fa8bc924f031f11949bb1a3c", + "rev": "78a488dd5e7e4f17162001519665795e6e68b6f8", "type": "github" }, "original": { @@ -1146,11 +1146,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1744857263, - "narHash": "sha256-M4X/CnquHozzgwDk+CbFb8Sb4rSGJttfNOKcpRwziis=", + "lastModified": 1746239644, + "narHash": "sha256-wMvMBMlpS1H8CQdSSgpLeoCWS67ciEkN/GVCcwk7Apc=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "9f3d63d569536cd661a4adcf697e32eb08d61e31", + "rev": "bd32e88bef6da0e021a42fb4120a8df2150e9b8c", "type": "github" }, "original": { @@ -1201,11 +1201,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1744668092, - "narHash": "sha256-XDmpI3ywMkypsHKRF2am6BzZ5OjwpQMulAe8L87Ek8U=", + "lastModified": 1746223791, + "narHash": "sha256-R/DWYbY+Yr/QULujNlozfBUU2s9nZPoRikjIGPTYcR8=", "owner": "danth", "repo": "stylix", - "rev": "38aff11a7097f4da6b95d4c4d2c0438f25a08d52", + "rev": "953e7247ac340e5036f8af47eaccf1a23f1a0257", "type": "github" }, "original": { @@ -1326,11 +1326,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1742851696, - "narHash": "sha256-sR4K+OVFKeUOvNIqcCr5Br7NLxOBEwoAgsIyjsZmb8s=", + "lastModified": 1744974599, + "narHash": "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY=", "owner": "tinted-theming", "repo": "schemes", - "rev": "c37771c4ae8ff1667e27ddcf24991ebeb94a4e77", + "rev": "28c26a621123ad4ebd5bbfb34ab39421c0144bdd", "type": "github" }, "original": { @@ -1342,11 +1342,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1743296873, - "narHash": "sha256-8IQulrb1OBSxMwdKijO9fB70ON//V32dpK9Uioy7FzY=", + "lastModified": 1745111349, + "narHash": "sha256-udV+nHdpqgkJI9D0mtvvAzbqubt9jdifS/KhTTbJ45w=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "af5152c8d7546dfb4ff6df94080bf5ff54f64e3a", + "rev": "e009f18a01182b63559fb28f1c786eb027c3dee9", "type": "github" }, "original": { @@ -1421,11 +1421,11 @@ ] }, "locked": { - "lastModified": 1744644585, - "narHash": "sha256-p0D/e4J6Sv6GSb+9u8OQcVHSE2gPNYB5ygIfGDyEiXQ=", + "lastModified": 1745871725, + "narHash": "sha256-M24SNc2flblWGXFkGQfqSlEOzAGZnMc9QG3GH4K/KbE=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "be6771e754345f18244fb00aae5c9e5ab21ccc26", + "rev": "76bbf1a6b1378e4ab5230bad00ad04bc287c969e", "type": "github" }, "original": { diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 57faa91..5651a34 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -123,9 +123,15 @@ '') ]; systemd.services."phoenix-system-builder" = lib.mkIf config.systemSettings.systemBuilder.enable { + path = with pkgs; [ + openssh git nix + ]; script = '' + echo "navigating to /etc/nixos"; cd ${config.systemSettings.dotfilesDir}; + echo "running git pull"; ${pkgs.git}/bin/git pull; + echo "running nix flake update"; nix flake update; ${pkgs.git}/bin/git stage *; ${pkgs.git}/bin/git commit -m "Updated system"; From c76b49aae38c4a420997e706d943946ce602725f Mon Sep 17 00:00:00 2001 From: Ori Date: Sat, 3 May 2025 10:49:01 -0500 Subject: [PATCH 209/317] Updated system --- flake.lock | 6 +++--- modules/system/phoenix/default.nix | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index 8fcb963..f8aeca4 100644 --- a/flake.lock +++ b/flake.lock @@ -472,11 +472,11 @@ ] }, "locked": { - "lastModified": 1746243165, - "narHash": "sha256-DQycVmlyLQNLjLJ/FzpokVmbxGQ8HjQQ4zN4nyq2vII=", + "lastModified": 1746286834, + "narHash": "sha256-N6401TfkHPmTTuZzHE02B/wQaKYZAAHtaQ0EQVYLc9w=", "owner": "nix-community", "repo": "home-manager", - "rev": "c0962eeeabfb8127713f859ec8a5f0e86dead0f2", + "rev": "929f8ee8362aec0a2bcbcbbd485e86e701496a73", "type": "github" }, "original": { diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 5651a34..2063bc4 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -124,7 +124,7 @@ ]; systemd.services."phoenix-system-builder" = lib.mkIf config.systemSettings.systemBuilder.enable { path = with pkgs; [ - openssh git nix + openssh git nix nixos-rebuild ]; script = '' echo "navigating to /etc/nixos"; From f92e905725c8b619ae0c3524ba69925ba9ab772b Mon Sep 17 00:00:00 2001 From: Ori Date: Sat, 3 May 2025 11:18:22 -0500 Subject: [PATCH 210/317] Updated system --- flake.lock | 6 +++--- modules/system/phoenix/default.nix | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/flake.lock b/flake.lock index f8aeca4..428dc3c 100644 --- a/flake.lock +++ b/flake.lock @@ -472,11 +472,11 @@ ] }, "locked": { - "lastModified": 1746286834, - "narHash": "sha256-N6401TfkHPmTTuZzHE02B/wQaKYZAAHtaQ0EQVYLc9w=", + "lastModified": 1746287478, + "narHash": "sha256-z3HiHR2CNAdwyZTWPM2kkzhE1gD1G6ExPxkaiQfNh7s=", "owner": "nix-community", "repo": "home-manager", - "rev": "929f8ee8362aec0a2bcbcbbd485e86e701496a73", + "rev": "75268f62525920c4936404a056f37b91e299c97e", "type": "github" }, "original": { diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 2063bc4..bebe845 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -127,6 +127,8 @@ openssh git nix nixos-rebuild ]; script = '' + set -euo pipefail + export NIX_PATH="nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos:nixos-config=/etc/nixos/configuration.nix" echo "navigating to /etc/nixos"; cd ${config.systemSettings.dotfilesDir}; echo "running git pull"; @@ -141,19 +143,19 @@ chown -R 0:0 ${config.systemSettings.dotfilesDir}; chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; cd ${config.systemSettings.dotfilesDir}; - nixos-rebuild build --flake .#snowfire; + ${config.system.build.nixos-rebuild}/bin/nixos-rebuild build --flake .#snowfire; ${pkgs.attic-client}/bin/attic push emmet ./result; rm ./result; - nixos-rebuild build --flake .#duskfall; + ${config.system.build.nixos-rebuild}/bin/nixos-rebuild build --flake .#duskfall; ${pkgs.attic-client}/bin/attic push emmet ./result; rm ./result; - nixos-rebuild build --flake .#zenith; + ${config.system.build.nixos-rebuild}/bin/nixos-rebuild build --flake .#zenith; ${pkgs.attic-client}/bin/attic push emmet ./result; rm ./result; - nixos-rebuild build --flake .#stardust; + ${config.system.build.nixos-rebuild}/bin/nixos-rebuild build --flake .#stardust; ${pkgs.attic-client}/bin/attic push emmet ./result; rm ./result; - nixos-rebuild build --flake .#ori; + ${config.system.build.nixos-rebuild}/bin/nixos-rebuild build --flake .#ori; ${pkgs.attic-client}/bin/attic push emmet ./result; rm ./result; ''; From 00c9e00cbbb5f6eea0c14b32f21696d03e9f325c Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 3 May 2025 11:27:15 -0500 Subject: [PATCH 211/317] avoid erroring out if no updates available --- modules/system/phoenix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index bebe845..504fe19 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -136,8 +136,8 @@ echo "running nix flake update"; nix flake update; ${pkgs.git}/bin/git stage *; - ${pkgs.git}/bin/git commit -m "Updated system"; - ${pkgs.git}/bin/git push; + ${pkgs.git}/bin/git commit -m "Updated system" || true; + ${pkgs.git}/bin/git push || true; cd ${config.systemSettings.secretsFlakeDir}; ${pkgs.git}/bin/git pull; chown -R 0:0 ${config.systemSettings.dotfilesDir}; From 168256eb76530bd55e808cf8647322a129bf8644 Mon Sep 17 00:00:00 2001 From: Ori Date: Sat, 3 May 2025 11:28:29 -0500 Subject: [PATCH 212/317] Updated system --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 428dc3c..27c2496 100644 --- a/flake.lock +++ b/flake.lock @@ -184,11 +184,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1746240489, - "narHash": "sha256-DWMG7jkpxrEGzTZZerDqaxT8X983tibFGfNeoWtX1yU=", + "lastModified": 1746289346, + "narHash": "sha256-SuzOGPI0suV8+HOUExQSovCVXaC55DNdPrbdCaji3sU=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "66bb2d7a4df96d0c1e63648850b7aed1b2e8d683", + "rev": "77a5dcff2b2494e74225d5c70739973241401be6", "type": "github" }, "original": { From 41b15489ad799162ed6d16c1419a65d13a046fe3 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 3 May 2025 11:40:55 -0500 Subject: [PATCH 213/317] get building working again? --- flake.nix | 8 ++++---- modules/user/hyprland/default.nix | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index a5981e3..e490282 100644 --- a/flake.nix +++ b/flake.nix @@ -104,10 +104,10 @@ inputs.hyprutils.follows = "hyprutils"; }; - ashell = { - url = "github:librephoenix/ashell"; - inputs.nixpkgs.follows = "nixpkgs"; - }; + #ashell = { + # url = "github:librephoenix/ashell"; + # inputs.nixpkgs.follows = "nixpkgs"; + #}; plasma-manager = { url = "github:nix-community/plasma-manager"; diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 7e2ec25..a277111 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -382,7 +382,8 @@ in kitty killall polkit_gnome - (inputs.ashell.defaultPackage.${system}) + #(inputs.ashell.defaultPackage.${system}) + ashell nwg-launchers papirus-icon-theme (pkgs.writeScriptBin "nwggrid-wrapper" '' From d791f724ac05ae12348b87cfd244d7b14f7cf09a Mon Sep 17 00:00:00 2001 From: Ori Date: Sat, 3 May 2025 11:42:36 -0500 Subject: [PATCH 214/317] Updated system --- flake.lock | 115 +++++------------------------------------------------ 1 file changed, 11 insertions(+), 104 deletions(-) diff --git a/flake.lock b/flake.lock index 27c2496..a0112ce 100644 --- a/flake.lock +++ b/flake.lock @@ -33,29 +33,6 @@ "type": "github" } }, - "ashell": { - "inputs": { - "crane": "crane", - "flake-utils": "flake-utils", - "nixpkgs": [ - "nixpkgs" - ], - "rust-overlay": "rust-overlay" - }, - "locked": { - "lastModified": 1741471836, - "narHash": "sha256-eI3mFllV2GUXkkySHWOSZ6g32amkDHi56nWYWg9LOag=", - "owner": "librephoenix", - "repo": "ashell", - "rev": "02f2d9ce7d04c2a76aa7578c1b9177c6342fbf80", - "type": "github" - }, - "original": { - "owner": "librephoenix", - "repo": "ashell", - "type": "github" - } - }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -161,21 +138,6 @@ "type": "github" } }, - "crane": { - "locked": { - "lastModified": 1739936662, - "narHash": "sha256-x4syUjNUuRblR07nDPeLDP7DpphaBVbUaSoeZkFbGSk=", - "owner": "ipetkov", - "repo": "crane", - "rev": "19de14aaeb869287647d9461cbd389187d8ecdb7", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, "emacs-overlay": { "inputs": { "nixpkgs": [ @@ -303,24 +265,6 @@ } }, "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { "inputs": { "systems": [ "stylix", @@ -610,7 +554,7 @@ "nixpkgs" ], "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_2", + "systems": "systems", "xdph": "xdph" }, "locked": { @@ -790,7 +734,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_3" + "systems": "systems_2" }, "locked": { "lastModified": 1745997160, @@ -811,7 +755,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_4" + "systems": "systems_3" }, "locked": { "lastModified": 1745975815, @@ -1087,7 +1031,6 @@ }, "root": { "inputs": { - "ashell": "ashell", "blocklist-hosts": "blocklist-hosts", "chaotic": "chaotic", "emacs-overlay": "emacs-overlay", @@ -1098,7 +1041,7 @@ "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_2", "plasma-manager": "plasma-manager", - "rust-overlay": "rust-overlay_2", + "rust-overlay": "rust-overlay", "secrets": "secrets", "stylix": "stylix" } @@ -1121,27 +1064,6 @@ } }, "rust-overlay": { - "inputs": { - "nixpkgs": [ - "ashell", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1740969088, - "narHash": "sha256-BajboqzFnDhxVT0SXTDKVJCKtFP96lZXccBlT/43mao=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "20fdb02098fdda9a25a2939b975abdd7bc03f62d", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_2": { "inputs": { "nixpkgs": "nixpkgs_3" }, @@ -1187,13 +1109,13 @@ "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils", "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", "nixpkgs": "nixpkgs_4", "nur": "nur", - "systems": "systems_5", + "systems": "systems_4", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -1216,16 +1138,16 @@ }, "systems": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default", + "repo": "default-linux", "type": "github" } }, @@ -1260,21 +1182,6 @@ } }, "systems_4": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_5": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", From a01c55adafc01c7b4ae2145fd9078223f471c717 Mon Sep 17 00:00:00 2001 From: Ori Date: Sat, 3 May 2025 12:11:22 -0500 Subject: [PATCH 215/317] Updated system --- flake.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/flake.lock b/flake.lock index a0112ce..a1b1468 100644 --- a/flake.lock +++ b/flake.lock @@ -558,11 +558,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1746281222, - "narHash": "sha256-Q+t43sBvv0+iq/jatZ7a+GACptpQ/7hZ/9xY6ODN5zw=", + "lastModified": 1746291290, + "narHash": "sha256-96SpKoIyUsRas+h6RhnPcgbduyH2j2YrujWpsuKdK8Q=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "cdf5736f1a5e6cc1c3bb8fd50501ab17189725ea", + "rev": "46ac115bd19ee3aff5c816033de0b1d55a74e33f", "type": "github" }, "original": { @@ -737,11 +737,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1745997160, - "narHash": "sha256-gTFloyC0x68Uy4qLfGwZSu0YYR4ZeB/7YiBwoglkVOw=", + "lastModified": 1746281087, + "narHash": "sha256-9amK5DEpueAD+aobmBmjbV+C16RO7lcDOdf5ucJtNvM=", "ref": "refs/heads/main", - "rev": "0e3e7206bc248d154dbafb6f7acd7d6d3ad2ff93", - "revCount": 361, + "rev": "6c64630df81b52208b210f02476f55e4db56e6cf", + "revCount": 362, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, From 58504c7fc4cc13d308f94dbe223d448d61cedafb Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 4 May 2025 09:23:25 -0500 Subject: [PATCH 216/317] Updated system --- flake.lock | 94 +++++++++++++++++++++++++--- flake.nix | 9 +-- modules/user/browser/qutebrowser.nix | 1 + 3 files changed, 90 insertions(+), 14 deletions(-) diff --git a/flake.lock b/flake.lock index a1b1468..cf76cd8 100644 --- a/flake.lock +++ b/flake.lock @@ -33,6 +33,31 @@ "type": "github" } }, + "ashell": { + "inputs": { + "crane": "crane", + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": [ + "rust-overlay" + ] + }, + "locked": { + "lastModified": 1741471836, + "narHash": "sha256-eI3mFllV2GUXkkySHWOSZ6g32amkDHi56nWYWg9LOag=", + "owner": "librephoenix", + "repo": "ashell", + "rev": "02f2d9ce7d04c2a76aa7578c1b9177c6342fbf80", + "type": "github" + }, + "original": { + "owner": "librephoenix", + "repo": "ashell", + "type": "github" + } + }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -138,6 +163,21 @@ "type": "github" } }, + "crane": { + "locked": { + "lastModified": 1739936662, + "narHash": "sha256-x4syUjNUuRblR07nDPeLDP7DpphaBVbUaSoeZkFbGSk=", + "owner": "ipetkov", + "repo": "crane", + "rev": "19de14aaeb869287647d9461cbd389187d8ecdb7", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "emacs-overlay": { "inputs": { "nixpkgs": [ @@ -265,6 +305,24 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { "inputs": { "systems": [ "stylix", @@ -554,7 +612,7 @@ "nixpkgs" ], "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems", + "systems": "systems_2", "xdph": "xdph" }, "locked": { @@ -734,7 +792,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1746281087, @@ -755,7 +813,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_3" + "systems": "systems_4" }, "locked": { "lastModified": 1745975815, @@ -1031,6 +1089,7 @@ }, "root": { "inputs": { + "ashell": "ashell", "blocklist-hosts": "blocklist-hosts", "chaotic": "chaotic", "emacs-overlay": "emacs-overlay", @@ -1109,13 +1168,13 @@ "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", "nixpkgs": "nixpkgs_4", "nur": "nur", - "systems": "systems_4", + "systems": "systems_5", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -1138,16 +1197,16 @@ }, "systems": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, @@ -1182,6 +1241,21 @@ } }, "systems_4": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_5": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", diff --git a/flake.nix b/flake.nix index e490282..68b180e 100644 --- a/flake.nix +++ b/flake.nix @@ -104,10 +104,11 @@ inputs.hyprutils.follows = "hyprutils"; }; - #ashell = { - # url = "github:librephoenix/ashell"; - # inputs.nixpkgs.follows = "nixpkgs"; - #}; + ashell = { + url = "github:librephoenix/ashell"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.rust-overlay.follows = "rust-overlay"; + }; plasma-manager = { url = "github:nix-community/plasma-manager"; diff --git a/modules/user/browser/qutebrowser.nix b/modules/user/browser/qutebrowser.nix index 1ba4491..abb93c8 100644 --- a/modules/user/browser/qutebrowser.nix +++ b/modules/user/browser/qutebrowser.nix @@ -447,6 +447,7 @@ Youtube home.sessionVariables = lib.mkIf (config.userSettings.browser == "qutebrowser") { DEFAULT_BROWSER = "${pkgs.qutebrowser}/bin/qutebrowser"; + QTWEBENGINE_CHROMIUM_FLAGS = "--disable-gpu"; # FIXME https://github.com/qutebrowser/qutebrowser/issues/8535 }; }; From 17c684c89af2dc97485f5dc0a95ea5c2f50ca7da Mon Sep 17 00:00:00 2001 From: Ori Date: Sat, 10 May 2025 02:01:11 -0500 Subject: [PATCH 217/317] Updated system --- flake.lock | 124 ++++++++++++++++++++++++++--------------------------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/flake.lock b/flake.lock index cf76cd8..7c1733e 100644 --- a/flake.lock +++ b/flake.lock @@ -128,11 +128,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1746061167, - "narHash": "sha256-DBr3ai6lvPrJlKiq0btt+aT7XAxiWJNaKPc7sKFwl+0=", + "lastModified": 1746736932, + "narHash": "sha256-ISlve6L7Z/pi0Vkb6a7SW+3fsDX56IkjVDXNkTPFpJU=", "owner": "StevenBlack", "repo": "hosts", - "rev": "181b549344d3920a140c9ee48e086d95cdc2a668", + "rev": "d64ec295d025c6cac7b04f4859c8a8408c485fad", "type": "github" }, "original": { @@ -150,11 +150,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1746266314, - "narHash": "sha256-bk6mSt/SMjzMYW6d/P6DUrWK4vq6haD9y7oTPmNT5P4=", + "lastModified": 1746811262, + "narHash": "sha256-Yr/QfKc8MN3TpJozMjRX9ie5EHFeLPBCg1ZLY4+Zhs8=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "531cb9b2eeb83fbbc8487215f4f69ae85613bb66", + "rev": "ca6981cc6f77d4126c9934e9abc41196280f656d", "type": "github" }, "original": { @@ -186,11 +186,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1746289346, - "narHash": "sha256-SuzOGPI0suV8+HOUExQSovCVXaC55DNdPrbdCaji3sU=", + "lastModified": 1746807886, + "narHash": "sha256-gNS0r0JdkdsrqYkzpJK20vDRFSy7+1fuziRWd4BZiu4=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "77a5dcff2b2494e74225d5c70739973241401be6", + "rev": "8ae925057bad39c6a72f55dd2ff0b281e2cea714", "type": "github" }, "original": { @@ -208,11 +208,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1745995211, - "narHash": "sha256-hf6Xu3KS06WyE/3dqV96iLGx3jIYQq9e68iCEFHrt04=", + "lastModified": 1746599904, + "narHash": "sha256-bykoJKLSbNANMY5nedzVYa2Z3GF8poQsNTHAnc19alM=", "owner": "nix-community", "repo": "fenix", - "rev": "0db04339c4e4c0fd42dbbaebe3590a67cbd12aa3", + "rev": "589e863010225278a042480fed5b6feacb364a65", "type": "github" }, "original": { @@ -454,11 +454,11 @@ ] }, "locked": { - "lastModified": 1745987135, - "narHash": "sha256-8Up4QPuMZEJBU0eefAY+nUe7DYKQQzvaHnMpNdwRgKA=", + "lastModified": 1746661235, + "narHash": "sha256-TAm/SnOT8AD3YKYOdjtg5Nmf/hCKEwc0USHBIoXV8qo=", "owner": "nix-community", "repo": "home-manager", - "rev": "d2b3e6c83d457aa0e7f9344c61c3fed32bad0f7e", + "rev": "ec71b5162848e6369bdf2be8d2f1dd41cded88e8", "type": "github" }, "original": { @@ -474,11 +474,11 @@ ] }, "locked": { - "lastModified": 1746287478, - "narHash": "sha256-z3HiHR2CNAdwyZTWPM2kkzhE1gD1G6ExPxkaiQfNh7s=", + "lastModified": 1746798521, + "narHash": "sha256-axfz/jBEH9XHpS7YSumstV7b2PrPf7L8bhWUtLBv3nA=", "owner": "nix-community", "repo": "home-manager", - "rev": "75268f62525920c4936404a056f37b91e299c97e", + "rev": "e95a7c5b6fa93304cd2fd78cf676c4f6d23c422c", "type": "github" }, "original": { @@ -496,11 +496,11 @@ ] }, "locked": { - "lastModified": 1746040799, - "narHash": "sha256-osgPX/SzIpkR50vev/rqoTEAVkEcOWXoQXmbzsaI4KU=", + "lastModified": 1746369725, + "narHash": "sha256-m3ai7LLFYsymMK0uVywCceWfUhP0k3CALyFOfcJACqE=", "owner": "nix-community", "repo": "home-manager", - "rev": "5f217e5a319f6c186283b530f8c975e66c028433", + "rev": "1a1793f6d940d22c6e49753548c5b6cb7dc5545d", "type": "github" }, "original": { @@ -616,11 +616,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1746291290, - "narHash": "sha256-96SpKoIyUsRas+h6RhnPcgbduyH2j2YrujWpsuKdK8Q=", + "lastModified": 1746825381, + "narHash": "sha256-q//4N6ZoN6eBelgzUheQ07Oj6UilDjAOld0eKjnXQd0=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "46ac115bd19ee3aff5c816033de0b1d55a74e33f", + "rev": "60cd5b7a48af4a23717201d70395161a3bb4ab24", "type": "github" }, "original": { @@ -739,11 +739,11 @@ ] }, "locked": { - "lastModified": 1745357019, - "narHash": "sha256-q/C3qj9FWHQenObXuw/nGIT8iIsWFjgmcQYcA+ZfpPs=", + "lastModified": 1746655412, + "narHash": "sha256-kVQ0bHVtX6baYxRWWIh4u3LNJZb9Zcm2xBeDPOGz5BY=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "397600c42b8d7a443a5b4e92aa15f46650a90f18", + "rev": "557241780c179cf7ef224df392f8e67dab6cef83", "type": "github" }, "original": { @@ -795,11 +795,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1746281087, - "narHash": "sha256-9amK5DEpueAD+aobmBmjbV+C16RO7lcDOdf5ucJtNvM=", + "lastModified": 1746809694, + "narHash": "sha256-WLz+tLh7nZfZ6GmwTOBCqP6RClMhdnW7xWsvlgc0Ttg=", "ref": "refs/heads/main", - "rev": "6c64630df81b52208b210f02476f55e4db56e6cf", - "revCount": 362, + "rev": "f7f0c9c6b0b930905eddd61ead4a5f12bf534815", + "revCount": 367, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -816,11 +816,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1745975815, - "narHash": "sha256-s3GzsRxBL/N/xYgUXZhQh4t62uR1BN4zxXgWBtJ3lWM=", + "lastModified": 1746635225, + "narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=", "ref": "refs/heads/main", - "rev": "05878d9470c9e5cbc8807813f9ec2006627a0ca0", - "revCount": 94, + "rev": "674ea57373f08b7609ce93baff131117a0dfe70d", + "revCount": 96, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprutils.git" }, @@ -888,11 +888,11 @@ ] }, "locked": { - "lastModified": 1745487384, - "narHash": "sha256-WvQ4XXi0vMtEpPqhfo8ztxjeaeHkbW5tfR4O5+w8r5U=", + "lastModified": 1746656950, + "narHash": "sha256-tnbPgz/TYBsxuidwFwVYgz/aZLVUy1EkIemTDDOh1XY=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "0168e4a65c9d43c22ac38ff27f5fa31c7d535148", + "rev": "87911a856356a11c7864c0a66c4c000f178e19b0", "type": "github" }, "original": { @@ -926,11 +926,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746141548, - "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", + "lastModified": 1746663147, + "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", + "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", "type": "github" }, "original": { @@ -942,11 +942,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1746183838, - "narHash": "sha256-kwaaguGkAqTZ1oK0yXeQ3ayYjs8u/W7eEfrFpFfIDFA=", + "lastModified": 1746557022, + "narHash": "sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bf3287dac860542719fe7554e21e686108716879", + "rev": "1d3aeb5a193b9ff13f63f4d9cc169fb88129f860", "type": "github" }, "original": { @@ -958,11 +958,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1746183838, - "narHash": "sha256-kwaaguGkAqTZ1oK0yXeQ3ayYjs8u/W7eEfrFpFfIDFA=", + "lastModified": 1746557022, + "narHash": "sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bf3287dac860542719fe7554e21e686108716879", + "rev": "1d3aeb5a193b9ff13f63f4d9cc169fb88129f860", "type": "github" }, "original": { @@ -973,11 +973,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1746141548, - "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", + "lastModified": 1746663147, + "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", + "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", "type": "github" }, "original": { @@ -1074,11 +1074,11 @@ ] }, "locked": { - "lastModified": 1742649964, - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "lastModified": 1746537231, + "narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", "type": "github" }, "original": { @@ -1108,11 +1108,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1745949276, - "narHash": "sha256-9ZK31t2HUiGdLLnDafrRnSrrO12JwqcAFbrJ9nRwh0Y=", + "lastModified": 1746522319, + "narHash": "sha256-q+Qo00BFgXN6xKrsrQI1P7Z3K1s2zKT0GNl0h8DwBH4=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "78a488dd5e7e4f17162001519665795e6e68b6f8", + "rev": "debaef80be92d957f52d6e89c86286556075ea47", "type": "github" }, "original": { @@ -1127,11 +1127,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1746239644, - "narHash": "sha256-wMvMBMlpS1H8CQdSSgpLeoCWS67ciEkN/GVCcwk7Apc=", + "lastModified": 1746844454, + "narHash": "sha256-GcUWDQUDRYrD34ol90KGUpjbVcOfUNbv0s955jPecko=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "bd32e88bef6da0e021a42fb4120a8df2150e9b8c", + "rev": "be092436d4c0c303b654e4007453b69c0e33009e", "type": "github" }, "original": { @@ -1182,11 +1182,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1746223791, - "narHash": "sha256-R/DWYbY+Yr/QULujNlozfBUU2s9nZPoRikjIGPTYcR8=", + "lastModified": 1746806701, + "narHash": "sha256-3XzWny4EsC1SuBuNP0yWI1lwuFbo1P8jioayreHODqg=", "owner": "danth", "repo": "stylix", - "rev": "953e7247ac340e5036f8af47eaccf1a23f1a0257", + "rev": "6690180c17153026c854584e8b7cb9df599127fe", "type": "github" }, "original": { From f708c24dc5657c543b5d92e9f70e57b1f81d7fb9 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 10 May 2025 08:44:59 -0500 Subject: [PATCH 218/317] system fixes --- hosts/ori/configuration.nix | 2 +- modules/user/hyprland/default.nix | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/hosts/ori/configuration.nix b/hosts/ori/configuration.nix index c343f46..7d430d7 100644 --- a/hosts/ori/configuration.nix +++ b/hosts/ori/configuration.nix @@ -17,7 +17,7 @@ # dotfiles dotfilesDir = "/etc/nixos"; - systemBuilder.enable = true; + systemBuilder.enable = false; # security security = { diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index a277111..7e2ec25 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -382,8 +382,7 @@ in kitty killall polkit_gnome - #(inputs.ashell.defaultPackage.${system}) - ashell + (inputs.ashell.defaultPackage.${system}) nwg-launchers papirus-icon-theme (pkgs.writeScriptBin "nwggrid-wrapper" '' From c8666c3638e2021974fa8973bb8eabbf0df0d913 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 10 May 2025 11:14:54 -0500 Subject: [PATCH 219/317] doas fixes --- modules/system/security/doas/default.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/system/security/doas/default.nix b/modules/system/security/doas/default.nix index 0d6e342..477b73f 100644 --- a/modules/system/security/doas/default.nix +++ b/modules/system/security/doas/default.nix @@ -15,6 +15,17 @@ in { security.doas.enable = true; security.sudo.enable = false; security.doas.extraRules = [ + { + users = adminUsers; + keepEnv = true; + persist = true; + } + { + users = adminUsers; + cmd = "phoenix"; + noPass = true; + keepEnv = true; + } { users = adminUsers; cmd = "nix"; From c0532d96d24dee7863bf186093298c568532d10d Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 10 May 2025 11:15:05 -0500 Subject: [PATCH 220/317] updates for hyprland + ashell --- flake.lock | 167 +++++++++-------------------- flake.nix | 16 +-- modules/user/hyprland/ashell.patch | 32 ++++++ modules/user/hyprland/default.nix | 6 +- 4 files changed, 89 insertions(+), 132 deletions(-) create mode 100644 modules/user/hyprland/ashell.patch diff --git a/flake.lock b/flake.lock index 7c1733e..4a22a3b 100644 --- a/flake.lock +++ b/flake.lock @@ -33,31 +33,6 @@ "type": "github" } }, - "ashell": { - "inputs": { - "crane": "crane", - "flake-utils": "flake-utils", - "nixpkgs": [ - "nixpkgs" - ], - "rust-overlay": [ - "rust-overlay" - ] - }, - "locked": { - "lastModified": 1741471836, - "narHash": "sha256-eI3mFllV2GUXkkySHWOSZ6g32amkDHi56nWYWg9LOag=", - "owner": "librephoenix", - "repo": "ashell", - "rev": "02f2d9ce7d04c2a76aa7578c1b9177c6342fbf80", - "type": "github" - }, - "original": { - "owner": "librephoenix", - "repo": "ashell", - "type": "github" - } - }, "base16": { "inputs": { "fromYaml": "fromYaml" @@ -163,21 +138,6 @@ "type": "github" } }, - "crane": { - "locked": { - "lastModified": 1739936662, - "narHash": "sha256-x4syUjNUuRblR07nDPeLDP7DpphaBVbUaSoeZkFbGSk=", - "owner": "ipetkov", - "repo": "crane", - "rev": "19de14aaeb869287647d9461cbd389187d8ecdb7", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, "emacs-overlay": { "inputs": { "nixpkgs": [ @@ -305,24 +265,6 @@ } }, "flake-utils": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_2": { "inputs": { "systems": [ "stylix", @@ -604,28 +546,26 @@ "hyprland-protocols": "hyprland-protocols", "hyprland-qtutils": "hyprland-qtutils", "hyprlang": "hyprlang", - "hyprutils": [ - "hyprutils" - ], + "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": [ "nixpkgs" ], "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_2", + "systems": "systems", "xdph": "xdph" }, "locked": { - "lastModified": 1746825381, - "narHash": "sha256-q//4N6ZoN6eBelgzUheQ07Oj6UilDjAOld0eKjnXQd0=", + "lastModified": 1746735318, + "narHash": "sha256-iN0Ge4LaVT7rATqzIrAZFSdfYuIXbe4/HGcXle7qK1g=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "60cd5b7a48af4a23717201d70395161a3bb4ab24", + "rev": "9958d297641b5c84dcff93f9039d80a5ad37ab00", "type": "github" }, "original": { "owner": "hyprwm", - "ref": "main", + "ref": "v0.49.0", "repo": "Hyprland", "type": "github" } @@ -785,14 +725,12 @@ "inputs": { "hyprgraphics": "hyprgraphics_2", "hyprlang": "hyprlang_2", - "hyprutils": [ - "hyprutils" - ], + "hyprutils": "hyprutils_2", "hyprwayland-scanner": "hyprwayland-scanner_2", "nixpkgs": [ "nixpkgs" ], - "systems": "systems_3" + "systems": "systems_2" }, "locked": { "lastModified": 1746809694, @@ -811,22 +749,51 @@ "hyprutils": { "inputs": { "nixpkgs": [ + "hyprland", "nixpkgs" ], - "systems": "systems_4" + "systems": [ + "hyprland", + "systems" + ] }, "locked": { "lastModified": 1746635225, "narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=", - "ref": "refs/heads/main", + "owner": "hyprwm", + "repo": "hyprutils", "rev": "674ea57373f08b7609ce93baff131117a0dfe70d", - "revCount": 96, - "type": "git", - "url": "https://code.hyprland.org/hyprwm/hyprutils.git" + "type": "github" }, "original": { - "type": "git", - "url": "https://code.hyprland.org/hyprwm/hyprutils.git" + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprutils_2": { + "inputs": { + "nixpkgs": [ + "hyprlock", + "nixpkgs" + ], + "systems": [ + "hyprlock", + "systems" + ] + }, + "locked": { + "lastModified": 1746635225, + "narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "674ea57373f08b7609ce93baff131117a0dfe70d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" } }, "hyprwayland-scanner": { @@ -1089,14 +1056,12 @@ }, "root": { "inputs": { - "ashell": "ashell", "blocklist-hosts": "blocklist-hosts", "chaotic": "chaotic", "emacs-overlay": "emacs-overlay", "home-manager": "home-manager_2", "hyprland": "hyprland", "hyprlock": "hyprlock", - "hyprutils": "hyprutils", "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_2", "plasma-manager": "plasma-manager", @@ -1168,13 +1133,13 @@ "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils", "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", "nixpkgs": "nixpkgs_4", "nur": "nur", - "systems": "systems_5", + "systems": "systems_3", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -1197,16 +1162,16 @@ }, "systems": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default", + "repo": "default-linux", "type": "github" } }, @@ -1226,36 +1191,6 @@ } }, "systems_3": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_4": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_5": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", diff --git a/flake.nix b/flake.nix index 68b180e..f1a3520 100644 --- a/flake.nix +++ b/flake.nix @@ -86,14 +86,7 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; hyprland = { - url = "github:hyprwm/Hyprland/main?submodules=true"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.hyprutils.follows = "hyprutils"; - }; - - hyprutils = { - type = "git"; - url = "https://code.hyprland.org/hyprwm/hyprutils.git"; + url = "github:hyprwm/Hyprland/v0.49.0?submodules=true"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -101,13 +94,6 @@ type = "git"; url = "https://code.hyprland.org/hyprwm/hyprlock.git"; inputs.nixpkgs.follows = "nixpkgs"; - inputs.hyprutils.follows = "hyprutils"; - }; - - ashell = { - url = "github:librephoenix/ashell"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.rust-overlay.follows = "rust-overlay"; }; plasma-manager = { diff --git a/modules/user/hyprland/ashell.patch b/modules/user/hyprland/ashell.patch new file mode 100644 index 0000000..f45c903 --- /dev/null +++ b/modules/user/hyprland/ashell.patch @@ -0,0 +1,32 @@ +diff --git a/src/modules/workspaces.rs b/src/modules/workspaces.rs +index 806d499..3737a82 100644 +--- a/src/modules/workspaces.rs ++++ b/src/modules/workspaces.rs +@@ -41,6 +41,7 @@ fn get_workspaces(enable_workspace_filling: bool) -> Vec { + let mut workspaces = hyprland::data::Workspaces::get() + .map(|w| w.to_vec()) + .unwrap_or_default(); ++ workspaces.retain(|w| w.id > 0); + + workspaces.sort_by_key(|w| w.id); + +diff --git a/src/outputs.rs b/src/outputs.rs +index adc616b..ce63b57 100644 +--- a/src/outputs.rs ++++ b/src/outputs.rs +@@ -58,6 +58,7 @@ impl Outputs { + id, + size: Some((None, Some(HEIGHT))), + layer: Layer::Bottom, ++ namespace: String::from("ashell"), + pointer_interactivity: true, + keyboard_interactivity: KeyboardInteractivity::None, + exclusive_zone: HEIGHT as i32, +@@ -77,6 +78,7 @@ impl Outputs { + id: menu_id, + size: Some((None, None)), + layer: Layer::Background, ++ namespace: String::from("ashell"), + pointer_interactivity: true, + keyboard_interactivity: KeyboardInteractivity::None, + output: wl_output.map_or(IcedOutput::Active, |wl_output| { diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 7e2ec25..2defcd8 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -382,7 +382,11 @@ in kitty killall polkit_gnome - (inputs.ashell.defaultPackage.${system}) + (ashell.overrideAttrs (o: { + patches = (o.patches or [ ]) ++ [ + ./ashell.patch + ]; + })) nwg-launchers papirus-icon-theme (pkgs.writeScriptBin "nwggrid-wrapper" '' From 38e7e0469cec913b1fbb1e6abd650ca1ae31a813 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 10 May 2025 11:17:01 -0500 Subject: [PATCH 221/317] opengl for ashell --- modules/user/hyprland/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 2defcd8..317c8e9 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -55,7 +55,7 @@ in exec-once = [ "hyprctl setcursor ${config.gtk.cursorTheme.name} ${builtins.toString config.gtk.cursorTheme.size}" "hyprpaper" - "ashell" + "WGPU_BACKEND=gl ashell" "hypridle" "iio-hyprland" "hyprprofile Default" @@ -435,7 +435,7 @@ in pkill -CONT emacsclient; systemctl --user start mpd; systemctl --user start nextcloud-client; - ashell & disown; + WGPU_BACKEND=gl ashell & disown; hypridle & disown; exit; fi From 12fe0ac1f22424a1b1c584808b1a1f15a4f33e87 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 10 May 2025 11:37:19 -0500 Subject: [PATCH 222/317] various cleanup --- hosts/snowfire/configuration.nix | 13 ++----------- hosts/zenith/configuration.nix | 3 ++- modules/user/hyprland/default.nix | 5 +++++ 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index c74cebc..311d17b 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -23,7 +23,6 @@ # wm hyprland.enable = true; - gnome.enable = true; # dotfiles dotfilesDir = "/etc/nixos"; @@ -54,16 +53,8 @@ name = "Emmet"; email = "emmet@librephoenix.com"; }; - #users.users.corrina.description = "Corrina"; - #home-manager.users.corrina.userSettings = { - # name = "Corrina"; - # email = ""; - # stylix.theme = "spaceduck"; - #}; - #home-manager.users.corrina.services.nextcloud-client = { - # enable = lib.mkForce false; - # startInBackground = lib.mkForce false; - #}; + + services.displayManager.defaultSession = "hyprland"; }; diff --git a/hosts/zenith/configuration.nix b/hosts/zenith/configuration.nix index a0a6339..037c241 100644 --- a/hosts/zenith/configuration.nix +++ b/hosts/zenith/configuration.nix @@ -22,7 +22,6 @@ # wm hyprland.enable = true; - gnome.enable = true; # dotfiles dotfilesDir = "/etc/nixos"; @@ -56,6 +55,8 @@ services.xserver.wacom.enable = true; services.xserver.videoDrivers = [ "i915" ]; + services.displayManager.defaultSession = "hyprland"; + }; } diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 317c8e9..1f1cfcf 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -370,6 +370,11 @@ in force_zero_scaling = true; }; + ecosystem = { + no_update_news = true; + no_donation_nag = true; + }; + }; systemd.variables = ["--all"]; xwayland = { enable = true; }; From fef1d51ec152a941e0eae8b414e58d991d657119 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 10 May 2025 11:37:24 -0500 Subject: [PATCH 223/317] work time management --- modules/user/shell/term-apps.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/user/shell/term-apps.nix b/modules/user/shell/term-apps.nix index 8b9b8d3..ea2d2e4 100644 --- a/modules/user/shell/term-apps.nix +++ b/modules/user/shell/term-apps.nix @@ -16,6 +16,7 @@ in { killall libnotify timer + pomodoro brightnessctl gnugrep bat eza fd bottom ripgrep From 76bc180286aa52f912b5322975491ea5f22ecc7f Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 10 May 2025 12:16:55 -0500 Subject: [PATCH 224/317] various fixes --- flake.lock | 8 ++++---- hosts/duskfall/configuration.nix | 1 - hosts/duskfall/home.nix | 1 - 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 4a22a3b..0b3e70d 100644 --- a/flake.lock +++ b/flake.lock @@ -1112,11 +1112,11 @@ ] }, "locked": { - "lastModified": 1744677857, - "narHash": "sha256-rzB2asFlUmIgk4RYeE02VAp4rEVdgvkYz/uI4nrPr6c=", + "lastModified": 1746897014, + "narHash": "sha256-2f1EHQMxv361yLJC/KMNN0Uqx1esuSpf5rc0KqvUS+s=", "ref": "refs/heads/main", - "rev": "1c92caae52da290404011b17491e91f93c4fbb47", - "revCount": 28, + "rev": "91ba604b210663353542b97d6498cc1631a22053", + "revCount": 29, "type": "git", "url": "file://path:/etc/nixos.secrets" }, diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index ee482d8..9b0522b 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -21,7 +21,6 @@ }; # wm - hyprland.enable = true; gnome.enable = true; # dotfiles diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index c848eff..56a761f 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -29,7 +29,6 @@ office.enable = true; # wm - hyprland.enable = true; gnome.enable = true; # style From 61098b8bf2e29bd191cb714c2f025de3523ba610 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 10 May 2025 12:49:21 -0500 Subject: [PATCH 225/317] might need this sometimes --- modules/user/engineering/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/user/engineering/default.nix b/modules/user/engineering/default.nix index 8566727..4c371fa 100644 --- a/modules/user/engineering/default.nix +++ b/modules/user/engineering/default.nix @@ -17,6 +17,7 @@ in { cura-appimage arduino-ide graphviz + vscodium-fhs ]; xdg.desktopEntries.cura = lib.mkForce { name = "Ultimaker Cura"; From e2f4029a996dd53306d52f61b2b192a2fc5d37ec Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 17 May 2025 10:01:16 -0500 Subject: [PATCH 226/317] Updated system --- flake.lock | 131 +++++++++++++++++++++++------------------------------ 1 file changed, 56 insertions(+), 75 deletions(-) diff --git a/flake.lock b/flake.lock index 0b3e70d..7fcd151 100644 --- a/flake.lock +++ b/flake.lock @@ -38,11 +38,11 @@ "fromYaml": "fromYaml" }, "locked": { - "lastModified": 1745523430, - "narHash": "sha256-EAYWV+kXbwsH+8G/8UtmcunDeKwLwSOyfcmzZUkWE/c=", + "lastModified": 1746562888, + "narHash": "sha256-YgNJQyB5dQiwavdDFBMNKk1wyS77AtdgDk/VtU6wEaI=", "owner": "SenchoPens", "repo": "base16.nix", - "rev": "58bfe2553d937d8af0564f79d5b950afbef69717", + "rev": "806a1777a5db2a1ef9d5d6f493ef2381047f2b89", "type": "github" }, "original": { @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1746736932, - "narHash": "sha256-ISlve6L7Z/pi0Vkb6a7SW+3fsDX56IkjVDXNkTPFpJU=", + "lastModified": 1747341484, + "narHash": "sha256-RZMK0BInyHhRc8qOE+PvKKt2wSXM1IbkvP/YKU1WuwA=", "owner": "StevenBlack", "repo": "hosts", - "rev": "d64ec295d025c6cac7b04f4859c8a8408c485fad", + "rev": "9a5c90e8e320e009240f099c644c5042a44df583", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1746811262, - "narHash": "sha256-Yr/QfKc8MN3TpJozMjRX9ie5EHFeLPBCg1ZLY4+Zhs8=", + "lastModified": 1747468425, + "narHash": "sha256-kMeniT8rFEnbY/hjRG1gj/KubY7A7ASKS8a21mJlnq4=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "ca6981cc6f77d4126c9934e9abc41196280f656d", + "rev": "8e0feebc3ae6e5604113e7636236b3d9c46e8bf0", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1746807886, - "narHash": "sha256-gNS0r0JdkdsrqYkzpJK20vDRFSy7+1fuziRWd4BZiu4=", + "lastModified": 1747472690, + "narHash": "sha256-lJTFqwe1GAn5aqjJI8QNpgW5ITj+knu7kGlQPhlNiTA=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "8ae925057bad39c6a72f55dd2ff0b281e2cea714", + "rev": "59c04dd982a4af9dbf5180da5fcb10b0333bfa7f", "type": "github" }, "original": { @@ -168,11 +168,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1746599904, - "narHash": "sha256-bykoJKLSbNANMY5nedzVYa2Z3GF8poQsNTHAnc19alM=", + "lastModified": 1747392669, + "narHash": "sha256-zky3+lndxKRu98PAwVK8kXPdg+Q1NVAhaI7YGrboKYA=", "owner": "nix-community", "repo": "fenix", - "rev": "589e863010225278a042480fed5b6feacb364a65", + "rev": "c3c27e603b0d9b5aac8a16236586696338856fbb", "type": "github" }, "original": { @@ -232,7 +232,6 @@ "inputs": { "nixpkgs-lib": [ "stylix", - "nur", "nixpkgs" ] }, @@ -264,27 +263,6 @@ "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz" } }, - "flake-utils": { - "inputs": { - "systems": [ - "stylix", - "systems" - ] - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "fromYaml": { "flake": false, "locked": { @@ -396,11 +374,11 @@ ] }, "locked": { - "lastModified": 1746661235, - "narHash": "sha256-TAm/SnOT8AD3YKYOdjtg5Nmf/hCKEwc0USHBIoXV8qo=", + "lastModified": 1747439237, + "narHash": "sha256-5rCGrnkglKKj4cav1U3HC+SIUNJh08pqOK4spQv9RjA=", "owner": "nix-community", "repo": "home-manager", - "rev": "ec71b5162848e6369bdf2be8d2f1dd41cded88e8", + "rev": "ae755329092c87369b9e9a1510a8cf1ce2b1c708", "type": "github" }, "original": { @@ -416,11 +394,11 @@ ] }, "locked": { - "lastModified": 1746798521, - "narHash": "sha256-axfz/jBEH9XHpS7YSumstV7b2PrPf7L8bhWUtLBv3nA=", + "lastModified": 1747439237, + "narHash": "sha256-5rCGrnkglKKj4cav1U3HC+SIUNJh08pqOK4spQv9RjA=", "owner": "nix-community", "repo": "home-manager", - "rev": "e95a7c5b6fa93304cd2fd78cf676c4f6d23c422c", + "rev": "ae755329092c87369b9e9a1510a8cf1ce2b1c708", "type": "github" }, "original": { @@ -438,11 +416,11 @@ ] }, "locked": { - "lastModified": 1746369725, - "narHash": "sha256-m3ai7LLFYsymMK0uVywCceWfUhP0k3CALyFOfcJACqE=", + "lastModified": 1747279714, + "narHash": "sha256-UdxlE8yyrKiGq3bgGyJ78AdFwh+fuRAruKtyFY5Zq5I=", "owner": "nix-community", "repo": "home-manager", - "rev": "1a1793f6d940d22c6e49753548c5b6cb7dc5545d", + "rev": "954615c510c9faa3ee7fb6607ff72e55905e69f2", "type": "github" }, "original": { @@ -783,11 +761,11 @@ ] }, "locked": { - "lastModified": 1746635225, - "narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=", + "lastModified": 1743950287, + "narHash": "sha256-/6IAEWyb8gC/NKZElxiHChkouiUOrVYNq9YqG0Pzm4Y=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "674ea57373f08b7609ce93baff131117a0dfe70d", + "rev": "f2dc70e448b994cef627a157ee340135bd68fbc6", "type": "github" }, "original": { @@ -855,11 +833,11 @@ ] }, "locked": { - "lastModified": 1746656950, - "narHash": "sha256-tnbPgz/TYBsxuidwFwVYgz/aZLVUy1EkIemTDDOh1XY=", + "lastModified": 1747382851, + "narHash": "sha256-zG8t3TGO1xtpLyVjifTfWjuJk/FeEG8SxdlS6KcrMww=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "87911a856356a11c7864c0a66c4c000f178e19b0", + "rev": "d5b45fe76efba6c9d4f728f0010a08026fd00f76", "type": "github" }, "original": { @@ -893,11 +871,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746663147, - "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", + "lastModified": 1747327360, + "narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", + "rev": "e06158e58f3adee28b139e9c2bcfcc41f8625b46", "type": "github" }, "original": { @@ -909,11 +887,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1746557022, - "narHash": "sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0=", + "lastModified": 1747209494, + "narHash": "sha256-fLise+ys+bpyjuUUkbwqo5W/UyIELvRz9lPBPoB0fbM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1d3aeb5a193b9ff13f63f4d9cc169fb88129f860", + "rev": "5d736263df906c5da72ab0f372427814de2f52f8", "type": "github" }, "original": { @@ -925,11 +903,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1746557022, - "narHash": "sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0=", + "lastModified": 1747335874, + "narHash": "sha256-IKKIXTSYJMmUtE+Kav5Rob8SgLPnfnq4Qu8LyT4gdqQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1d3aeb5a193b9ff13f63f4d9cc169fb88129f860", + "rev": "ba8b70ee098bc5654c459d6a95dfc498b91ff858", "type": "github" }, "original": { @@ -940,11 +918,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1746663147, - "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", + "lastModified": 1747327360, + "narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", + "rev": "e06158e58f3adee28b139e9c2bcfcc41f8625b46", "type": "github" }, "original": { @@ -987,7 +965,10 @@ }, "nur": { "inputs": { - "flake-parts": "flake-parts", + "flake-parts": [ + "stylix", + "flake-parts" + ], "nixpkgs": [ "stylix", "nixpkgs" @@ -1073,11 +1054,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1746522319, - "narHash": "sha256-q+Qo00BFgXN6xKrsrQI1P7Z3K1s2zKT0GNl0h8DwBH4=", + "lastModified": 1747323949, + "narHash": "sha256-G4NwzhODScKnXqt2mEQtDFOnI0wU3L1WxsiHX3cID/0=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "debaef80be92d957f52d6e89c86286556075ea47", + "rev": "f8e784353bde7cbf9a9046285c1caf41ac484ebe", "type": "github" }, "original": { @@ -1092,11 +1073,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1746844454, - "narHash": "sha256-GcUWDQUDRYrD34ol90KGUpjbVcOfUNbv0s955jPecko=", + "lastModified": 1747449297, + "narHash": "sha256-veyXchTz6eWwvuW5X49UluHkheHkFcqHJSwGuKBhrmQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "be092436d4c0c303b654e4007453b69c0e33009e", + "rev": "f44db7d7cea4528288780c6347756173a8248225", "type": "github" }, "original": { @@ -1133,7 +1114,7 @@ "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils", + "flake-parts": "flake-parts", "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", "home-manager": "home-manager_3", @@ -1147,11 +1128,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1746806701, - "narHash": "sha256-3XzWny4EsC1SuBuNP0yWI1lwuFbo1P8jioayreHODqg=", + "lastModified": 1747441332, + "narHash": "sha256-On+cwR/dMW9s+YWsYifIaRs18nNyK5HVFJav6HsRrU8=", "owner": "danth", "repo": "stylix", - "rev": "6690180c17153026c854584e8b7cb9df599127fe", + "rev": "101d23dfacbb2704c40639ae9b6ac1d41de7143a", "type": "github" }, "original": { From 590a16df8d4171d5915b1a67b5cef1c7abac4203 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 21 May 2025 13:58:12 -0500 Subject: [PATCH 227/317] fast nix building --- modules/system/phoenix/default.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 504fe19..7368f37 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -25,6 +25,7 @@ environment.systemPackages = with pkgs; [ attic-client git + nix-output-monitor (pkgs.writeScriptBin "phoenix" '' if [[ $EUID -ne 0 ]]; then echo "Error: This script must be run as root" 1>&2 @@ -37,7 +38,7 @@ chown -R 0:0 ${config.systemSettings.dotfilesDir}; chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; pushd ${config.systemSettings.dotfilesDir} &> /dev/null; - nixos-rebuild switch; + nixos-rebuild switch --fast; popd &> /dev/null; exit 0; elif [ "$1" = "update" ]; then @@ -77,19 +78,19 @@ chown -R 0:0 ${config.systemSettings.dotfilesDir}; chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; pushd ${config.systemSettings.dotfilesDir} &> /dev/null; - nixos-rebuild build --flake .#snowfire; + nixos-rebuild build --fast --flake .#snowfire; attic push emmet ./result; rm ./result; - nixos-rebuild build --flake .#duskfall; + nixos-rebuild build --fast --flake .#duskfall; attic push emmet ./result; rm ./result; - nixos-rebuild build --flake .#zenith; + nixos-rebuild build --fast --flake .#zenith; attic push emmet ./result; rm ./result; - nixos-rebuild build --flake .#stardust; + nixos-rebuild build --fast --flake .#stardust; attic push emmet ./result; rm ./result; - nixos-rebuild build --flake .#ori; + nixos-rebuild build --fast --flake .#ori; attic push emmet ./result; rm ./result; exit 0; From ba41fa5c0aaf2e68ebc362e7452cea7c5e548669 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 28 May 2025 17:26:34 -0500 Subject: [PATCH 228/317] updated system --- flake.lock | 107 ++++++++++++++++++++++++++--------------------------- 1 file changed, 53 insertions(+), 54 deletions(-) diff --git a/flake.lock b/flake.lock index 7fcd151..9a7ba5c 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1747341484, - "narHash": "sha256-RZMK0BInyHhRc8qOE+PvKKt2wSXM1IbkvP/YKU1WuwA=", + "lastModified": 1747792192, + "narHash": "sha256-HeWotX8CVc3vDlvAGq99FaeAT9JRSWtx4N/NhtjPwtg=", "owner": "StevenBlack", "repo": "hosts", - "rev": "9a5c90e8e320e009240f099c644c5042a44df583", + "rev": "dbdcb032706dfe548745266218501afa93c14ad5", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1747468425, - "narHash": "sha256-kMeniT8rFEnbY/hjRG1gj/KubY7A7ASKS8a21mJlnq4=", + "lastModified": 1748116304, + "narHash": "sha256-gpO/jh/T/Ygx8ewq0y4LQDKEqvZJ3WiRg3ur8K9KfFg=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "8e0feebc3ae6e5604113e7636236b3d9c46e8bf0", + "rev": "54741d5ed1e944d68ff94fb09ce967269156f65e", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1747472690, - "narHash": "sha256-lJTFqwe1GAn5aqjJI8QNpgW5ITj+knu7kGlQPhlNiTA=", + "lastModified": 1748107096, + "narHash": "sha256-PmQY/yDSlxxma3RBW2v+yWSvpJTubcmXUdoAlaJv7Dk=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "59c04dd982a4af9dbf5180da5fcb10b0333bfa7f", + "rev": "5e55769b7a39ab810f761874aff5787c74e981da", "type": "github" }, "original": { @@ -352,16 +352,16 @@ "gnome-shell": { "flake": false, "locked": { - "lastModified": 1732369855, - "narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=", + "lastModified": 1744584021, + "narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=", "owner": "GNOME", "repo": "gnome-shell", - "rev": "dadd58f630eeea41d645ee225a63f719390829dc", + "rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae", "type": "github" }, "original": { "owner": "GNOME", - "ref": "47.2", + "ref": "48.1", "repo": "gnome-shell", "type": "github" } @@ -374,11 +374,11 @@ ] }, "locked": { - "lastModified": 1747439237, - "narHash": "sha256-5rCGrnkglKKj4cav1U3HC+SIUNJh08pqOK4spQv9RjA=", + "lastModified": 1747978958, + "narHash": "sha256-pQQnbxWpY3IiZqgelXHIe/OAE/Yv4NSQq7fch7M6nXQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "ae755329092c87369b9e9a1510a8cf1ce2b1c708", + "rev": "7419250703fd5eb50e99bdfb07a86671939103ea", "type": "github" }, "original": { @@ -394,11 +394,11 @@ ] }, "locked": { - "lastModified": 1747439237, - "narHash": "sha256-5rCGrnkglKKj4cav1U3HC+SIUNJh08pqOK4spQv9RjA=", + "lastModified": 1747978958, + "narHash": "sha256-pQQnbxWpY3IiZqgelXHIe/OAE/Yv4NSQq7fch7M6nXQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "ae755329092c87369b9e9a1510a8cf1ce2b1c708", + "rev": "7419250703fd5eb50e99bdfb07a86671939103ea", "type": "github" }, "original": { @@ -416,11 +416,11 @@ ] }, "locked": { - "lastModified": 1747279714, - "narHash": "sha256-UdxlE8yyrKiGq3bgGyJ78AdFwh+fuRAruKtyFY5Zq5I=", + "lastModified": 1747763032, + "narHash": "sha256-9j3oCbemeH7bTVXJ3pDWxOptbxDx2SdK1jY2AHpjQiw=", "owner": "nix-community", "repo": "home-manager", - "rev": "954615c510c9faa3ee7fb6607ff72e55905e69f2", + "rev": "29dda415f5b2178278283856c6f9f7b48a2a4353", "type": "github" }, "original": { @@ -711,11 +711,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1746809694, - "narHash": "sha256-WLz+tLh7nZfZ6GmwTOBCqP6RClMhdnW7xWsvlgc0Ttg=", + "lastModified": 1747635830, + "narHash": "sha256-IypoV7crmhQ4llD0n4qqO4XTRNAAbHfA+2oiTiq2qpk=", "ref": "refs/heads/main", - "rev": "f7f0c9c6b0b930905eddd61ead4a5f12bf534815", - "revCount": 367, + "rev": "da1d076d849fc0f298c1d287bddd04802bf7d0f9", + "revCount": 368, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -833,11 +833,11 @@ ] }, "locked": { - "lastModified": 1747382851, - "narHash": "sha256-zG8t3TGO1xtpLyVjifTfWjuJk/FeEG8SxdlS6KcrMww=", + "lastModified": 1747990026, + "narHash": "sha256-sG5VbID+x5+xUC+jjgHibnzg8IllVcH+K2TLmYHLPME=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "d5b45fe76efba6c9d4f728f0010a08026fd00f76", + "rev": "e2f4ced874406541a7957f7e2b8f05a0d59a0f00", "type": "github" }, "original": { @@ -871,11 +871,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747327360, - "narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=", + "lastModified": 1748026106, + "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e06158e58f3adee28b139e9c2bcfcc41f8625b46", + "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", "type": "github" }, "original": { @@ -887,11 +887,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1747209494, - "narHash": "sha256-fLise+ys+bpyjuUUkbwqo5W/UyIELvRz9lPBPoB0fbM=", + "lastModified": 1747862697, + "narHash": "sha256-U4HaNZ1W26cbOVm0Eb5OdGSnfQVWQKbLSPrSSa78KC0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5d736263df906c5da72ab0f372427814de2f52f8", + "rev": "2baa12ff69913392faf0ace833bc54bba297ea95", "type": "github" }, "original": { @@ -903,11 +903,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1747335874, - "narHash": "sha256-IKKIXTSYJMmUtE+Kav5Rob8SgLPnfnq4Qu8LyT4gdqQ=", + "lastModified": 1747862697, + "narHash": "sha256-U4HaNZ1W26cbOVm0Eb5OdGSnfQVWQKbLSPrSSa78KC0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ba8b70ee098bc5654c459d6a95dfc498b91ff858", + "rev": "2baa12ff69913392faf0ace833bc54bba297ea95", "type": "github" }, "original": { @@ -918,11 +918,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1747327360, - "narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=", + "lastModified": 1748026106, + "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e06158e58f3adee28b139e9c2bcfcc41f8625b46", + "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", "type": "github" }, "original": { @@ -949,11 +949,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1745930157, - "narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=", + "lastModified": 1747542820, + "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae", + "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", "type": "github" }, "original": { @@ -1073,11 +1073,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1747449297, - "narHash": "sha256-veyXchTz6eWwvuW5X49UluHkheHkFcqHJSwGuKBhrmQ=", + "lastModified": 1748054080, + "narHash": "sha256-rwFiLLNCwkj9bqePtH1sMqzs1xmohE0Ojq249piMzF4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f44db7d7cea4528288780c6347756173a8248225", + "rev": "2221d8d53c128beb69346fa3ab36da3f19bb1691", "type": "github" }, "original": { @@ -1128,11 +1128,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1747441332, - "narHash": "sha256-On+cwR/dMW9s+YWsYifIaRs18nNyK5HVFJav6HsRrU8=", + "lastModified": 1748028561, + "narHash": "sha256-IgtJU6n9vR3nBUdcXrc7K9E+Y/G/4P6hFifGRr1tXMU=", "owner": "danth", "repo": "stylix", - "rev": "101d23dfacbb2704c40639ae9b6ac1d41de7143a", + "rev": "34b5930894d8315401d93bd8a9a6635e1cd28eff", "type": "github" }, "original": { @@ -1206,17 +1206,16 @@ "tinted-kitty": { "flake": false, "locked": { - "lastModified": 1716423189, - "narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=", + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", "owner": "tinted-theming", "repo": "tinted-kitty", - "rev": "eb39e141db14baef052893285df9f266df041ff8", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", "type": "github" }, "original": { "owner": "tinted-theming", "repo": "tinted-kitty", - "rev": "eb39e141db14baef052893285df9f266df041ff8", "type": "github" } }, From 8c62da4806207438615ad266dab02314dda15166 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 28 May 2025 17:26:54 -0500 Subject: [PATCH 229/317] some godot + emacs fixes --- modules/user/emacs/init.el | 11 +++++++---- modules/user/hyprland/default.nix | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index f415df6..8327227 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -333,11 +333,14 @@ :after (treemacs)) (use-package lsp-mode - :custom - (lsp-keymap-prefix (kbd "SPC l")) + :config + (setq lsp-keymap-prefix "SPC l") + (evil-define-key 'normal lsp-mode-map (kbd "SPC l") lsp-command-map) (setq lsp-completion-provider :none) - :hook ((gdscript-mode . lsp-deferred) - (gdscript-ts-mode . lsp-deferred)) + :hook + (lsp-mode . evil-normalize-keymaps) + (gdscript-mode . lsp-deferred) + (gdscript-ts-mode . lsp-deferred) :commands lsp-deferred) (use-package lsp-ui :commands lsp-ui-mode) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 1f1cfcf..4690aea 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -36,6 +36,7 @@ in CLUTTER_BACKEND = "wayland"; GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"; GSK_RENDERER = "gl"; + XCURSOR_THEME = config.gtk.cursorTheme.name; }; gtk.cursorTheme = { From cb4946c86d1cb54f7c6181d2cb5ba84b900ceea2 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 28 May 2025 17:27:01 -0500 Subject: [PATCH 230/317] hyprland fixes --- hosts/snowfire/home.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index f67ccff..c89dc0b 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -53,12 +53,6 @@ "HDMI-A-1,1920x1080,1536x0,1.25,vrr,0" "DP-1,1920x1080,0x0,1.25,vrr,0" ]; - misc = { - vrr = 1; - }; - experimental = { - xx_color_management_v4 = true; - }; }; }; From 54bd50e866b179200d8cfe26bf05b0789aba6ffd Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 28 May 2025 17:27:06 -0500 Subject: [PATCH 231/317] trying upscayl --- modules/user/art/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/user/art/default.nix b/modules/user/art/default.nix index d3fa853..e493658 100644 --- a/modules/user/art/default.nix +++ b/modules/user/art/default.nix @@ -17,6 +17,7 @@ in { inkscape libresprite makehuman + upscayl ]; userSettings.blender.enable = true; }; From a0c30fa91a34a41c632d9216031037f70ebaa80e Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 28 May 2025 18:28:25 -0500 Subject: [PATCH 232/317] Trying vscodium out --- hosts/duskfall/home.nix | 3 +- hosts/snowfire/home.nix | 3 +- hosts/stardust/home.nix | 2 +- hosts/zenith/home.nix | 5 +- modules/user/editor/default.nix | 18 +++++- modules/user/engineering/default.nix | 2 +- modules/user/vscodium/default.nix | 95 ++++++++++++++++++++++++++++ 7 files changed, 119 insertions(+), 9 deletions(-) create mode 100644 modules/user/vscodium/default.nix diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index 56a761f..b78bb65 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -15,7 +15,8 @@ # programs browser = "qutebrowser"; brave.enable = true; - editor = "emacs"; + editor = "vscodium"; + emacs.enable = true; ranger.enable = true; yazi.enable = true; git.enable = true; diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index c89dc0b..790b424 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -15,7 +15,8 @@ # programs browser = "qutebrowser"; brave.enable = true; - editor = "emacs"; + editor = "vscodium"; + emacs.enable = true; ranger.enable = true; yazi.enable = true; git.enable = true; diff --git a/hosts/stardust/home.nix b/hosts/stardust/home.nix index 055dc96..4c55d07 100644 --- a/hosts/stardust/home.nix +++ b/hosts/stardust/home.nix @@ -14,7 +14,7 @@ # programs browser = "brave"; - editor = "kate"; + editor = "vscodium"; ranger.enable = true; yazi.enable = true; git.enable = true; diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index f4dffd9..1b5648e 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -14,7 +14,8 @@ # programs browser = "qutebrowser"; brave.enable = true; - editor = "emacs"; + editor = "vscodium"; + emacs.enable = true; ranger.enable = true; yazi.enable = true; git.enable = true; @@ -42,7 +43,7 @@ }; home.packages = with pkgs; [ - openldap ldapvi + openldap ldapvi rclone teams-for-linux ]; home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable { diff --git a/modules/user/editor/default.nix b/modules/user/editor/default.nix index 3aa64c2..b80abd6 100644 --- a/modules/user/editor/default.nix +++ b/modules/user/editor/default.nix @@ -6,9 +6,9 @@ let in { options = { userSettings.editor = lib.mkOption { - default = "emacs"; + default = "vscodium"; description = "Default editor"; - type = lib.types.enum [ "emacs" "kate" ]; + type = lib.types.enum [ "emacs" "kate" "vscodium" ]; # TODO add more editors #type = lib.types.enum [ "emacs" "vim" "nvim" "neovide" "nano" "micro" "vscodium" "kate" "pulsar" ]; }; @@ -20,13 +20,25 @@ in { config = { userSettings.emacs.enable = lib.mkIf (config.userSettings.editor == "emacs") true; + userSettings.vscodium.enable = lib.mkIf (config.userSettings.editor == "vscodium") true; home.packages = with pkgs; lib.optionals (editor == "kate") [ kdePackages.kate]; userSettings.spawnEditor = lib.mkMerge [ (lib.mkIf (editor == "emacs") "emacsclient -c -a 'emacs'") (lib.mkIf (editor == "neovide") "neovide -- --listen /tmp/nvimsocket") + (lib.mkIf (editor == "vscodium") "codium -n") (lib.mkIf (builtins.elem editor [ "vim" "nvim" "nano" "micro" ]) ("exec " + term + " -e " + editor)) - (lib.mkIf (!(builtins.elem editor [ "emacs" "vim" "nvim" "neovide" "nano" "micro"])) editor) + (lib.mkIf (!(builtins.elem editor [ "emacs" "vim" "nvim" "neovide" "nano" "micro" "vscodium"])) editor) ]; + home.sessionVariables = { + EDITOR = + lib.mkMerge [ + (lib.mkIf (editor == "emacs") "emacsclient -c") + (lib.mkIf (editor == "neovide") "neovide -- --listen /tmp/nvimsocket") + (lib.mkIf (editor == "vscodium") "codium -n") + (lib.mkIf (builtins.elem editor [ "vim" "nvim" "nano" "micro" ]) ("exec " + term + " -e " + editor)) + (lib.mkIf (!(builtins.elem editor [ "emacs" "vim" "nvim" "neovide" "nano" "micro" "vscodium" ])) editor) + ]; + }; }; } diff --git a/modules/user/engineering/default.nix b/modules/user/engineering/default.nix index 4c371fa..9b692bb 100644 --- a/modules/user/engineering/default.nix +++ b/modules/user/engineering/default.nix @@ -17,8 +17,8 @@ in { cura-appimage arduino-ide graphviz - vscodium-fhs ]; + userSettings.vscodium.enable = true; xdg.desktopEntries.cura = lib.mkForce { name = "Ultimaker Cura"; genericName = "3D Printing Software"; diff --git a/modules/user/vscodium/default.nix b/modules/user/vscodium/default.nix new file mode 100644 index 0000000..6273a1e --- /dev/null +++ b/modules/user/vscodium/default.nix @@ -0,0 +1,95 @@ +{ config, lib, pkgs, ... }: +let + cfg = config.userSettings.vscodium; +in { + options = { + userSettings.vscodium = { + enable = lib.mkEnableOption "Enable vscodium"; + }; + }; + + config = lib.mkIf cfg.enable { + programs.vscode = { + enable = true; + package = pkgs.vscodium; + profiles.default.extensions = with pkgs.vscode-extensions; [ + vscodevim.vim + kahole.magit + jnoortheen.nix-ide + mkhl.direnv + geequlim.godot-tools + yzhang.markdown-all-in-one + ]; + profiles.default.userSettings = { + "keyboard.dispatch" = "keyCode"; + }; + profiles.default.keybindings = [ + { + "key" = "g g"; + "command" = "cursorTop"; + "when" = "editorTextFocus && editorLangId == 'magit' && vim.mode =~ /^(?!SearchInProgressMode|CommandlineInProgress).*$/" ; + } + { "key" = "g r"; + "command" = "magit.refresh"; + "when" = "editorTextFocus && editorLangId == 'magit' && vim.mode =~ /^(?!SearchInProgressMode|CommandlineInProgress).*$/" ; + } + { + "key" = "tab"; + "command" = "extension.vim_tab"; + "when" = "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert' && editorLangId != 'magit'"; + } + { + "key" = "tab"; + "command" = "-extension.vim_tab"; + } + { + "key" = "x"; + "command" = "magit.discard-at-point"; + "when" = "editorTextFocus && editorLangId == 'magit' && vim.mode =~ /^(?!SearchInProgressMode|CommandlineInProgress).*$/"; + } + { + "key" = "k"; + "command" = "-magit.discard-at-point"; + } + { + "key" = "-"; + "command" = "magit.reverse-at-point"; + "when" = "editorTextFocus && editorLangId == 'magit' && vim.mode =~ /^(?!SearchInProgressMode|CommandlineInProgress).*$/"; + } + { + "key" = "v"; + "command" = "-magit.reverse-at-point"; + } + { + "key" = "shift+-"; + "command" = "magit.reverting"; + "when" = "editorTextFocus && editorLangId == 'magit' && vim.mode =~ /^(?!SearchInProgressMode|CommandlineInProgress).*$/"; + } + { + "key" = "shift+v"; + "command" = "-magit.reverting"; + } + { + "key" = "shift+o"; + "command" = "magit.resetting"; + "when" = "editorTextFocus && editorLangId == 'magit' && vim.mode =~ /^(?!SearchInProgressMode|CommandlineInProgress).*$/"; + } + { + "key" = "shift+x"; + "command" = "-magit.resetting"; + } + { + "key" = "x"; + "command" = "-magit.reset-mixed"; + } + { + "key" = "ctrl+u x"; + "command" = "-magit.reset-hard"; + } + ]; + mutableExtensionsDir = false; + + }; + stylix.targets.vscode.enable = true; + }; +} From 154754e635b64eec10f7de79caa5a9fe0f73599b Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 28 May 2025 18:28:48 -0500 Subject: [PATCH 233/317] window swallowing on yazi --- modules/user/hyprland/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 4690aea..e1c7098 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -111,7 +111,7 @@ in disable_hyprland_logo = true; mouse_move_enables_dpms = true; enable_swallow = true; - swallow_regex = "(scratch_term)|(Alacritty)|(kitty)"; + swallow_regex = "(scratch_term)|(Alacritty)|(kitty)|(scratch_yazi)"; font_family = font; focus_on_activate = true; }; From bc68d4147077442e807ec0e20dd6ab2779a53072 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 28 May 2025 18:31:14 -0500 Subject: [PATCH 234/317] vscodium is overrated --- hosts/duskfall/home.nix | 3 +-- hosts/snowfire/home.nix | 4 ++-- hosts/zenith/home.nix | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index b78bb65..56a761f 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -15,8 +15,7 @@ # programs browser = "qutebrowser"; brave.enable = true; - editor = "vscodium"; - emacs.enable = true; + editor = "emacs"; ranger.enable = true; yazi.enable = true; git.enable = true; diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index 790b424..d93797f 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -15,8 +15,8 @@ # programs browser = "qutebrowser"; brave.enable = true; - editor = "vscodium"; - emacs.enable = true; + editor = "emacs"; + vscodium.enable = true; ranger.enable = true; yazi.enable = true; git.enable = true; diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 1b5648e..930e9bb 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -14,8 +14,8 @@ # programs browser = "qutebrowser"; brave.enable = true; - editor = "vscodium"; - emacs.enable = true; + editor = "emacs"; + vscodium.enable = true; ranger.enable = true; yazi.enable = true; git.enable = true; From 5891db19948c87364464046e758d28787ae8003e Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 29 May 2025 10:11:10 -0500 Subject: [PATCH 235/317] some emacs improvements --- modules/user/emacs/init.el | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 8327227..1072c83 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -17,10 +17,9 @@ ;; use-package-ception (use-package use-package - :defer t :custom (use-package-always-ensure nil) - (usepackage-always-defer t)) + (usepackage-always-defer nil)) (use-package emacs :defer t @@ -177,8 +176,7 @@ (projectile-mode +1)) ;; Being able to undo is nice... -(use-package undo-fu - :commands (evil-undo evil-redo)) +(use-package undo-fu) (use-package undo-fu-session :after undo-fu @@ -334,14 +332,16 @@ (use-package lsp-mode :config + (setq lsp-completion-enable t) (setq lsp-keymap-prefix "SPC l") (evil-define-key 'normal lsp-mode-map (kbd "SPC l") lsp-command-map) (setq lsp-completion-provider :none) + (setq major-mode-remap-alist + '((gdscript-mode . gdscript-ts-mode))) :hook (lsp-mode . evil-normalize-keymaps) (gdscript-mode . lsp-deferred) - (gdscript-ts-mode . lsp-deferred) - :commands lsp-deferred) + (gdscript-ts-mode . lsp-deferred)) (use-package lsp-ui :commands lsp-ui-mode) (use-package lsp-treemacs :commands lsp-treemacs-errors-list) @@ -365,9 +365,9 @@ ;; (corfu-preview-current nil) ;; Disable current candidate preview (corfu-preselect 'prompt) ;; Preselect the prompt (corfu-on-exact-match 'insert) ;; Configure handling of exact matches - (corfu-auto t) ;; auto complete - (corfu-auto-delay 0.5) ;; wait half a second though - (corfu-auto-prefix 3) ;; also only for words 3 or more + (corfu-auto nil) ;; auto complete + (corfu-auto-delay 1.2) ;; wait half a second though + (corfu-auto-prefix 5) ;; also only for words 3 or more (defun corfu-lsp-setup () (setq-local completion-styles '(orderless flex hotfuzz) completion-category-defaults nil)) From 4cf0205329b15dd5b45c998227c83a13b275b69c Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 31 May 2025 12:05:26 -0500 Subject: [PATCH 236/317] updated system --- flake.lock | 90 ++++++++++++++++----------------- modules/user/plasma/default.nix | 7 ++- 2 files changed, 48 insertions(+), 49 deletions(-) diff --git a/flake.lock b/flake.lock index 9a7ba5c..7732a32 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1747792192, - "narHash": "sha256-HeWotX8CVc3vDlvAGq99FaeAT9JRSWtx4N/NhtjPwtg=", + "lastModified": 1748393754, + "narHash": "sha256-KS+bKVQk0S7pCiz1ftHPr/bTgCU+4Lv9YvUVLXAbuJU=", "owner": "StevenBlack", "repo": "hosts", - "rev": "dbdcb032706dfe548745266218501afa93c14ad5", + "rev": "4f663aa0f0b247f3a455577b096e121e2976215d", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1748116304, - "narHash": "sha256-gpO/jh/T/Ygx8ewq0y4LQDKEqvZJ3WiRg3ur8K9KfFg=", + "lastModified": 1748632668, + "narHash": "sha256-wcYVyHdwpWvYMsOWeTi++WjSbhHaUij8murCDUlRWoc=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "54741d5ed1e944d68ff94fb09ce967269156f65e", + "rev": "9bd47ad150a1730824e295a016ea221428e6d22b", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1748107096, - "narHash": "sha256-PmQY/yDSlxxma3RBW2v+yWSvpJTubcmXUdoAlaJv7Dk=", + "lastModified": 1748683021, + "narHash": "sha256-UH5ryKT2spnt86NPwasOlHVS9IVMrj6UESwCpEISzd4=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "5e55769b7a39ab810f761874aff5787c74e981da", + "rev": "0abe78b79df5a7d4d1f952b0d9eca17ba2399dd8", "type": "github" }, "original": { @@ -168,11 +168,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1747392669, - "narHash": "sha256-zky3+lndxKRu98PAwVK8kXPdg+Q1NVAhaI7YGrboKYA=", + "lastModified": 1748500877, + "narHash": "sha256-j4gxE8pBB5OzwuQYpX0+uhoT3KPYDTf1lEnxH/5UOhw=", "owner": "nix-community", "repo": "fenix", - "rev": "c3c27e603b0d9b5aac8a16236586696338856fbb", + "rev": "8c0499eb59f1c2c07b3734c210480623e1fe90a1", "type": "github" }, "original": { @@ -374,11 +374,11 @@ ] }, "locked": { - "lastModified": 1747978958, - "narHash": "sha256-pQQnbxWpY3IiZqgelXHIe/OAE/Yv4NSQq7fch7M6nXQ=", + "lastModified": 1748489961, + "narHash": "sha256-uGnudxMoQi2c8rpPoHXuQSm80NBqlOiNF4xdT3hhzLM=", "owner": "nix-community", "repo": "home-manager", - "rev": "7419250703fd5eb50e99bdfb07a86671939103ea", + "rev": "95c988cf08e9a5a8fe7cc275d5e3f24e9e87bd51", "type": "github" }, "original": { @@ -394,11 +394,11 @@ ] }, "locked": { - "lastModified": 1747978958, - "narHash": "sha256-pQQnbxWpY3IiZqgelXHIe/OAE/Yv4NSQq7fch7M6nXQ=", + "lastModified": 1748668774, + "narHash": "sha256-fYk/vk4ClmvHIgnGv/5GNRiDLtNCwXo9aLq36L/x+P4=", "owner": "nix-community", "repo": "home-manager", - "rev": "7419250703fd5eb50e99bdfb07a86671939103ea", + "rev": "60e4624302d956fe94d3f7d96a560d14d70591b9", "type": "github" }, "original": { @@ -833,11 +833,11 @@ ] }, "locked": { - "lastModified": 1747990026, - "narHash": "sha256-sG5VbID+x5+xUC+jjgHibnzg8IllVcH+K2TLmYHLPME=", + "lastModified": 1748411314, + "narHash": "sha256-fvtRp+oHGDLiSQico9+LTAr6Z8CU1AIldLYLQ9mHqjo=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "e2f4ced874406541a7957f7e2b8f05a0d59a0f00", + "rev": "9d69aed9023082af370b71bffdfcd414b6b61593", "type": "github" }, "original": { @@ -871,11 +871,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748026106, - "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", + "lastModified": 1748460289, + "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", + "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", "type": "github" }, "original": { @@ -887,11 +887,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1747862697, - "narHash": "sha256-U4HaNZ1W26cbOVm0Eb5OdGSnfQVWQKbLSPrSSa78KC0=", + "lastModified": 1748421225, + "narHash": "sha256-XXILOc80tvlvEQgYpYFnze8MkQQmp3eQxFbTzb3m/R0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2baa12ff69913392faf0ace833bc54bba297ea95", + "rev": "78add7b7abb61689e34fc23070a8f55e1d26185b", "type": "github" }, "original": { @@ -903,11 +903,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1747862697, - "narHash": "sha256-U4HaNZ1W26cbOVm0Eb5OdGSnfQVWQKbLSPrSSa78KC0=", + "lastModified": 1748421225, + "narHash": "sha256-XXILOc80tvlvEQgYpYFnze8MkQQmp3eQxFbTzb3m/R0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2baa12ff69913392faf0ace833bc54bba297ea95", + "rev": "78add7b7abb61689e34fc23070a8f55e1d26185b", "type": "github" }, "original": { @@ -918,11 +918,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1748026106, - "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", + "lastModified": 1748460289, + "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", + "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", "type": "github" }, "original": { @@ -999,11 +999,11 @@ ] }, "locked": { - "lastModified": 1742765550, - "narHash": "sha256-2vVIh2JrL6GAGfgCeY9e6iNKrBjs0Hw3bGQEAbwVs68=", + "lastModified": 1748196248, + "narHash": "sha256-1iHjsH6/5UOerJEoZKE+Gx1BgAoge/YcnUsOA4wQ/BU=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "b70be387276e632fe51232887f9e04e2b6ef8c16", + "rev": "b7697abe89967839b273a863a3805345ea54ab56", "type": "github" }, "original": { @@ -1054,11 +1054,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1747323949, - "narHash": "sha256-G4NwzhODScKnXqt2mEQtDFOnI0wU3L1WxsiHX3cID/0=", + "lastModified": 1748424207, + "narHash": "sha256-Ji0QYOigZOi/w2f3BigbGQIAkaELsvCQbgPGi8pkVFE=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "f8e784353bde7cbf9a9046285c1caf41ac484ebe", + "rev": "ed608f592e0a038db4d03ed4af58fd171bd3b3c0", "type": "github" }, "original": { @@ -1073,11 +1073,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1748054080, - "narHash": "sha256-rwFiLLNCwkj9bqePtH1sMqzs1xmohE0Ojq249piMzF4=", + "lastModified": 1748658947, + "narHash": "sha256-F+nGITu6D7RswJlm8qCuU1PCuOSgDeAqaDKWW1n1jmQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "2221d8d53c128beb69346fa3ab36da3f19bb1691", + "rev": "fc82ce758cc5df6a6d5d24e75710321cdbdc787a", "type": "github" }, "original": { @@ -1128,11 +1128,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1748028561, - "narHash": "sha256-IgtJU6n9vR3nBUdcXrc7K9E+Y/G/4P6hFifGRr1tXMU=", + "lastModified": 1748699906, + "narHash": "sha256-pu2UKagKKysJ7EYeOcm8vWoZq1lcxfwfu3/C1Y3OFz8=", "owner": "danth", "repo": "stylix", - "rev": "34b5930894d8315401d93bd8a9a6635e1cd28eff", + "rev": "8762da957b8b04b8b73248144f1c0ff7a88924b5", "type": "github" }, "original": { diff --git a/modules/user/plasma/default.nix b/modules/user/plasma/default.nix index ad091d9..601a8ba 100644 --- a/modules/user/plasma/default.nix +++ b/modules/user/plasma/default.nix @@ -24,7 +24,7 @@ in { enable = true; workspace = { clickItemTo = "select"; - wallpaper = config.stylix.image; + wallpaper = builtins.toString config.stylix.image; }; shortcuts = { "ActivityManager"."switch-to-activity-080837e2-f10a-45f7-84cb-a3022c9dc5d4" = [ ]; @@ -839,8 +839,7 @@ in { "khotkeysrc"."WM"."inactiveForeground" = ""; "khotkeysrc"."WM"."inactiveForeground\x5b$d\x5d" = ""; "kscreenlockerrc"."Daemon"."Autolock" = false; - "kscreenlockerrc"."Greeter/Wallpaper/org/kde/image/General"."Image" = config.stylix.image; - "kscreenlockerrc"."Greeter/Wallpaper/org/kde/image/General"."FillMode" = 1; + "kscreenlockerrc"."Greeter/Wallpaper/org/kde/image/General"."Image" = builtins.toString config.stylix.image; "ksplashrc"."KSplash"."Theme" = ""; "kwalletrc"."Wallet"."First Use" = false; "kwinrc"."Desktops"."Id_1" = "7dfca09a-7b8f-4f7b-9acb-9b9e9eda8090"; @@ -877,7 +876,7 @@ in { "kwinrc"."org.kde.kdecoration2"."theme" = "Breeze"; "plasma-localerc"."Formats"."LANG" = "en_US.UTF-8"; "plasmarc"."Theme"."name" = "default"; - "plasmarc"."Wallpapers"."usersWallpapers" = config.stylix.image; + "plasmarc"."Wallpapers"."usersWallpapers" = builtins.toString config.stylix.image; "systemsettingsrc"."KFileDialog Settings"."detailViewIconSize" = 16; "systemsettingsrc"."systemsettings_sidebar_mode"."HighlightNonDefaultSettings" = true; }; From 95fa63e7f242f9ca7f04a894db2b5b029a023015 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 1 Jun 2025 10:43:00 -0500 Subject: [PATCH 237/317] battery LIFE --- hosts/snowfire/configuration.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index 311d17b..fdc87c7 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -47,6 +47,13 @@ }; services.thermald.enable = true; + services.asusd.enable = true; + services.supergfxd.enable = true; + environment.systemPackages = with pkgs; [ + asusctl + supergfxctl + ]; + users.users.emmet.description = "Emmet"; home-manager.users.emmet.userSettings = { From 46e06d4d55d562a54ed4728d02d9f1bfa13afa6e Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 7 Jun 2025 17:26:14 -0500 Subject: [PATCH 238/317] Updated system --- flake.lock | 176 +++++++++++++++--------------- hosts/snowfire/configuration.nix | 1 - modules/user/hyprland/default.nix | 6 +- modules/user/stylix/default.nix | 72 ++++++------ modules/user/terminal/default.nix | 4 +- 5 files changed, 130 insertions(+), 129 deletions(-) diff --git a/flake.lock b/flake.lock index 7732a32..2091aa1 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ "base16-helix": { "flake": false, "locked": { - "lastModified": 1736852337, - "narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=", + "lastModified": 1748408240, + "narHash": "sha256-9M2b1rMyMzJK0eusea0x3lyh3mu5nMeEDSc4RZkGm+g=", "owner": "tinted-theming", "repo": "base16-helix", - "rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5", + "rev": "6c711ab1a9db6f51e2f6887cc3345530b33e152e", "type": "github" }, "original": { @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1748393754, - "narHash": "sha256-KS+bKVQk0S7pCiz1ftHPr/bTgCU+4Lv9YvUVLXAbuJU=", + "lastModified": 1749290797, + "narHash": "sha256-+evSN4xiZQkuUaXkdt3Kggc3PAjL2b4lC0mw5mjqcow=", "owner": "StevenBlack", "repo": "hosts", - "rev": "4f663aa0f0b247f3a455577b096e121e2976215d", + "rev": "b5c9188aeeb38a4746600be0507fb7478e3533f7", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1748632668, - "narHash": "sha256-wcYVyHdwpWvYMsOWeTi++WjSbhHaUij8murCDUlRWoc=", + "lastModified": 1749319758, + "narHash": "sha256-vjB3/Sk1+gH7E4fjmYLo5+KZFvFeR2X/13mZwvwp2ds=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "9bd47ad150a1730824e295a016ea221428e6d22b", + "rev": "11addac79e748c4517b6508c09038d82e2df04a5", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1748683021, - "narHash": "sha256-UH5ryKT2spnt86NPwasOlHVS9IVMrj6UESwCpEISzd4=", + "lastModified": 1749318443, + "narHash": "sha256-SMTpYzZbb3QMSepq+5f+2zkFpi8Y6q/c/VrF4rtl/rU=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "0abe78b79df5a7d4d1f952b0d9eca17ba2399dd8", + "rev": "b313b010b457ab15ac323975b10bf418a9de074c", "type": "github" }, "original": { @@ -168,11 +168,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1748500877, - "narHash": "sha256-j4gxE8pBB5OzwuQYpX0+uhoT3KPYDTf1lEnxH/5UOhw=", + "lastModified": 1749278330, + "narHash": "sha256-8NKf1rHaKg+7MRoj7hhPlS048upmpwSXsUx2+6phePI=", "owner": "nix-community", "repo": "fenix", - "rev": "8c0499eb59f1c2c07b3734c210480623e1fe90a1", + "rev": "68e191fa1f76ab42d3eb7195844eab261e412e2e", "type": "github" }, "original": { @@ -184,11 +184,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1744642301, - "narHash": "sha256-5A6LL7T0lttn1vrKsNOKUk9V0ittdW0VEqh6AtefxJ4=", + "lastModified": 1748383148, + "narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "59e3de00f01e5adb851d824cf7911bd90c31083a", + "rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf", "type": "github" }, "original": { @@ -215,11 +215,11 @@ }, "flake-compat_2": { "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "owner": "edolstra", "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -236,11 +236,11 @@ ] }, "locked": { - "lastModified": 1733312601, - "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", + "lastModified": 1743550720, + "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", + "rev": "c621e8422220273271f52058f618c94e405bb0f5", "type": "github" }, "original": { @@ -292,11 +292,11 @@ ] }, "locked": { - "lastModified": 1742649964, - "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=", + "lastModified": 1747372754, + "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", "type": "github" }, "original": { @@ -374,11 +374,11 @@ ] }, "locked": { - "lastModified": 1748489961, - "narHash": "sha256-uGnudxMoQi2c8rpPoHXuQSm80NBqlOiNF4xdT3hhzLM=", + "lastModified": 1749243446, + "narHash": "sha256-P1gumhZN5N9q+39ndePHYrtwOwY1cGx+VoXGl+vTm7A=", "owner": "nix-community", "repo": "home-manager", - "rev": "95c988cf08e9a5a8fe7cc275d5e3f24e9e87bd51", + "rev": "2d7d65f65b61fdfce23278e59ca266ddd0ef0a36", "type": "github" }, "original": { @@ -394,11 +394,11 @@ ] }, "locked": { - "lastModified": 1748668774, - "narHash": "sha256-fYk/vk4ClmvHIgnGv/5GNRiDLtNCwXo9aLq36L/x+P4=", + "lastModified": 1749243446, + "narHash": "sha256-P1gumhZN5N9q+39ndePHYrtwOwY1cGx+VoXGl+vTm7A=", "owner": "nix-community", "repo": "home-manager", - "rev": "60e4624302d956fe94d3f7d96a560d14d70591b9", + "rev": "2d7d65f65b61fdfce23278e59ca266ddd0ef0a36", "type": "github" }, "original": { @@ -416,11 +416,11 @@ ] }, "locked": { - "lastModified": 1747763032, - "narHash": "sha256-9j3oCbemeH7bTVXJ3pDWxOptbxDx2SdK1jY2AHpjQiw=", + "lastModified": 1748737919, + "narHash": "sha256-5kvBbLYdp+n7Ftanjcs6Nv+UO6sBhelp6MIGJ9nWmjQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "29dda415f5b2178278283856c6f9f7b48a2a4353", + "rev": "5675a9686851d9626560052a032c4e14e533c1fa", "type": "github" }, "original": { @@ -503,11 +503,11 @@ ] }, "locked": { - "lastModified": 1743953322, - "narHash": "sha256-prQ5JKopXtzCMX2eT3dXbaVvGmzjMRE2bXStQDdazpM=", + "lastModified": 1749145600, + "narHash": "sha256-v2kY5RDk9oyo1x9m8u83GdklC96xlJ7ka1rrvZoYL78=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "9d7f2687c84c729afbc3b13f7937655570f2978d", + "rev": "80b754e38e836777ad3a9d5d1ffc3491b0332471", "type": "github" }, "original": { @@ -686,11 +686,11 @@ ] }, "locked": { - "lastModified": 1744468525, - "narHash": "sha256-9HySx+EtsbbKlZDlY+naqqOV679VdxP6x6fP3wxDXJk=", + "lastModified": 1749145882, + "narHash": "sha256-qr0KXeczF8Sma3Ae7+dR2NHhvG7YeLBJv19W4oMu6ZE=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "f1000c54d266e6e4e9d646df0774fac5b8a652df", + "rev": "1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676", "type": "github" }, "original": { @@ -711,11 +711,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1747635830, - "narHash": "sha256-IypoV7crmhQ4llD0n4qqO4XTRNAAbHfA+2oiTiq2qpk=", + "lastModified": 1749162391, + "narHash": "sha256-aCiNnE26qIAxEBP6SRXjLBlIGOB18TViDreoPe96p6Q=", "ref": "refs/heads/main", - "rev": "da1d076d849fc0f298c1d287bddd04802bf7d0f9", - "revCount": 368, + "rev": "f9d8dfab7ae0aec625e7814e16f626fabec3641b", + "revCount": 371, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -761,11 +761,11 @@ ] }, "locked": { - "lastModified": 1743950287, - "narHash": "sha256-/6IAEWyb8gC/NKZElxiHChkouiUOrVYNq9YqG0Pzm4Y=", + "lastModified": 1749135356, + "narHash": "sha256-Q8mAKMDsFbCEuq7zoSlcTuxgbIBVhfIYpX0RjE32PS0=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "f2dc70e448b994cef627a157ee340135bd68fbc6", + "rev": "e36db00dfb3a3d3fdcc4069cb292ff60d2699ccb", "type": "github" }, "original": { @@ -811,11 +811,11 @@ ] }, "locked": { - "lastModified": 1739870480, - "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", + "lastModified": 1749145760, + "narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", + "rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6", "type": "github" }, "original": { @@ -833,11 +833,11 @@ ] }, "locked": { - "lastModified": 1748411314, - "narHash": "sha256-fvtRp+oHGDLiSQico9+LTAr6Z8CU1AIldLYLQ9mHqjo=", + "lastModified": 1749312278, + "narHash": "sha256-iafbTiQGNlylMR/ivKRlDudHiu5891rVmRj/WjFcRKE=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "9d69aed9023082af370b71bffdfcd414b6b61593", + "rev": "8b0b76f13c875f1f31632fd5fbaee8a093421455", "type": "github" }, "original": { @@ -871,11 +871,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748460289, - "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "lastModified": 1749143949, + "narHash": "sha256-QuUtALJpVrPnPeozlUG/y+oIMSLdptHxb3GK6cpSVhA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", + "rev": "d3d2d80a2191a73d1e86456a751b83aa13085d7d", "type": "github" }, "original": { @@ -887,11 +887,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1748421225, - "narHash": "sha256-XXILOc80tvlvEQgYpYFnze8MkQQmp3eQxFbTzb3m/R0=", + "lastModified": 1748995628, + "narHash": "sha256-bFufQGSAEYQgjtc4wMrobS5HWN0hDP+ZX+zthYcml9U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "78add7b7abb61689e34fc23070a8f55e1d26185b", + "rev": "8eb3b6a2366a7095939cd22f0dc0e9991313294b", "type": "github" }, "original": { @@ -903,11 +903,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1748421225, - "narHash": "sha256-XXILOc80tvlvEQgYpYFnze8MkQQmp3eQxFbTzb3m/R0=", + "lastModified": 1748995628, + "narHash": "sha256-bFufQGSAEYQgjtc4wMrobS5HWN0hDP+ZX+zthYcml9U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "78add7b7abb61689e34fc23070a8f55e1d26185b", + "rev": "8eb3b6a2366a7095939cd22f0dc0e9991313294b", "type": "github" }, "original": { @@ -918,11 +918,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1748460289, - "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "lastModified": 1749143949, + "narHash": "sha256-QuUtALJpVrPnPeozlUG/y+oIMSLdptHxb3GK6cpSVhA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", + "rev": "d3d2d80a2191a73d1e86456a751b83aa13085d7d", "type": "github" }, "original": { @@ -949,11 +949,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1747542820, - "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", + "lastModified": 1748460289, + "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", + "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", "type": "github" }, "original": { @@ -976,11 +976,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1746056780, - "narHash": "sha256-/emueQGaoT4vu0QjU9LDOG5roxRSfdY0K2KkxuzazcM=", + "lastModified": 1748730660, + "narHash": "sha256-5LKmRYKdPuhm8j5GFe3AfrJL8dd8o57BQ34AGjJl1R0=", "owner": "nix-community", "repo": "NUR", - "rev": "d476cd0972dd6242d76374fcc277e6735715c167", + "rev": "2c0bc52fe14681e9ef60e3553888c4f086e46ecb", "type": "github" }, "original": { @@ -1054,11 +1054,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1748424207, - "narHash": "sha256-Ji0QYOigZOi/w2f3BigbGQIAkaELsvCQbgPGi8pkVFE=", + "lastModified": 1749194353, + "narHash": "sha256-i6nNh8It11J9afo8QAR1Vwk4qKz/byIc5yq0rU3SW7M=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "ed608f592e0a038db4d03ed4af58fd171bd3b3c0", + "rev": "6acff6c1f8306a0a1d29be8fd1ffa63cff1ad598", "type": "github" }, "original": { @@ -1073,11 +1073,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1748658947, - "narHash": "sha256-F+nGITu6D7RswJlm8qCuU1PCuOSgDeAqaDKWW1n1jmQ=", + "lastModified": 1749263796, + "narHash": "sha256-m52UsUrcNjAzgc0cwcg94INkiFyVPTn6KbFGr4x4cu8=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "fc82ce758cc5df6a6d5d24e75710321cdbdc787a", + "rev": "6e1d910306edfe6e4b718878f222c5672500d6b2", "type": "github" }, "original": { @@ -1128,11 +1128,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1748699906, - "narHash": "sha256-pu2UKagKKysJ7EYeOcm8vWoZq1lcxfwfu3/C1Y3OFz8=", + "lastModified": 1749236315, + "narHash": "sha256-Ndtdvwz8D4WOYHl5mj9d5F5iC8WPH6uPNF7RcU3QzmE=", "owner": "danth", "repo": "stylix", - "rev": "8762da957b8b04b8b73248144f1c0ff7a88924b5", + "rev": "29d006198ee05143cca8b4b89f37025823da1bcc", "type": "github" }, "original": { @@ -1222,11 +1222,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1744974599, - "narHash": "sha256-Fg+rdGs5FAgfkYNCs74lnl8vkQmiZVdBsziyPhVqrlY=", + "lastModified": 1748180480, + "narHash": "sha256-7n0XiZiEHl2zRhDwZd/g+p38xwEoWtT0/aESwTMXWG4=", "owner": "tinted-theming", "repo": "schemes", - "rev": "28c26a621123ad4ebd5bbfb34ab39421c0144bdd", + "rev": "87d652edd26f5c0c99deda5ae13dfb8ece2ffe31", "type": "github" }, "original": { @@ -1238,11 +1238,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1745111349, - "narHash": "sha256-udV+nHdpqgkJI9D0mtvvAzbqubt9jdifS/KhTTbJ45w=", + "lastModified": 1748740859, + "narHash": "sha256-OEM12bg7F4N5WjZOcV7FHJbqRI6jtCqL6u8FtPrlZz4=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "e009f18a01182b63559fb28f1c786eb027c3dee9", + "rev": "57d5f9683ff9a3b590643beeaf0364da819aedda", "type": "github" }, "original": { diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index fdc87c7..dd55faa 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -54,7 +54,6 @@ supergfxctl ]; - users.users.emmet.description = "Emmet"; home-manager.users.emmet.userSettings = { name = "Emmet"; diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index e1c7098..77b3fe1 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -52,6 +52,7 @@ in settings = { env = [ "AQ_DRM_DEVICES,${config.home.sessionVariables.AQ_DRM_DEVICES}" + "AW_NO_MODIFIERS,1" ]; exec-once = [ "hyprctl setcursor ${config.gtk.cursorTheme.name} ${builtins.toString config.gtk.cursorTheme.size}" @@ -68,7 +69,7 @@ in "alacritty --class scratch_term" "kitty --class scratch_yazi -e yazi" "alacritty --class scratch_numbat -e numbat" - "kitty --class scratch_music -e ncmpcpp" + "kitty --class scratch_music -e kew" "alacritty --class scratch_btm -e btm" "element-desktop" ]; @@ -245,7 +246,7 @@ in "SUPER,F,togglespecialworkspace,scratch_yazi" ''SUPER,N,exec,if hyprctl clients | grep scratch_numbat; then echo "scratch_numbat respawn not needed"; else alacritty --class scratch_numbat -e numbat; fi'' "SUPER,N,togglespecialworkspace,scratch_numbat" - ''SUPER,M,exec,if hyprctl clients | grep scratch_music; then echo "scratch_music respawn not needed"; else kitty --class scratch_music -e ncmpcpp; fi'' + ''SUPER,M,exec,if hyprctl clients | grep scratch_music; then echo "scratch_music respawn not needed"; else kitty --class scratch_music -e kew; fi'' "SUPER,M,togglespecialworkspace,scratch_music" ''SUPER,B,exec,if hyprctl clients | grep scratch_btm; then echo "scratch_yazi respawn not needed"; else alacritty --class scratch_btm -e btm; fi'' "SUPER,B,togglespecialworkspace,scratch_btm" @@ -384,6 +385,7 @@ in home.packages = (with pkgs; [ hyprland-monitor-attached + kew alacritty kitty killall diff --git a/modules/user/stylix/default.nix b/modules/user/stylix/default.nix index a00053e..22ab5e3 100644 --- a/modules/user/stylix/default.nix +++ b/modules/user/stylix/default.nix @@ -33,16 +33,16 @@ in stylix.fonts = { # TODO abstract fonts into an option monospace = { - name = "Source Code Pro"; - package = pkgs.source-code-pro; + name = "Fira Code Nerd Font"; + package = pkgs.fira-code-nerdfont; }; serif = { - name = "Source Serif Pro"; - package = pkgs.source-serif-pro; + name = "Fira"; + package = pkgs.fira; }; sansSerif = { - name = "Source Sans Pro"; - package = pkgs.source-sans-pro; + name = "Fira Sans"; + package = pkgs.fira-sans; }; emoji = { name = "Twitter Color Emoji"; @@ -57,36 +57,36 @@ in }; # move into alacritty config - stylix.targets.alacritty.enable = false; - programs.alacritty.settings = { - colors = { - # TODO revisit these color mappings - # these are just the default provided from stylix - # but declared directly due to alacritty v3.0 breakage - primary.background = "#"+config.lib.stylix.colors.base00; - primary.foreground = "#"+config.lib.stylix.colors.base07; - cursor.text = "#"+config.lib.stylix.colors.base00; - cursor.cursor = "#"+config.lib.stylix.colors.base07; - normal.black = "#"+config.lib.stylix.colors.base00; - normal.red = "#"+config.lib.stylix.colors.base08; - normal.green = "#"+config.lib.stylix.colors.base0B; - normal.yellow = "#"+config.lib.stylix.colors.base0A; - normal.blue = "#"+config.lib.stylix.colors.base0D; - normal.magenta = "#"+config.lib.stylix.colors.base0E; - normal.cyan = "#"+config.lib.stylix.colors.base0B; - normal.white = "#"+config.lib.stylix.colors.base05; - bright.black = "#"+config.lib.stylix.colors.base03; - bright.red = "#"+config.lib.stylix.colors.base09; - bright.green = "#"+config.lib.stylix.colors.base01; - bright.yellow = "#"+config.lib.stylix.colors.base02; - bright.blue = "#"+config.lib.stylix.colors.base04; - bright.magenta = "#"+config.lib.stylix.colors.base06; - bright.cyan = "#"+config.lib.stylix.colors.base0F; - bright.white = "#"+config.lib.stylix.colors.base07; - }; - font.size = config.stylix.fonts.sizes.terminal; - font.normal.family = config.stylix.fonts.monospace.name; - }; + stylix.targets.alacritty.enable = true; + #programs.alacritty.settings = { + # colors = { + # # TODO revisit these color mappings + # # these are just the default provided from stylix + # # but declared directly due to alacritty v3.0 breakage + # primary.background = "#"+config.lib.stylix.colors.base00; + # primary.foreground = "#"+config.lib.stylix.colors.base07; + # cursor.text = "#"+config.lib.stylix.colors.base00; + # cursor.cursor = "#"+config.lib.stylix.colors.base07; + # normal.black = "#"+config.lib.stylix.colors.base00; + # normal.red = "#"+config.lib.stylix.colors.base08; + # normal.green = "#"+config.lib.stylix.colors.base0B; + # normal.yellow = "#"+config.lib.stylix.colors.base0A; + # normal.blue = "#"+config.lib.stylix.colors.base0D; + # normal.magenta = "#"+config.lib.stylix.colors.base0E; + # normal.cyan = "#"+config.lib.stylix.colors.base0B; + # normal.white = "#"+config.lib.stylix.colors.base05; + # bright.black = "#"+config.lib.stylix.colors.base03; + # bright.red = "#"+config.lib.stylix.colors.base09; + # bright.green = "#"+config.lib.stylix.colors.base01; + # bright.yellow = "#"+config.lib.stylix.colors.base02; + # bright.blue = "#"+config.lib.stylix.colors.base04; + # bright.magenta = "#"+config.lib.stylix.colors.base06; + # bright.cyan = "#"+config.lib.stylix.colors.base0F; + # bright.white = "#"+config.lib.stylix.colors.base07; + # }; + # font.size = config.stylix.fonts.sizes.terminal; + # font.normal.family = config.stylix.fonts.monospace.name; + #}; # move into kitty config stylix.targets.kitty.enable = true; diff --git a/modules/user/terminal/default.nix b/modules/user/terminal/default.nix index 426beac..93cd6c5 100644 --- a/modules/user/terminal/default.nix +++ b/modules/user/terminal/default.nix @@ -10,7 +10,7 @@ }; config = { - userSettings.alacritty.enable = lib.mkDefault (config.userSettings.browser == "brave"); - userSettings.kitty.enable = lib.mkDefault (config.userSettings.browser == "librewolf"); + userSettings.alacritty.enable = lib.mkDefault (config.userSettings.terminal == "alacritty"); + userSettings.kitty.enable = lib.mkDefault (config.userSettings.terminal == "kitty"); }; } From 66efbc6c1c373523c69beaa0ea376bce5c26a7b2 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 8 Jun 2025 12:23:21 -0500 Subject: [PATCH 239/317] hyprland groups are really cool!! --- modules/user/hyprland/default.nix | 13 +++++++++++++ modules/user/office/default.nix | 1 + modules/user/shell/term-apps.nix | 1 - 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 77b3fe1..9a544bc 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -84,6 +84,16 @@ in gaps_out = 7; }; + group = { + "col.border_active" = "0xff${config.lib.stylix.colors.base08} 0xff${config.lib.stylix.colors.base09} 0xff${config.lib.stylix.colors.base0A} 0xff${config.lib.stylix.colors.base0B} 0xff${config.lib.stylix.colors.base0C} 0xff${config.lib.stylix.colors.base0D} 0xff${config.lib.stylix.colors.base0E} 0xff${config.lib.stylix.colors.base0F} 270deg"; + "col.border_inactive" = "0xff${config.lib.stylix.colors.base02}"; + groupbar = { + gradients = false; + "col.active" = "0xff${config.lib.stylix.colors.base0B}"; + "col.inactive" = "0xff${config.lib.stylix.colors.base02}"; + }; + }; + decoration = { shadow = { enabled = true; @@ -164,6 +174,9 @@ in "ALT,TAB,bringactivetotop" "ALTSHIFT,TAB,cyclenext,prev" "ALTSHIFT,TAB,bringactivetotop" + "SUPER,W,togglegroup" + "SUPER,TAB,changegroupactive,f" + "SUPERSHIFT,TAB,changegroupactive,b" ''SUPER,V,exec,wl-copy $(wl-paste | tr "\n" " ")'' "SUPERSHIFT,T,exec,screenshot-ocr" "CTRLALT,Delete,exec,hyprctl kill" diff --git a/modules/user/office/default.nix b/modules/user/office/default.nix index b266d81..2efc9c3 100644 --- a/modules/user/office/default.nix +++ b/modules/user/office/default.nix @@ -23,6 +23,7 @@ in { seahorse element-desktop openvpn + pomodoro-gtk ]; services.syncthing.enable = true; services.nextcloud-client = { diff --git a/modules/user/shell/term-apps.nix b/modules/user/shell/term-apps.nix index ea2d2e4..8b9b8d3 100644 --- a/modules/user/shell/term-apps.nix +++ b/modules/user/shell/term-apps.nix @@ -16,7 +16,6 @@ in { killall libnotify timer - pomodoro brightnessctl gnugrep bat eza fd bottom ripgrep From b716a1920f6c02bf15b843a4d86042e4bd39071b Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 17 Jun 2025 15:50:55 -0500 Subject: [PATCH 240/317] fix inkscape default app for svg --- modules/user/art/default.nix | 4 +++- modules/user/yazi/default.nix | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/user/art/default.nix b/modules/user/art/default.nix index e493658..da3358f 100644 --- a/modules/user/art/default.nix +++ b/modules/user/art/default.nix @@ -11,7 +11,6 @@ in { config = lib.mkIf cfg.enable { home.packages = with pkgs; [ - gimp krita pinta inkscape @@ -20,5 +19,8 @@ in { upscayl ]; userSettings.blender.enable = true; + xdg.mimeApps.defaultApplications = lib.mkForce { + "image/svg+xml" = ["org.inkscape.Inkscape.desktop"]; + }; }; } diff --git a/modules/user/yazi/default.nix b/modules/user/yazi/default.nix index a5b7dcc..bacdc27 100644 --- a/modules/user/yazi/default.nix +++ b/modules/user/yazi/default.nix @@ -15,7 +15,7 @@ in { enableZshIntegration = true; keymap.manager.prepend_keymap = [ - { run = "shell ' \"$0\"' --cursor=0 --interactive"; on = [ "@" ]; } + { run = "shell ' \"$@\"' --cursor=0 --interactive"; on = [ "@" ]; } ]; }; }; From 5c58bc7eb68a598cc5303b0ad161cbd1cfb8501c Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 17 Jun 2025 15:51:06 -0500 Subject: [PATCH 241/317] power key should not destroy my work :| --- modules/system/hyprland/default.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/system/hyprland/default.nix b/modules/system/hyprland/default.nix index f53978a..6cd33c6 100644 --- a/modules/system/hyprland/default.nix +++ b/modules/system/hyprland/default.nix @@ -11,6 +11,12 @@ in }; config = lib.mkIf cfg.enable { + # Power key should not shut off computer by defaultPower key shuts of + services.logind.extraConfig = '' + # Suspend when power button is pressed + HandlePowerKey=suspend + ''; + # Hyprland programs = { hyprland = { From 2ebee8fea04fa277119f863d8321abc4fed66349 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 17 Jun 2025 15:51:17 -0500 Subject: [PATCH 242/317] updated system --- flake.lock | 84 +++++++++++++++++++++++++++--------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/flake.lock b/flake.lock index 2091aa1..563434b 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1749290797, - "narHash": "sha256-+evSN4xiZQkuUaXkdt3Kggc3PAjL2b4lC0mw5mjqcow=", + "lastModified": 1749741788, + "narHash": "sha256-ONPW+AAFSeG808KUyGpvIYrnKrCu9WLoLkrxsaYPD5o=", "owner": "StevenBlack", "repo": "hosts", - "rev": "b5c9188aeeb38a4746600be0507fb7478e3533f7", + "rev": "335cd7caa04c54baa49daf1093965d96b4d084df", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1749319758, - "narHash": "sha256-vjB3/Sk1+gH7E4fjmYLo5+KZFvFeR2X/13mZwvwp2ds=", + "lastModified": 1749948228, + "narHash": "sha256-vds3Mp4Pi7eBgGDNAPdVjYQ3USI5Lu3YYkckgL3lTdE=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "11addac79e748c4517b6508c09038d82e2df04a5", + "rev": "5f7fcf0d50b726a4c1a07536d6ed16e6679d3825", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1749318443, - "narHash": "sha256-SMTpYzZbb3QMSepq+5f+2zkFpi8Y6q/c/VrF4rtl/rU=", + "lastModified": 1749978329, + "narHash": "sha256-RMnQHG0meKR5cdb6WXa3YCseyXSxdnIZTWu+X54EoxU=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "b313b010b457ab15ac323975b10bf418a9de074c", + "rev": "fc1319f0d30bc5d204210842ccfb4091bb57fa2a", "type": "github" }, "original": { @@ -168,11 +168,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1749278330, - "narHash": "sha256-8NKf1rHaKg+7MRoj7hhPlS048upmpwSXsUx2+6phePI=", + "lastModified": 1749623906, + "narHash": "sha256-QD7e5WNVj4aWS5mlJZZnLJ6Lg0h5RSyyEFo2I6xBUEQ=", "owner": "nix-community", "repo": "fenix", - "rev": "68e191fa1f76ab42d3eb7195844eab261e412e2e", + "rev": "873cccc628f5e39407e319e6711f3b7d6d1f15cc", "type": "github" }, "original": { @@ -374,11 +374,11 @@ ] }, "locked": { - "lastModified": 1749243446, - "narHash": "sha256-P1gumhZN5N9q+39ndePHYrtwOwY1cGx+VoXGl+vTm7A=", + "lastModified": 1749649116, + "narHash": "sha256-pCuUfMkhlP+XqW+TXX5Tssk8IE4TpS3MbG7OQtvaQdM=", "owner": "nix-community", "repo": "home-manager", - "rev": "2d7d65f65b61fdfce23278e59ca266ddd0ef0a36", + "rev": "02040b7777f65342b96c7f826a5c6aef95585057", "type": "github" }, "original": { @@ -394,11 +394,11 @@ ] }, "locked": { - "lastModified": 1749243446, - "narHash": "sha256-P1gumhZN5N9q+39ndePHYrtwOwY1cGx+VoXGl+vTm7A=", + "lastModified": 1749944797, + "narHash": "sha256-1l6ZW+2+LDQhYgE4fo2KsM2Ms3lY3ZXv0n6uKka2yMk=", "owner": "nix-community", "repo": "home-manager", - "rev": "2d7d65f65b61fdfce23278e59ca266ddd0ef0a36", + "rev": "c5f345153397f62170c18ded1ae1f0875201d49a", "type": "github" }, "original": { @@ -833,11 +833,11 @@ ] }, "locked": { - "lastModified": 1749312278, - "narHash": "sha256-iafbTiQGNlylMR/ivKRlDudHiu5891rVmRj/WjFcRKE=", + "lastModified": 1749627191, + "narHash": "sha256-bUv8CDE6Uyxak4UkOvRjx5xj6+msEHSpYGeAjkuTnTs=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "8b0b76f13c875f1f31632fd5fbaee8a093421455", + "rev": "f31df4cb6b2eeef6cf0113edb687297be72a69df", "type": "github" }, "original": { @@ -871,11 +871,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1749143949, - "narHash": "sha256-QuUtALJpVrPnPeozlUG/y+oIMSLdptHxb3GK6cpSVhA=", + "lastModified": 1749794982, + "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d3d2d80a2191a73d1e86456a751b83aa13085d7d", + "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "type": "github" }, "original": { @@ -887,11 +887,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1748995628, - "narHash": "sha256-bFufQGSAEYQgjtc4wMrobS5HWN0hDP+ZX+zthYcml9U=", + "lastModified": 1749668643, + "narHash": "sha256-gaWJEWGBW/g1u6o5IM4Un0vluv86cigLuBnjsKILffc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8eb3b6a2366a7095939cd22f0dc0e9991313294b", + "rev": "1965fd20a39c8e441746bee66d550af78f0c0a7b", "type": "github" }, "original": { @@ -903,11 +903,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1748995628, - "narHash": "sha256-bFufQGSAEYQgjtc4wMrobS5HWN0hDP+ZX+zthYcml9U=", + "lastModified": 1749834526, + "narHash": "sha256-izgPGLeUeFB9loC+n2X6TO2n8pOGvVcR3jKqxTGOwgc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8eb3b6a2366a7095939cd22f0dc0e9991313294b", + "rev": "db8414903dd6b3042e1ac471eafc18ca4ccb54a4", "type": "github" }, "original": { @@ -918,11 +918,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1749143949, - "narHash": "sha256-QuUtALJpVrPnPeozlUG/y+oIMSLdptHxb3GK6cpSVhA=", + "lastModified": 1749794982, + "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d3d2d80a2191a73d1e86456a751b83aa13085d7d", + "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "type": "github" }, "original": { @@ -1054,11 +1054,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1749194353, - "narHash": "sha256-i6nNh8It11J9afo8QAR1Vwk4qKz/byIc5yq0rU3SW7M=", + "lastModified": 1749558764, + "narHash": "sha256-R9vQiqez6Gm0ARJKgbsAeLyX493vwIaexOUAz0vDhak=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "6acff6c1f8306a0a1d29be8fd1ffa63cff1ad598", + "rev": "9c3476d225ccc90c081280c2a20e9f7d8a200325", "type": "github" }, "original": { @@ -1073,11 +1073,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1749263796, - "narHash": "sha256-m52UsUrcNjAzgc0cwcg94INkiFyVPTn6KbFGr4x4cu8=", + "lastModified": 1749955444, + "narHash": "sha256-CllTHvHX8KAdAZ+Lxzd23AmZTxO1Pfy+zC43/5tYkAE=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "6e1d910306edfe6e4b718878f222c5672500d6b2", + "rev": "539ba15741f0e6691a2448743dbc601d8910edce", "type": "github" }, "original": { @@ -1128,11 +1128,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1749236315, - "narHash": "sha256-Ndtdvwz8D4WOYHl5mj9d5F5iC8WPH6uPNF7RcU3QzmE=", + "lastModified": 1749988622, + "narHash": "sha256-DuZXMJoxgT1CRvoK6R5cIdIf0NRbwQ3u/iFrr9zZECI=", "owner": "danth", "repo": "stylix", - "rev": "29d006198ee05143cca8b4b89f37025823da1bcc", + "rev": "ad592a0e99386474a1826f3d90aeaff97848182c", "type": "github" }, "original": { From 9bceef73de80b8578a0ac4f979d7bcb0d7556b2d Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 19 Jun 2025 07:48:10 -0500 Subject: [PATCH 243/317] Added power profiles daemon --- hosts/snowfire/configuration.nix | 1 + modules/system/powerprofiles/default.nix | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 modules/system/powerprofiles/default.nix diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index dd55faa..34ad55e 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -10,6 +10,7 @@ # hardware cachy.enable = true; bluetooth.enable = true; + powerprofiles.enable = true; tlp.enable = false; printing.enable = true; diff --git a/modules/system/powerprofiles/default.nix b/modules/system/powerprofiles/default.nix new file mode 100644 index 0000000..5e8194d --- /dev/null +++ b/modules/system/powerprofiles/default.nix @@ -0,0 +1,17 @@ +{ config, lib, ... }: + +let + cfg = config.systemSettings.powerprofiles; +in { + options = { + systemSettings.powerprofiles = { + enable = lib.mkEnableOption "Enable power profiles daemon"; + }; + }; + + config = lib.mkIf cfg.enable { + services.power-profiles-daemon = { + enable = true; + }; + }; +} From fca63c71e16ce6a9df7b5e8a28e55b6bd85788ac Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 19 Jun 2025 08:58:42 -0500 Subject: [PATCH 244/317] gnome fixes --- hosts/duskfall/configuration.nix | 2 -- modules/user/gnome/default.nix | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index 9b0522b..745020a 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -61,8 +61,6 @@ services.xserver.wacom.enable = true; services.xserver.videoDrivers = [ "i915" ]; - services.displayManager.defaultSession = "gnome"; - }; } diff --git a/modules/user/gnome/default.nix b/modules/user/gnome/default.nix index d1278fa..a6f9634 100644 --- a/modules/user/gnome/default.nix +++ b/modules/user/gnome/default.nix @@ -18,5 +18,7 @@ in ambient-enabled = false; }; }; + userSettings.alacritty.enable = true; + userSettings.kitty.enable = true; }; } From a59f2b7c2e462bd3c3b38978ecdb70d2e2511725 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 22 Jun 2025 12:16:54 -0500 Subject: [PATCH 245/317] some yazi fixes --- modules/user/editor/default.nix | 2 +- modules/user/terminal/kitty.nix | 5 ++++ modules/user/yazi/default.nix | 53 +++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) diff --git a/modules/user/editor/default.nix b/modules/user/editor/default.nix index b80abd6..c6ac1c5 100644 --- a/modules/user/editor/default.nix +++ b/modules/user/editor/default.nix @@ -24,7 +24,7 @@ in { home.packages = with pkgs; lib.optionals (editor == "kate") [ kdePackages.kate]; userSettings.spawnEditor = lib.mkMerge [ - (lib.mkIf (editor == "emacs") "emacsclient -c -a 'emacs'") + (lib.mkIf (editor == "emacs") "emacsclient -c -n -a 'emacs'") (lib.mkIf (editor == "neovide") "neovide -- --listen /tmp/nvimsocket") (lib.mkIf (editor == "vscodium") "codium -n") (lib.mkIf (builtins.elem editor [ "vim" "nvim" "nano" "micro" ]) ("exec " + term + " -e " + editor)) diff --git a/modules/user/terminal/kitty.nix b/modules/user/terminal/kitty.nix index 93d6a3e..3e67ee8 100644 --- a/modules/user/terminal/kitty.nix +++ b/modules/user/terminal/kitty.nix @@ -15,6 +15,11 @@ in { programs.kitty.settings = { background_opacity = lib.mkForce "0.85"; modify_font = "cell_width 90%"; + confirm_os_window_close = 0; + }; + programs.kitty.keybindings = { + "ctrl+equal" = "change_font_size all +2.0"; + "ctrl+minus" = "change_font_size all -2.0"; }; }; } diff --git a/modules/user/yazi/default.nix b/modules/user/yazi/default.nix index bacdc27..e3eda20 100644 --- a/modules/user/yazi/default.nix +++ b/modules/user/yazi/default.nix @@ -16,7 +16,60 @@ in { keymap.manager.prepend_keymap = [ { run = "shell ' \"$@\"' --cursor=0 --interactive"; on = [ "@" ]; } + { run = "hidden toggle"; on = [ "" ]; } + { run = "yank"; on = [ "y" "y" ]; } + { run = "copy path"; on = [ "y" "p" ]; } + { run = "copy dirname"; on = [ "y" "d" ]; } + { run = "copy filename"; on = [ "y" "n" ]; } + { run = "copy name_without_ext"; on = [ "y" "N" ]; } + { run = "yank --cut"; on = [ "d" "d" ]; } + { run = "remove --force"; on = [ "d" "D" ]; } + { run = "paste"; on = [ "p" "p" ]; } + { run = "paste --force"; on = [ "p" "P" ]; } + { run = "cd --interactive"; on = [ "c" "d" ]; } + { run = "sort mtime --reverse=no"; on = [ "o" "m" ]; } + { run = "sort mtime --reverse=yes"; on = [ "o" "M" ]; } + { run = "sort natural --reverse=no"; on = [ "o" "b" ]; } + { run = "sort natural --reverse=yes"; on = [ "o" "B" ]; } + { run = "sort alphabetical --reverse=no"; on = [ "o" "a" ]; } + { run = "sort alphabetical --reverse=yes"; on = [ "o" "A" ]; } + { run = "sort extension --reverse=no"; on = [ "o" "e" ]; } + { run = "sort extension --reverse=yes"; on = [ "o" "E" ]; } + { run = "sort size --reverse=no"; on = [ "o" "s" ]; } + { run = "sort size --reverse=yes"; on = [ "o" "S" ]; } + { run = "tab_create --current"; on = [ "t" ]; } + { run = "close"; on = [ "x" ]; } + { run = "tab_switch 1 --relative"; on = [ "J" ]; } + { run = "tab_switch 1 --relative"; on = [ "" ]; } + { run = "tab_switch -1 --relative"; on = [ "K" ]; } + { run = "tab_switch -1 --relative"; on = [ "" ]; } + { run = "undo"; on = [ "u" ]; } + { run = "redo"; on = [ "" ]; } ]; + plugins = { + full-border = pkgs.yaziPlugins.full-border; + git = pkgs.yaziPlugins.git; + sudo = pkgs.yaziPlugins.sudo; + piper = pkgs.yaziPlugins.piper; + }; + initLua = '' + require("full-border"):setup() + require("git"):setup() + ''; + settings = { + "plugin.prepend_fetchers" = [ + { + id = "git"; + name = "*"; + run = "git"; + } + { + id = "git"; + name = "*/"; + run = "git"; + } + ]; + }; }; }; } From 1da801cdf115673be2a1cc21f18ac8d8705dcd57 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 24 Jun 2025 13:34:13 -0500 Subject: [PATCH 246/317] Minor fixes --- modules/user/hyprland/default.nix | 14 +++++++------- modules/user/office/default.nix | 1 - 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 9a544bc..d0d755d 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -321,11 +321,11 @@ in "float,title:(Blender Render)" "size 86% 85%,title:(Blender Render)" "center,title:(Blender Render)" - "float,class:^(org.inkscape.Inkscape)$" - "float,class:^(pinta)$" - "float,class:^(krita)$" - "float,class:^(Gimp)" - "float,class:^(Gimp)" + #"float,class:^(org.inkscape.Inkscape)$" + #"float,class:^(pinta)$" + #"float,class:^(krita)$" + #"float,class:^(Gimp)" + #"float,class:^(Gimp)" "float,class:^(libresprite)$" "float,title:(Open Images)" "size 86% 85%,title:(Open Images)" @@ -343,8 +343,8 @@ in "tile,title:(Godot)" "opacity 0.80,title:ORUI" "suppressevent maximize,class:^(steam)$" - "float,class:^(steam)$" - "fullscreen,class:^(steam)$" + #"float,class:^(steam)$" + #"fullscreen,class:^(steam)$" "opacity 1.0,class:^(org.qutebrowser.qutebrowser),fullscreen:1" "opacity 0.85,class:^(Element)$" "opacity 0.85,class:^(Logseq)$" diff --git a/modules/user/office/default.nix b/modules/user/office/default.nix index 2efc9c3..7c7aa46 100644 --- a/modules/user/office/default.nix +++ b/modules/user/office/default.nix @@ -17,7 +17,6 @@ in { mate.atril xournalpp adwaita-icon-theme - newsflash foliate gnome-maps seahorse From 1db31c64ca2baf8acfb3e4e4f4353443da83e31c Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 24 Jun 2025 13:34:18 -0500 Subject: [PATCH 247/317] PWAs --- flake.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index 563434b..f65ec5e 100644 --- a/flake.lock +++ b/flake.lock @@ -1093,11 +1093,11 @@ ] }, "locked": { - "lastModified": 1746897014, - "narHash": "sha256-2f1EHQMxv361yLJC/KMNN0Uqx1esuSpf5rc0KqvUS+s=", + "lastModified": 1750789796, + "narHash": "sha256-SULb7v2sci2mt8XQeMPlbQLH0gBimfULO0whkSE5JFI=", "ref": "refs/heads/main", - "rev": "91ba604b210663353542b97d6498cc1631a22053", - "revCount": 29, + "rev": "e9f09e66faf9f521dd031dcb2d48f507fdc4c785", + "revCount": 30, "type": "git", "url": "file://path:/etc/nixos.secrets" }, From 4707a4be1d82fcaddc7560b5a77134401993a5f3 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 25 Jun 2025 14:00:20 -0500 Subject: [PATCH 248/317] Some hyprland optimizations --- hosts/snowfire/home.nix | 6 +++--- modules/user/hyprland/default.nix | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index d93797f..933585c 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -50,9 +50,9 @@ wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { monitor = [ - "eDP-1,1920x1080@300,720x864,1.25,vrr,0" - "HDMI-A-1,1920x1080,1536x0,1.25,vrr,0" - "DP-1,1920x1080,0x0,1.25,vrr,0" + "eDP-1,1920x1080@60.00,720x864,1.25,vrr,0" + "HDMI-A-1,preferred,1536x0,1.25,vrr,0" + "DP-1,preferred,0x0,1.25,vrr,0" ]; }; diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index d0d755d..2596b1e 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -114,6 +114,7 @@ in }; cursor = { + no_hardware_cursors = 1; no_warps = false; inactive_timeout = 30; }; From 524599427094edec5e69e29a0e6669fb2d611750 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 28 Jun 2025 08:06:05 -0500 Subject: [PATCH 249/317] Updated system --- flake.lock | 134 +++++++++++++++-------------------- flake.nix | 7 +- modules/user/art/default.nix | 1 - 3 files changed, 64 insertions(+), 78 deletions(-) diff --git a/flake.lock b/flake.lock index f65ec5e..b1e87bc 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1749741788, - "narHash": "sha256-ONPW+AAFSeG808KUyGpvIYrnKrCu9WLoLkrxsaYPD5o=", + "lastModified": 1750903025, + "narHash": "sha256-zpMyirfb+94mEVj7IUvT8iAWtg2v6uwKYXkftZfldiA=", "owner": "StevenBlack", "repo": "hosts", - "rev": "335cd7caa04c54baa49daf1093965d96b4d084df", + "rev": "3ba25afdbea34239c4925285a2ac3379c760b181", "type": "github" }, "original": { @@ -118,18 +118,18 @@ }, "chaotic": { "inputs": { - "fenix": "fenix", "flake-schemas": "flake-schemas", "home-manager": "home-manager", "jovian": "jovian", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1749948228, - "narHash": "sha256-vds3Mp4Pi7eBgGDNAPdVjYQ3USI5Lu3YYkckgL3lTdE=", + "lastModified": 1751028839, + "narHash": "sha256-FwTXzhO94urXyJz4amWiCzf0dmKbxdhqyze/qh+Od7g=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "5f7fcf0d50b726a4c1a07536d6ed16e6679d3825", + "rev": "c744288de83ee89c63ad9744f59a905b455b9017", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1749978329, - "narHash": "sha256-RMnQHG0meKR5cdb6WXa3YCseyXSxdnIZTWu+X54EoxU=", + "lastModified": 1751041558, + "narHash": "sha256-uSfdzrgBAZweKqRfMcioRK1QxDz2mjc73MxVI+fbAGA=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "fc1319f0d30bc5d204210842ccfb4091bb57fa2a", + "rev": "50a1de22af011ea05433453f29c445050c4a747c", "type": "github" }, "original": { @@ -159,28 +159,6 @@ "type": "github" } }, - "fenix": { - "inputs": { - "nixpkgs": [ - "chaotic", - "nixpkgs" - ], - "rust-analyzer-src": "rust-analyzer-src" - }, - "locked": { - "lastModified": 1749623906, - "narHash": "sha256-QD7e5WNVj4aWS5mlJZZnLJ6Lg0h5RSyyEFo2I6xBUEQ=", - "owner": "nix-community", - "repo": "fenix", - "rev": "873cccc628f5e39407e319e6711f3b7d6d1f15cc", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "fenix", - "type": "github" - } - }, "firefox-gnome-theme": { "flake": false, "locked": { @@ -374,11 +352,11 @@ ] }, "locked": { - "lastModified": 1749649116, - "narHash": "sha256-pCuUfMkhlP+XqW+TXX5Tssk8IE4TpS3MbG7OQtvaQdM=", + "lastModified": 1750798083, + "narHash": "sha256-DTCCcp6WCFaYXWKFRA6fiI2zlvOLCf5Vwx8+/0R8Wc4=", "owner": "nix-community", "repo": "home-manager", - "rev": "02040b7777f65342b96c7f826a5c6aef95585057", + "rev": "ff31a4677c1a8ae506aa7e003a3dba08cb203f82", "type": "github" }, "original": { @@ -394,11 +372,11 @@ ] }, "locked": { - "lastModified": 1749944797, - "narHash": "sha256-1l6ZW+2+LDQhYgE4fo2KsM2Ms3lY3ZXv0n6uKka2yMk=", + "lastModified": 1750973805, + "narHash": "sha256-BZXgag7I0rnL/HMHAsBz3tQrfKAibpY2vovexl2lS+Y=", "owner": "nix-community", "repo": "home-manager", - "rev": "c5f345153397f62170c18ded1ae1f0875201d49a", + "rev": "080e8b48b0318b38143d5865de9334f46d51fce3", "type": "github" }, "original": { @@ -711,11 +689,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1749162391, - "narHash": "sha256-aCiNnE26qIAxEBP6SRXjLBlIGOB18TViDreoPe96p6Q=", + "lastModified": 1750923325, + "narHash": "sha256-bIQTzgT0JD/jVEDZJCyWayOAnkCeUQ83CvOU26/2Y/8=", "ref": "refs/heads/main", - "rev": "f9d8dfab7ae0aec625e7814e16f626fabec3641b", - "revCount": 371, + "rev": "7999f448d71f673dc83c372f338ae7db8e290d7a", + "revCount": 374, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -833,11 +811,11 @@ ] }, "locked": { - "lastModified": 1749627191, - "narHash": "sha256-bUv8CDE6Uyxak4UkOvRjx5xj6+msEHSpYGeAjkuTnTs=", + "lastModified": 1750403547, + "narHash": "sha256-XDDINMbHTtKQeSRpX5mwq20z23Wg/I/G4JUinA3V8Xg=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "f31df4cb6b2eeef6cf0113edb687297be72a69df", + "rev": "52b86b86d925ec00c836ecc6d36f9c947bb15736", "type": "github" }, "original": { @@ -871,11 +849,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1749794982, - "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", + "lastModified": 1750776420, + "narHash": "sha256-/CG+w0o0oJ5itVklOoLbdn2dGB0wbZVOoDm4np6w09A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", + "rev": "30a61f056ac492e3b7cdcb69c1e6abdcf00e39cf", "type": "github" }, "original": { @@ -887,11 +865,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1749668643, - "narHash": "sha256-gaWJEWGBW/g1u6o5IM4Un0vluv86cigLuBnjsKILffc=", + "lastModified": 1750646418, + "narHash": "sha256-4UAN+W0Lp4xnUiHYXUXAPX18t+bn6c4Btry2RqM9JHY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1965fd20a39c8e441746bee66d550af78f0c0a7b", + "rev": "1f426f65ac4e6bf808923eb6f8b8c2bfba3d18c5", "type": "github" }, "original": { @@ -903,11 +881,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1749834526, - "narHash": "sha256-izgPGLeUeFB9loC+n2X6TO2n8pOGvVcR3jKqxTGOwgc=", + "lastModified": 1750646418, + "narHash": "sha256-4UAN+W0Lp4xnUiHYXUXAPX18t+bn6c4Btry2RqM9JHY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "db8414903dd6b3042e1ac471eafc18ca4ccb54a4", + "rev": "1f426f65ac4e6bf808923eb6f8b8c2bfba3d18c5", "type": "github" }, "original": { @@ -918,11 +896,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1749794982, - "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", + "lastModified": 1750776420, + "narHash": "sha256-/CG+w0o0oJ5itVklOoLbdn2dGB0wbZVOoDm4np6w09A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", + "rev": "30a61f056ac492e3b7cdcb69c1e6abdcf00e39cf", "type": "github" }, "original": { @@ -1046,38 +1024,42 @@ "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_2", "plasma-manager": "plasma-manager", - "rust-overlay": "rust-overlay", + "rust-overlay": "rust-overlay_2", "secrets": "secrets", "stylix": "stylix" } }, - "rust-analyzer-src": { - "flake": false, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "chaotic", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1749558764, - "narHash": "sha256-R9vQiqez6Gm0ARJKgbsAeLyX493vwIaexOUAz0vDhak=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "9c3476d225ccc90c081280c2a20e9f7d8a200325", + "lastModified": 1750905536, + "narHash": "sha256-Mo7yXM5IvMGNvJPiNkFsVT2UERmnvjsKgnY6UyDdySQ=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "2fa7c0aabd15fa0ccc1dc7e675a4fcf0272ad9a1", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, - "rust-overlay": { + "rust-overlay_2": { "inputs": { "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1749955444, - "narHash": "sha256-CllTHvHX8KAdAZ+Lxzd23AmZTxO1Pfy+zC43/5tYkAE=", + "lastModified": 1750991972, + "narHash": "sha256-jzadGZL1MtqmHb5AZcjZhHpNulOdMZPxf8Wifg8e5VA=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "539ba15741f0e6691a2448743dbc601d8910edce", + "rev": "b6509555d8ffaa0727f998af6ace901c5b78dc26", "type": "github" }, "original": { @@ -1128,11 +1110,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1749988622, - "narHash": "sha256-DuZXMJoxgT1CRvoK6R5cIdIf0NRbwQ3u/iFrr9zZECI=", + "lastModified": 1750950678, + "narHash": "sha256-ZNSjRDpaR/sAtrZNPO6RpGkHKdMb1oc1lkQN+6ZBvyU=", "owner": "danth", "repo": "stylix", - "rev": "ad592a0e99386474a1826f3d90aeaff97848182c", + "rev": "c700d41bb8ee32baed490c8128c1077b2b27183b", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index f1a3520..346d7be 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,12 @@ (import inputs.nixpkgs { inherit system; }).applyPatches { name = "nixpkgs-patched"; src = inputs.nixpkgs; - patches = [ ]; + patches = [ + (builtins.fetchurl { + url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/419713.patch"; + sha256 = "sha256:16giri2vwqf6lb6l8fw10zgda1d3y13g3p6hm375f2i2dbip9s9b"; + }) + ]; }; # configure pkgs diff --git a/modules/user/art/default.nix b/modules/user/art/default.nix index da3358f..89f2218 100644 --- a/modules/user/art/default.nix +++ b/modules/user/art/default.nix @@ -15,7 +15,6 @@ in { pinta inkscape libresprite - makehuman upscayl ]; userSettings.blender.enable = true; From eb95e975e09aded2e8668df3d3497e4af10ee9d7 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 28 Jun 2025 11:15:13 -0500 Subject: [PATCH 250/317] Building fixes --- modules/user/hyprland/ashell.patch | 61 +++++++++------- modules/user/hyprland/default.nix | 109 ++++++++++++++--------------- 2 files changed, 86 insertions(+), 84 deletions(-) diff --git a/modules/user/hyprland/ashell.patch b/modules/user/hyprland/ashell.patch index f45c903..76bea3a 100644 --- a/modules/user/hyprland/ashell.patch +++ b/modules/user/hyprland/ashell.patch @@ -1,32 +1,39 @@ diff --git a/src/modules/workspaces.rs b/src/modules/workspaces.rs -index 806d499..3737a82 100644 +index 1bafb6d..c448b02 100644 --- a/src/modules/workspaces.rs +++ b/src/modules/workspaces.rs -@@ -41,6 +41,7 @@ fn get_workspaces(enable_workspace_filling: bool) -> Vec { - let mut workspaces = hyprland::data::Workspaces::get() - .map(|w| w.to_vec()) - .unwrap_or_default(); -+ workspaces.retain(|w| w.id > 0); +@@ -51,20 +51,20 @@ fn get_workspaces(config: &WorkspacesModuleConfig) -> Vec { + let (special, normal): (Vec<_>, Vec<_>) = workspaces.into_iter().partition(|w| w.id < 0); - workspaces.sort_by_key(|w| w.id); + // map special workspaces +- for w in special.iter() { +- result.push(Workspace { +- id: w.id, +- name: w +- .name +- .split(":") +- .last() +- .map_or_else(|| "".to_string(), |s| s.to_owned()), +- monitor_id: Some(w.monitor_id as usize), +- monitor: w.monitor.clone(), +- active: monitors.iter().any(|m| m.special_workspace.id == w.id), +- windows: w.windows, +- }); +- } ++ //for w in special.iter() { ++ // result.push(Workspace { ++ // id: w.id, ++ // name: w ++ // .name ++ // .split(":") ++ // .last() ++ // .map_or_else(|| "".to_string(), |s| s.to_owned()), ++ // monitor_id: Some(w.monitor_id as usize), ++ // monitor: w.monitor.clone(), ++ // active: monitors.iter().any(|m| m.special_workspace.id == w.id), ++ // windows: w.windows, ++ // }); ++ //} -diff --git a/src/outputs.rs b/src/outputs.rs -index adc616b..ce63b57 100644 ---- a/src/outputs.rs -+++ b/src/outputs.rs -@@ -58,6 +58,7 @@ impl Outputs { - id, - size: Some((None, Some(HEIGHT))), - layer: Layer::Bottom, -+ namespace: String::from("ashell"), - pointer_interactivity: true, - keyboard_interactivity: KeyboardInteractivity::None, - exclusive_zone: HEIGHT as i32, -@@ -77,6 +78,7 @@ impl Outputs { - id: menu_id, - size: Some((None, None)), - layer: Layer::Background, -+ namespace: String::from("ashell"), - pointer_interactivity: true, - keyboard_interactivity: KeyboardInteractivity::None, - output: wl_output.map_or(IcedOutput::Active, |wl_output| { + // map normal workspaces + for w in normal.iter() { diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 2596b1e..af6a105 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -361,18 +361,18 @@ in layerrule = [ "blur,waybar" - "blur,ashell" + "blur,ashell-main-layer" "blur,launcher # fuzzel" "blur,~nwggrid" "blur,gtk-layer-shell" "xray 1,waybar" - "xray 1,ashell" + "xray 1,ashell-main-layer" "xray 1,~nwggrid" "xray 1,gtk-layer-shell" "ignorezero, gtk-layer-shell" - "ignorezero, ashell" + "ignorezero, ashell-main-layer" "animation fade,~nwggrid" - "animation popin 80%, ashell" + "animation popin 80%, ashell-main-layer" ]; blurls = [ @@ -406,11 +406,11 @@ in polkit_gnome (ashell.overrideAttrs (o: { patches = (o.patches or [ ]) ++ [ - ./ashell.patch + ./ashell.patch ]; })) nwg-launchers - papirus-icon-theme + (lib.hiPrio papirus-icon-theme) (pkgs.writeScriptBin "nwggrid-wrapper" '' #!/bin/sh if pgrep -x "nwggrid-server" > /dev/null @@ -543,57 +543,52 @@ in then echo "Shouldn't suspend"; sleep 10; else echo "Should suspend"; systemctl suspend; fi '') ]); - home.file.".config/ashell.yml".text = '' -outputs: All -position: Top -modules: - left: - - [ AppLauncher, SystemInfo ] - center: - - Workspaces - right: - - [Clock, Settings, Tray] -appLauncherCmd: "nwggrid-wrapper" # optional, default None -truncateTitleAfterLength: 150 # optional, default 150 -workspaces: - visibilityMode: MonitorSpecific # optional, default All - enableWorkspaceFilling: true # optional, default false -system: - cpuWarnThreshold: 80 # cpu indicator warning level (default 60) - cpuAlertThreshold: 95 # cpu indicator alert level (default 80) - memWarnThreshold: 50 # mem indicator warning level (default 70) - memAlertThreshold: 75 # mem indicator alert level (default 85) - tempWarnThreshold: 90 # temperature indicator warning level (default 60) - tempAlertThreshold: 95 # temperature indicator alert level (default 80) -clock: - format: "%a %d %b %R" # optional, default: %a %d %b %R -mediaPlayer: - maxTitleLength: 100 # optional, default 100 -settings: - lockCmd: "hyprlock &" # optional, default None - audioSinksMoreCmd: "pavucontrol -t 3" # optional default None - audioSourcesMoreCmd: "pavucontrol -t 4" # optional, default None - wifiMoreCmd: "nm-connection-editor" # optional, default None - vpnMoreCmd: "nm-connection-editor" # optional, default None - bluetoothMoreCmd: "blueman-manager" # optional, default None -appearance: - backgroundColor: "#${config.lib.stylix.colors.base00}88" # used as a base background color for header module button - primaryColor: "#${config.lib.stylix.colors.base0B}" # used as a accent color - secondaryColor: "#${config.lib.stylix.colors.base01}" # used for darker background color - successColor: "#${config.lib.stylix.colors.base0A}" # used for success message or happy state - dangerColor: "#${config.lib.stylix.colors.base08}" # used for danger message or danger state (the weak version is used for the warning state - textColor: "#${config.lib.stylix.colors.base07}" # base default text color - # this is a list of color that will be used in the workspace module (one color for each monitor) - workspaceColors: - - "#${config.lib.stylix.colors.base0B}" - - "#${config.lib.stylix.colors.base0B}" - # this is a list of color that will be used in the workspace module - # for the special workspace (one color for each monitor) - # optional, default None - # without a value the workspaceColors list will be used - specialWorkspaceColors: - - "#${config.lib.stylix.colors.base0B}" - - "#${config.lib.stylix.colors.base0B}" + home.file.".config/ashell/config.toml".text = '' +outputs = "All" +position = "Top" +app_launcher_cmd = "nwggrid-wrapper" +truncate_title_after_length = 150 +[modules] +left = [ "AppLauncher", "SystemInfo" ] +center = [ "Workspaces" ] +right = [ "Clock", "Settings", "Tray" ] +[workspaces] +visibility_mode = "MonitorSpecific" +enable_workspace_filling = true +[system.cpu] +warn_threshold = 80 +alert_threshold = 95 +[system.mem] +warn_threshold = 50 +alert_threshold = 75 +[system.temp] +warn_threshold = 90 +alert_threshold = 95 +[clock] +format = "%a %d %b %R" +[mediaPlayer] +max_title_length = 100 +[settings] +lockCmd = "hyprlock &" +audio_sinks_more_cmd = "pavucontrol -t 3" +audio_sources_more_cmd = "pavucontrol -t 4" +wifi_more_cmd = "nm-connection-editor" +vpn_more_cmd = "nm-connection-editor" +bluetooth_more_cmd = "blueman-manager" +[appearance] +style = "Solid" +opacity = 0.7 +background_color = "#${config.lib.stylix.colors.base00}88" +primary_color = "#${config.lib.stylix.colors.base0B}" +secondary_color = "#${config.lib.stylix.colors.base01}" +success_color = "#${config.lib.stylix.colors.base0A}" +danger_color = "#${config.lib.stylix.colors.base08}" +text_color = "#${config.lib.stylix.colors.base07}" +workspace_colors = [ "#${config.lib.stylix.colors.base0B}", "#${config.lib.stylix.colors.base0B}" ] +specialWorkspaceColors = [ "#${config.lib.stylix.colors.base0B}", "#${config.lib.stylix.colors.base0B}" ] +[appearance.menu] +opacity = 0.7 +backdrop = 0.0 ''; home.file.".config/hypr/hypridle.conf".text = '' general { From c143f3ac300ae6ac4fbb9f133ca0bd95c3db5482 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 4 Jul 2025 13:18:03 -0500 Subject: [PATCH 251/317] fixes and hyprland back to duskfall --- flake.nix | 2 +- hosts/duskfall/configuration.nix | 2 +- hosts/duskfall/home.nix | 3 +- modules/user/hyprland/default.nix | 94 +++++++++++++++++++++---------- 4 files changed, 68 insertions(+), 33 deletions(-) diff --git a/flake.nix b/flake.nix index 346d7be..724043e 100644 --- a/flake.nix +++ b/flake.nix @@ -13,7 +13,7 @@ patches = [ (builtins.fetchurl { url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/419713.patch"; - sha256 = "sha256:16giri2vwqf6lb6l8fw10zgda1d3y13g3p6hm375f2i2dbip9s9b"; + sha256 = "sha256:0i9kij1vgv4x3bgnydlzn76pbjx6s8fvxm1agjs100ry931jizyv"; }) ]; }; diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index 745020a..e9fce0c 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -21,7 +21,7 @@ }; # wm - gnome.enable = true; + hyprland.enable = true; # dotfiles dotfilesDir = "/etc/nixos"; diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index 56a761f..b860e85 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -29,7 +29,8 @@ office.enable = true; # wm - gnome.enable = true; + hyprland.enable = true; + hyprland.performanceOptimizations = true; # style stylix.enable = true; diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index af6a105..87207cd 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -10,6 +10,11 @@ in options = { userSettings.hyprland = { enable = lib.mkEnableOption "Enable hyprland"; + performanceOptimizations = lib.mkOption { + default = false; + type = lib.types.bool; + description = "Enable performance optimizations"; + }; }; }; @@ -25,18 +30,52 @@ in home.sessionVariables = { NIXOS_OZONE_WL = 1; + ELECTRON_OZONE_PLATFORM_HINT = "wayland"; XDG_CURRENT_DESKTOP = "Hyprland"; XDG_SESSION_DESKTOP = "Hyprland"; XDG_SESSION_TYPE = "wayland"; GDK_BACKEND = "wayland,x11,*"; QT_QPA_PLATFORM = "wayland;xcb"; QT_QPA_PLATFORMTHEME = lib.mkForce "qt5ct"; - QT_AUTO_SCREEN_SCALE_FACTOR = 1; + QT_AUTO_SCREEN_SCALE_FACTOR = "1.25"; QT_WAYLAND_DISABLE_WINDOWDECORATION = 1; CLUTTER_BACKEND = "wayland"; - GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"; - GSK_RENDERER = "gl"; + #GDK_PIXBUF_MODULE_FILE = "${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache"; + #GSK_RENDERER = "gl"; XCURSOR_THEME = config.gtk.cursorTheme.name; + GDK_DEBUG = "portals"; + GTK_USE_PORTALS = 1; + }; + + xdg.portal = + { + enable = true; + extraPortals = with pkgs; + [ + xdg-desktop-portal-wlr + xdg-desktop-portal-termfilechooser + ]; + }; + + xdg.portal.config.common = { + default = [ "hyprland" ]; + "org.freedesktop.impl.portal.FileChooser" = "termfilechooser"; + }; + xdg.portal.config.hyprland = { + default = [ "hyprland" ]; + "org.freedesktop.impl.portal.FileChooser" = "termfilechooser"; + }; + + home.sessionVariables.TERMCMD = "kitty --class=filechoose_yazi"; + + xdg.configFile."xdg-desktop-portal-termfilechooser/config" = + { + force = true; + text = + '' + [filechooser] + cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh + ''; }; gtk.cursorTheme = { @@ -76,17 +115,17 @@ in general = { layout = "master"; - border_size = 5; - "col.active_border" = "0xff${config.lib.stylix.colors.base08} 0xff${config.lib.stylix.colors.base09} 0xff${config.lib.stylix.colors.base0A} 0xff${config.lib.stylix.colors.base0B} 0xff${config.lib.stylix.colors.base0C} 0xff${config.lib.stylix.colors.base0D} 0xff${config.lib.stylix.colors.base0E} 0xff${config.lib.stylix.colors.base0F} 270deg"; + border_size = 3; + "col.active_border" = if config.userSettings.hyprland.performanceOptimizations then "0xff${config.lib.stylix.colors.base0B}" else "0xff${config.lib.stylix.colors.base08} 0xff${config.lib.stylix.colors.base09} 0xff${config.lib.stylix.colors.base0A} 0xff${config.lib.stylix.colors.base0B} 0xff${config.lib.stylix.colors.base0C} 0xff${config.lib.stylix.colors.base0D} 0xff${config.lib.stylix.colors.base0E} 0xff${config.lib.stylix.colors.base0F} 270deg"; "col.inactive_border" = "0xff${config.lib.stylix.colors.base02}"; resize_on_border = true; - gaps_in = 7; - gaps_out = 7; + gaps_in = 6; + gaps_out = 6; }; group = { - "col.border_active" = "0xff${config.lib.stylix.colors.base08} 0xff${config.lib.stylix.colors.base09} 0xff${config.lib.stylix.colors.base0A} 0xff${config.lib.stylix.colors.base0B} 0xff${config.lib.stylix.colors.base0C} 0xff${config.lib.stylix.colors.base0D} 0xff${config.lib.stylix.colors.base0E} 0xff${config.lib.stylix.colors.base0F} 270deg"; - "col.border_inactive" = "0xff${config.lib.stylix.colors.base02}"; + "col.border_active" = config.wayland.windowManager.hyprland.settings.general."col.active_border"; + "col.border_inactive" = config.wayland.windowManager.hyprland.settings.general."col.inactive_border"; groupbar = { gradients = false; "col.active" = "0xff${config.lib.stylix.colors.base0B}"; @@ -96,20 +135,20 @@ in decoration = { shadow = { - enabled = true; + enabled = (!config.userSettings.hyprland.performanceOptimizations); }; rounding = 8; dim_special = 0.0; blur = { - enabled = true; + enabled = (!config.userSettings.hyprland.performanceOptimizations); size = 5; passes = 2; ignore_opacity = true; contrast = 1.17; brightness = (if (config.stylix.polarity == "dark") then "0.65" else "1.45"); - xray = true; - special = true; - popups = true; + xray = (!config.userSettings.hyprland.performanceOptimizations); + special = (!config.userSettings.hyprland.performanceOptimizations); + popups = (!config.userSettings.hyprland.performanceOptimizations); }; }; @@ -128,7 +167,7 @@ in focus_on_activate = true; }; - bezier = [ + bezier = lib.optionals (!config.userSettings.hyprland.performanceOptimizations) [ "wind, 0.05, 0.9, 0.1, 1.05" "winIn, 0.1, 1.1, 0.1, 1.0" "winOut, 0.3, -0.3, 0, 1" @@ -137,8 +176,8 @@ in ]; animations = { - enabled = "yes"; - animation = [ + enabled = (!config.userSettings.hyprland.performanceOptimizations); + animation = lib.optionals (!config.userSettings.hyprland.performanceOptimizations) [ "windowsIn, 1, 6, winIn, popin" "windowsOut, 1, 5, winOut, popin" "windowsMove, 1, 5, wind, slide" @@ -316,17 +355,11 @@ in "float,title:^(Save to Disk)$" "size 70% 75%,title:^(Save to Disk)$" "center,title:^(Save to Disk)$" - "opacity 0.80,class:^(org.pulseaudio.pavucontrol)$" "float,class:^(pokefinder)$" "float,class:^(Waydroid)$" "float,title:(Blender Render)" "size 86% 85%,title:(Blender Render)" "center,title:(Blender Render)" - #"float,class:^(org.inkscape.Inkscape)$" - #"float,class:^(pinta)$" - #"float,class:^(krita)$" - #"float,class:^(Gimp)" - #"float,class:^(Gimp)" "float,class:^(libresprite)$" "float,title:(Open Images)" "size 86% 85%,title:(Open Images)" @@ -342,10 +375,9 @@ in "size 70% 70%,title:(Resource)" "center,title:(Resource)" "tile,title:(Godot)" - "opacity 0.80,title:ORUI" "suppressevent maximize,class:^(steam)$" - #"float,class:^(steam)$" - #"fullscreen,class:^(steam)$" + ] ++ lib.optionals (!config.userSettings.hyprland.performanceOptimizations) [ + "opacity 0.80,class:^(org.pulseaudio.pavucontrol)$" "opacity 1.0,class:^(org.qutebrowser.qutebrowser),fullscreen:1" "opacity 0.85,class:^(Element)$" "opacity 0.85,class:^(Logseq)$" @@ -357,9 +389,10 @@ in "opacity 0.85,class:^(org.gnome.Nautilus)$" "opacity 0.85,class:^(org.gnome.Nautilus)$" "opacity 0.85,initialTitle:^(Notes)$,initialClass:^(Brave-browser)$" + ]; - layerrule = [ + layerrule = lib.optionals (!config.userSettings.hyprland.performanceOptimizations) [ "blur,waybar" "blur,ashell-main-layer" "blur,launcher # fuzzel" @@ -375,7 +408,7 @@ in "animation popin 80%, ashell-main-layer" ]; - blurls = [ + blurls = lib.optionals (!config.userSettings.hyprland.performanceOptimizations) [ "waybar" "launcher # fuzzel" "~nwggrid" @@ -418,6 +451,7 @@ in nwggrid -client else GDK_PIXBUF_MODULE_FILE=${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache nwggrid-server -layer-shell-exclusive-zone -1 -g adw-gtk3 -o 0.55 -b ${config.lib.stylix.colors.base00} + sleep 0.5 && nwggrid -client fi '') (pkgs.writeScriptBin "hyprgamemode" '' @@ -577,7 +611,7 @@ vpn_more_cmd = "nm-connection-editor" bluetooth_more_cmd = "blueman-manager" [appearance] style = "Solid" -opacity = 0.7 +opacity = ${if config.userSettings.hyprland.performanceOptimizations then "1.0" else "0.7"} background_color = "#${config.lib.stylix.colors.base00}88" primary_color = "#${config.lib.stylix.colors.base0B}" secondary_color = "#${config.lib.stylix.colors.base01}" @@ -587,7 +621,7 @@ text_color = "#${config.lib.stylix.colors.base07}" workspace_colors = [ "#${config.lib.stylix.colors.base0B}", "#${config.lib.stylix.colors.base0B}" ] specialWorkspaceColors = [ "#${config.lib.stylix.colors.base0B}", "#${config.lib.stylix.colors.base0B}" ] [appearance.menu] -opacity = 0.7 +opacity = ${if config.userSettings.hyprland.performanceOptimizations then "1.0" else "0.7"} backdrop = 0.0 ''; home.file.".config/hypr/hypridle.conf".text = '' From 14cab3e0bbea6005031a944b3459a44067b54503 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 4 Jul 2025 13:51:29 -0500 Subject: [PATCH 252/317] some more optimizations --- modules/user/emacs/default.nix | 8 ++++++++ modules/user/emacs/init.el | 7 ++++--- modules/user/hyprland/default.nix | 8 ++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index 82fe1bd..2d9e6bc 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -6,6 +6,11 @@ in { options = { userSettings.emacs = { enable = lib.mkEnableOption "Enable emacs"; + opacity = lib.mkOption { + default = 85; + type = lib.types.number; + description = "Emacs' percentage opacity as a whole number"; + }; }; }; @@ -70,6 +75,9 @@ in { template = builtins.readFile ./lib/doom-stylix-theme.el.mustache; extension = ".el"; }; + home.file.".config/emacs/sysvars.el".text = '' + (setq systemOpacity ${builtins.toString config.userSettings.emacs.opacity}) +''; wayland.windowManager.hyprland.settings.exec-once = lib.optionals config.wayland.windowManager.hyprland.enable [ "emacs --daemon" ]; }; } diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 1072c83..d28ad0e 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -14,6 +14,7 @@ ;; organize everything with use-package (require 'use-package) +(load (expand-file-name "~/.config/emacs/sysvars.el")) ;; use-package-ception (use-package use-package @@ -28,9 +29,9 @@ (setq inhibit-startup-message t) ;; Transparent background - (set-frame-parameter nil 'alpha-background 85) - (add-to-list 'default-frame-alist '(alpha-background . 85)) - (add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) + (set-frame-parameter nil 'alpha-background systemOpacity) + (add-to-list 'default-frame-alist '(alpha-background . systemOpacity)) + ;;(add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) ;; I want declarative config, no custom (setq custom-file "/dev/null") diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 87207cd..8a51d5e 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -5,6 +5,7 @@ let term = config.userSettings.terminal; spawnEditor = config.userSettings.spawnEditor; spawnBrowser = config.userSettings.spawnBrowser; + performance = config.userSettings.hyprland.performanceOptimizations; in { options = { @@ -20,7 +21,10 @@ in config = lib.mkIf cfg.enable { userSettings.alacritty.enable = true; + programs.alacritty.settings.window.opacity = lib.mkOverride 40 (if performance then 1.0 else 0.85); userSettings.kitty.enable = true; + programs.kitty.settings.background_opacity = lib.mkOverride 40 (if performance then "1.0" else "0.85"); + userSettings.emacs.opacity = lib.mkOverride 40 (if performance then 100 else 85); userSettings.dmenuScripts = { enable = true; dmenuCmd = "fuzzel -d"; @@ -450,8 +454,8 @@ in then nwggrid -client else - GDK_PIXBUF_MODULE_FILE=${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache nwggrid-server -layer-shell-exclusive-zone -1 -g adw-gtk3 -o 0.55 -b ${config.lib.stylix.colors.base00} - sleep 0.5 && nwggrid -client + GDK_PIXBUF_MODULE_FILE=${pkgs.librsvg}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache nwggrid-server -layer-shell-exclusive-zone -1 -g adw-gtk3 -o 0.55 -b ${config.lib.stylix.colors.base00} & + sleep 0.6 && nwggrid -client fi '') (pkgs.writeScriptBin "hyprgamemode" '' From 139963ccfa419c0e9fb969756cc4d272c93956f1 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 5 Jul 2025 10:46:25 -0500 Subject: [PATCH 253/317] Duskfall optimizations --- hosts/duskfall/configuration.nix | 9 +++++++++ hosts/duskfall/home.nix | 14 +++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index e9fce0c..8d13bee 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -10,6 +10,7 @@ # hardware cachy.enable = true; bluetooth.enable = true; + powerprofiles.enable = true; tlp.enable = false; printing.enable = true; @@ -61,6 +62,14 @@ services.xserver.wacom.enable = true; services.xserver.videoDrivers = [ "i915" ]; + services.undervolt = { + enable = true; + coreOffset = -100; + uncoreOffset = -100; + analogioOffset = -100; + gpuOffset = -100; + }; + }; } diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index b860e85..80e9780 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -51,6 +51,10 @@ wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { settings = { + misc = { + vfr = true; + }; + animations = { enabled = lib.mkForce "no"; }; @@ -63,13 +67,13 @@ }; }; - input = { - repeat_delay = lib.mkForce 850; - repeat_rate = lib.mkForce 80; - }; + #input = { + # repeat_delay = lib.mkForce 850; + # repeat_rate = lib.mkForce 80; + #}; monitor = [ - "eDP-1,1920x1080@60,0x0,1.25" + "eDP-1,1920x1080@48,0x0,1" ]; }; From d510889f2e54abee0eaad771d2b14bf45cb06291 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 5 Jul 2025 10:46:55 -0500 Subject: [PATCH 254/317] Removed some unnecessary stuff --- modules/user/hyprland/default.nix | 10 +--------- modules/user/media/default.nix | 26 +------------------------- 2 files changed, 2 insertions(+), 34 deletions(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 8a51d5e..ed048ee 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -112,7 +112,6 @@ in "alacritty --class scratch_term" "kitty --class scratch_yazi -e yazi" "alacritty --class scratch_numbat -e numbat" - "kitty --class scratch_music -e kew" "alacritty --class scratch_btm -e btm" "element-desktop" ]; @@ -166,7 +165,7 @@ in disable_hyprland_logo = true; mouse_move_enables_dpms = true; enable_swallow = true; - swallow_regex = "(scratch_term)|(Alacritty)|(kitty)|(scratch_yazi)"; + swallow_regex = "(scratch_term)|(Alacritty)|(kitty)"; font_family = font; focus_on_activate = true; }; @@ -303,8 +302,6 @@ in "SUPER,F,togglespecialworkspace,scratch_yazi" ''SUPER,N,exec,if hyprctl clients | grep scratch_numbat; then echo "scratch_numbat respawn not needed"; else alacritty --class scratch_numbat -e numbat; fi'' "SUPER,N,togglespecialworkspace,scratch_numbat" - ''SUPER,M,exec,if hyprctl clients | grep scratch_music; then echo "scratch_music respawn not needed"; else kitty --class scratch_music -e kew; fi'' - "SUPER,M,togglespecialworkspace,scratch_music" ''SUPER,B,exec,if hyprctl clients | grep scratch_btm; then echo "scratch_yazi respawn not needed"; else alacritty --class scratch_btm -e btm; fi'' "SUPER,B,togglespecialworkspace,scratch_btm" ''SUPER,D,exec,if hyprctl clients | grep Element; then echo "scratch_yazi respawn not needed"; else element-desktop; fi'' @@ -352,10 +349,6 @@ in "size 85% 90%,class:^(Element)$" "workspace special:scratch_element silent,class:^(Element)$" "center,class:^(Element)$" - "float,class:^(scratch_music)$" - "size 80% 85%,class:^(scratch_music)$" - "workspace special:scratch_music silent,class:^(scratch_music)$" - "center,class:^(scratch_music)$" "float,title:^(Save to Disk)$" "size 70% 75%,title:^(Save to Disk)$" "center,title:^(Save to Disk)$" @@ -436,7 +429,6 @@ in home.packages = (with pkgs; [ hyprland-monitor-attached - kew alacritty kitty killall diff --git a/modules/user/media/default.nix b/modules/user/media/default.nix index 884a140..cd843b7 100644 --- a/modules/user/media/default.nix +++ b/modules/user/media/default.nix @@ -12,34 +12,10 @@ in { config = lib.mkIf cfg.enable { home.packages = with pkgs; [ vlc - mpv mpc + mpv yt-dlp_git ffmpeg ]; - services.mpd = rec { - enable = true; - musicDirectory = config.xdg.userDirs.music+"/Songs"; - playlistDirectory = config.xdg.userDirs.music+"/Playlists"; - dbFile = musicDirectory+"/mpd.db"; - extraConfig = '' - audio_output { - type "pipewire" - name "PipeWire Sound Server" - } - ''; - }; - - programs.ncmpcpp = { - package = (pkgs.ncmpcpp.override { visualizerSupport = true; }); - enable = true; - bindings = [ - { key = "j"; command = "scroll_down"; } - { key = "k"; command = "scroll_up"; } - { key = "J"; command = [ "select_item" "scroll_down" ]; } - { key = "K"; command = [ "select_item" "scroll_up" ]; } - ]; - }; - }; } From ca02e3c1b4185d2b7fea26dceb8f39a610125cf7 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 5 Jul 2025 12:16:16 -0500 Subject: [PATCH 255/317] Various fixes and updates --- flake.lock | 8 +++---- modules/user/emacs/default.nix | 14 +++++++++++- modules/user/emacs/init.el | 2 +- modules/user/hyprland/default.nix | 38 ++++++++++++------------------- 4 files changed, 33 insertions(+), 29 deletions(-) diff --git a/flake.lock b/flake.lock index b1e87bc..dcc4c2a 100644 --- a/flake.lock +++ b/flake.lock @@ -1075,11 +1075,11 @@ ] }, "locked": { - "lastModified": 1750789796, - "narHash": "sha256-SULb7v2sci2mt8XQeMPlbQLH0gBimfULO0whkSE5JFI=", + "lastModified": 1751731349, + "narHash": "sha256-8TsOqyBfEzwJFLnGnS3d3maEI8jp6VkwLzSzv0uoFvE=", "ref": "refs/heads/main", - "rev": "e9f09e66faf9f521dd031dcb2d48f507fdc4c785", - "revCount": 30, + "rev": "a9ee39a25bfe96c957a09182437d23b9e62c3d6e", + "revCount": 31, "type": "git", "url": "file://path:/etc/nixos.secrets" }, diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index 2d9e6bc..a989748 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -76,7 +76,19 @@ in { extension = ".el"; }; home.file.".config/emacs/sysvars.el".text = '' - (setq systemOpacity ${builtins.toString config.userSettings.emacs.opacity}) + ;;; sysvars.el --- imported variables from nixos config -*- lexical-binding: t; no-byte-compile: t; -*- + ;; + ;; Author: Emmet K + ;; Maintainer: Emmet K + ;; + ;;; Commentary: + ;; + ;; Emacs variables imported from my NixOS config. + ;; + ;;; Code: + (setq systemOpacity ${builtins.toString config.userSettings.emacs.opacity}) + + ;;; sysvars.el ends here ''; wayland.windowManager.hyprland.settings.exec-once = lib.optionals config.wayland.windowManager.hyprland.enable [ "emacs --daemon" ]; }; diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index d28ad0e..5ed6bb5 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -30,7 +30,7 @@ ;; Transparent background (set-frame-parameter nil 'alpha-background systemOpacity) - (add-to-list 'default-frame-alist '(alpha-background . systemOpacity)) + (add-to-list 'default-frame-alist `(alpha-background . ,systemOpacity)) ;;(add-to-list 'default-frame-alist '(inhibit-double-buffering . t)) ;; I want declarative config, no custom diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index ed048ee..f47ee82 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -119,7 +119,7 @@ in general = { layout = "master"; border_size = 3; - "col.active_border" = if config.userSettings.hyprland.performanceOptimizations then "0xff${config.lib.stylix.colors.base0B}" else "0xff${config.lib.stylix.colors.base08} 0xff${config.lib.stylix.colors.base09} 0xff${config.lib.stylix.colors.base0A} 0xff${config.lib.stylix.colors.base0B} 0xff${config.lib.stylix.colors.base0C} 0xff${config.lib.stylix.colors.base0D} 0xff${config.lib.stylix.colors.base0E} 0xff${config.lib.stylix.colors.base0F} 270deg"; + "col.active_border" = if performance then "0xff${config.lib.stylix.colors.base0B}" else "0xff${config.lib.stylix.colors.base08} 0xff${config.lib.stylix.colors.base09} 0xff${config.lib.stylix.colors.base0A} 0xff${config.lib.stylix.colors.base0B} 0xff${config.lib.stylix.colors.base0C} 0xff${config.lib.stylix.colors.base0D} 0xff${config.lib.stylix.colors.base0E} 0xff${config.lib.stylix.colors.base0F} 270deg"; "col.inactive_border" = "0xff${config.lib.stylix.colors.base02}"; resize_on_border = true; gaps_in = 6; @@ -138,20 +138,20 @@ in decoration = { shadow = { - enabled = (!config.userSettings.hyprland.performanceOptimizations); + enabled = (!performance); }; rounding = 8; dim_special = 0.0; blur = { - enabled = (!config.userSettings.hyprland.performanceOptimizations); + enabled = (!performance); size = 5; passes = 2; ignore_opacity = true; contrast = 1.17; brightness = (if (config.stylix.polarity == "dark") then "0.65" else "1.45"); - xray = (!config.userSettings.hyprland.performanceOptimizations); - special = (!config.userSettings.hyprland.performanceOptimizations); - popups = (!config.userSettings.hyprland.performanceOptimizations); + xray = (!performance); + special = (!performance); + popups = (!performance); }; }; @@ -170,7 +170,7 @@ in focus_on_activate = true; }; - bezier = lib.optionals (!config.userSettings.hyprland.performanceOptimizations) [ + bezier = lib.optionals (!performance) [ "wind, 0.05, 0.9, 0.1, 1.05" "winIn, 0.1, 1.1, 0.1, 1.0" "winOut, 0.3, -0.3, 0, 1" @@ -179,8 +179,8 @@ in ]; animations = { - enabled = (!config.userSettings.hyprland.performanceOptimizations); - animation = lib.optionals (!config.userSettings.hyprland.performanceOptimizations) [ + enabled = (!performance); + animation = lib.optionals (!performance) [ "windowsIn, 1, 6, winIn, popin" "windowsOut, 1, 5, winOut, popin" "windowsMove, 1, 5, wind, slide" @@ -224,12 +224,6 @@ in "SUPERSHIFT,T,exec,screenshot-ocr" "CTRLALT,Delete,exec,hyprctl kill" "SUPERSHIFT,K,exec,hyprctl kill" - ",code:172,exec,mpc toggle" - ",code:208,exec,mpc toggle" - ",code:209,exec,mpc toggle" - ",code:174,exec,mpc stop" - ",code:171,exec,mpc next" - ",code:173,exec,mpc prev" "SUPER,R,pass,^(com\.obsproject\.Studio)$" "SUPERSHIFT,R,pass,^(com\.obsproject\.Studio)$" "SUPER,RETURN,exec,${term}" @@ -373,7 +367,7 @@ in "center,title:(Resource)" "tile,title:(Godot)" "suppressevent maximize,class:^(steam)$" - ] ++ lib.optionals (!config.userSettings.hyprland.performanceOptimizations) [ + ] ++ lib.optionals (!performance) [ "opacity 0.80,class:^(org.pulseaudio.pavucontrol)$" "opacity 1.0,class:^(org.qutebrowser.qutebrowser),fullscreen:1" "opacity 0.85,class:^(Element)$" @@ -389,7 +383,7 @@ in ]; - layerrule = lib.optionals (!config.userSettings.hyprland.performanceOptimizations) [ + layerrule = lib.optionals (!performance) [ "blur,waybar" "blur,ashell-main-layer" "blur,launcher # fuzzel" @@ -405,7 +399,7 @@ in "animation popin 80%, ashell-main-layer" ]; - blurls = lib.optionals (!config.userSettings.hyprland.performanceOptimizations) [ + blurls = lib.optionals (!performance) [ "waybar" "launcher # fuzzel" "~nwggrid" @@ -467,7 +461,6 @@ in pkill -STOP syncthing; pkill -STOP emacs; pkill -STOP emacsclient; - systemctl --user stop mpd; systemctl --user stop nextcloud-client; pkill ashell; pkill hypridle; @@ -485,7 +478,6 @@ in pkill -CONT syncthing; pkill -CONT emacs; pkill -CONT emacsclient; - systemctl --user start mpd; systemctl --user start nextcloud-client; WGPU_BACKEND=gl ashell & disown; hypridle & disown; @@ -607,7 +599,7 @@ vpn_more_cmd = "nm-connection-editor" bluetooth_more_cmd = "blueman-manager" [appearance] style = "Solid" -opacity = ${if config.userSettings.hyprland.performanceOptimizations then "1.0" else "0.7"} +opacity = ${if performance then "1.0" else "0.7"} background_color = "#${config.lib.stylix.colors.base00}88" primary_color = "#${config.lib.stylix.colors.base0B}" secondary_color = "#${config.lib.stylix.colors.base01}" @@ -617,7 +609,7 @@ text_color = "#${config.lib.stylix.colors.base07}" workspace_colors = [ "#${config.lib.stylix.colors.base0B}", "#${config.lib.stylix.colors.base0B}" ] specialWorkspaceColors = [ "#${config.lib.stylix.colors.base0B}", "#${config.lib.stylix.colors.base0B}" ] [appearance.menu] -opacity = ${if config.userSettings.hyprland.performanceOptimizations then "1.0" else "0.7"} +opacity = ${if performance then "1.0" else "0.7"} backdrop = 0.0 ''; home.file.".config/hypr/hypridle.conf".text = '' @@ -726,7 +718,7 @@ backdrop = 0.0 terminal = "${pkgs.alacritty}/bin/alacritty"; }; colors = { - background = config.lib.stylix.colors.base00 + "bf"; + background = config.lib.stylix.colors.base00 + (if performance then "ff" else "bf"); text = config.lib.stylix.colors.base07 + "ff"; match = config.lib.stylix.colors.base05 + "ff"; selection = config.lib.stylix.colors.base08 + "ff"; From 7ef44109c6a85ba9d5f939aed97d1ed4752501b9 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 6 Jul 2025 10:01:32 -0500 Subject: [PATCH 256/317] Updated system --- flake.lock | 124 ++++++++++++++++++++++++++--------------------------- flake.nix | 8 ++-- 2 files changed, 66 insertions(+), 66 deletions(-) diff --git a/flake.lock b/flake.lock index dcc4c2a..4c20489 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1750903025, - "narHash": "sha256-zpMyirfb+94mEVj7IUvT8iAWtg2v6uwKYXkftZfldiA=", + "lastModified": 1751727625, + "narHash": "sha256-sZa90ODMZpQvsxrMRPkj2A6FXcTpAgC7n0S9XU3+yAY=", "owner": "StevenBlack", "repo": "hosts", - "rev": "3ba25afdbea34239c4925285a2ac3379c760b181", + "rev": "1005c2bc2e8e07897ad637281fee3a5eec44df72", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1751028839, - "narHash": "sha256-FwTXzhO94urXyJz4amWiCzf0dmKbxdhqyze/qh+Od7g=", + "lastModified": 1751809349, + "narHash": "sha256-2icX6cYIUBi1eosovJjsxvIGhoqys+GDtsgkf7ATesU=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "c744288de83ee89c63ad9744f59a905b455b9017", + "rev": "c05c623bfdffb3cc617b5eba1ff99326745958ff", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1751041558, - "narHash": "sha256-uSfdzrgBAZweKqRfMcioRK1QxDz2mjc73MxVI+fbAGA=", + "lastModified": 1751792940, + "narHash": "sha256-M1shd3ifBmie78Am15hNxzrcfozdBgeJtF4QaI7JmwU=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "50a1de22af011ea05433453f29c445050c4a747c", + "rev": "9b4124ebcf6b1387e61761f5b46e940f91f18d5a", "type": "github" }, "original": { @@ -330,16 +330,16 @@ "gnome-shell": { "flake": false, "locked": { - "lastModified": 1744584021, - "narHash": "sha256-0RJ4mJzf+klKF4Fuoc8VN8dpQQtZnKksFmR2jhWE1Ew=", + "lastModified": 1748186689, + "narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=", "owner": "GNOME", "repo": "gnome-shell", - "rev": "52c517c8f6c199a1d6f5118fae500ef69ea845ae", + "rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0", "type": "github" }, "original": { "owner": "GNOME", - "ref": "48.1", + "ref": "48.2", "repo": "gnome-shell", "type": "github" } @@ -352,11 +352,11 @@ ] }, "locked": { - "lastModified": 1750798083, - "narHash": "sha256-DTCCcp6WCFaYXWKFRA6fiI2zlvOLCf5Vwx8+/0R8Wc4=", + "lastModified": 1751693185, + "narHash": "sha256-+LKghTO5wWBcR/MJAeoSarWR7c7dO6GyA8+jM8DHV08=", "owner": "nix-community", "repo": "home-manager", - "rev": "ff31a4677c1a8ae506aa7e003a3dba08cb203f82", + "rev": "36c57c6a1d03a5efbf5e23c04dbe21259d25f992", "type": "github" }, "original": { @@ -372,11 +372,11 @@ ] }, "locked": { - "lastModified": 1750973805, - "narHash": "sha256-BZXgag7I0rnL/HMHAsBz3tQrfKAibpY2vovexl2lS+Y=", + "lastModified": 1751760902, + "narHash": "sha256-qBGNn7T/zOgUDQTo/RM/D2oxMkB2x36j3ajvpVanEVs=", "owner": "nix-community", "repo": "home-manager", - "rev": "080e8b48b0318b38143d5865de9334f46d51fce3", + "rev": "8b0180dde1d6f4cf632e046309e8f963924dfbd0", "type": "github" }, "original": { @@ -394,11 +394,11 @@ ] }, "locked": { - "lastModified": 1748737919, - "narHash": "sha256-5kvBbLYdp+n7Ftanjcs6Nv+UO6sBhelp6MIGJ9nWmjQ=", + "lastModified": 1751146119, + "narHash": "sha256-gvjG95TCnUVJkvQvLMlnC4NqiqFyBdJk3o8/RwuHeaU=", "owner": "nix-community", "repo": "home-manager", - "rev": "5675a9686851d9626560052a032c4e14e533c1fa", + "rev": "76d0c31fce2aa0c71409de953e2f9113acd5b656", "type": "github" }, "original": { @@ -481,11 +481,11 @@ ] }, "locked": { - "lastModified": 1749145600, - "narHash": "sha256-v2kY5RDk9oyo1x9m8u83GdklC96xlJ7ka1rrvZoYL78=", + "lastModified": 1750621377, + "narHash": "sha256-8u6b5oAdX0rCuoR8wFenajBRmI+mzbpNig6hSCuWUzE=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "80b754e38e836777ad3a9d5d1ffc3491b0332471", + "rev": "b3d628d01693fb9bb0a6690cd4e7b80abda04310", "type": "github" }, "original": { @@ -664,11 +664,11 @@ ] }, "locked": { - "lastModified": 1749145882, - "narHash": "sha256-qr0KXeczF8Sma3Ae7+dR2NHhvG7YeLBJv19W4oMu6ZE=", + "lastModified": 1750371198, + "narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676", + "rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b", "type": "github" }, "original": { @@ -689,11 +689,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1750923325, - "narHash": "sha256-bIQTzgT0JD/jVEDZJCyWayOAnkCeUQ83CvOU26/2Y/8=", + "lastModified": 1751139849, + "narHash": "sha256-S4WaVk8tR6svR+L8y4VUjFPSYhsUvA9Oc6zYYELTPY0=", "ref": "refs/heads/main", - "rev": "7999f448d71f673dc83c372f338ae7db8e290d7a", - "revCount": 374, + "rev": "fee04f640676868fe343bd3ffd0b81b22bd032ee", + "revCount": 376, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -739,11 +739,11 @@ ] }, "locked": { - "lastModified": 1749135356, - "narHash": "sha256-Q8mAKMDsFbCEuq7zoSlcTuxgbIBVhfIYpX0RjE32PS0=", + "lastModified": 1751061882, + "narHash": "sha256-g9n8Vrbx+2JYM170P9BbvGHN39Wlkr4U+V2WLHQsXL8=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "e36db00dfb3a3d3fdcc4069cb292ff60d2699ccb", + "rev": "4737241eaf8a1e51671a2a088518071f9a265cf4", "type": "github" }, "original": { @@ -789,11 +789,11 @@ ] }, "locked": { - "lastModified": 1749145760, - "narHash": "sha256-IHaGWpGrv7seFWdw/1A+wHtTsPlOGIKMrk1TUIYJEFI=", + "lastModified": 1750371869, + "narHash": "sha256-lGk4gLjgZQ/rndUkzmPYcgbHr8gKU5u71vyrjnwfpB4=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "817918315ea016cc2d94004bfb3223b5fd9dfcc6", + "rev": "aa38edd6e3e277ae6a97ea83a69261a5c3aab9fd", "type": "github" }, "original": { @@ -811,11 +811,11 @@ ] }, "locked": { - "lastModified": 1750403547, - "narHash": "sha256-XDDINMbHTtKQeSRpX5mwq20z23Wg/I/G4JUinA3V8Xg=", + "lastModified": 1751529406, + "narHash": "sha256-jwKDHyUycp678zDYa5Hyfq3msO73YMXdZPxp96dU7po=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "52b86b86d925ec00c836ecc6d36f9c947bb15736", + "rev": "b2e5ce654e4f5bf8905c2e07a96dcf4966e6277d", "type": "github" }, "original": { @@ -849,11 +849,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1750776420, - "narHash": "sha256-/CG+w0o0oJ5itVklOoLbdn2dGB0wbZVOoDm4np6w09A=", + "lastModified": 1751637120, + "narHash": "sha256-xVNy/XopSfIG9c46nRmPaKfH1Gn/56vQ8++xWA8itO4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30a61f056ac492e3b7cdcb69c1e6abdcf00e39cf", + "rev": "5c724ed1388e53cc231ed98330a60eb2f7be4be3", "type": "github" }, "original": { @@ -865,11 +865,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1750646418, - "narHash": "sha256-4UAN+W0Lp4xnUiHYXUXAPX18t+bn6c4Btry2RqM9JHY=", + "lastModified": 1751274312, + "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1f426f65ac4e6bf808923eb6f8b8c2bfba3d18c5", + "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", "type": "github" }, "original": { @@ -881,11 +881,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1750646418, - "narHash": "sha256-4UAN+W0Lp4xnUiHYXUXAPX18t+bn6c4Btry2RqM9JHY=", + "lastModified": 1751274312, + "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1f426f65ac4e6bf808923eb6f8b8c2bfba3d18c5", + "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", "type": "github" }, "original": { @@ -896,11 +896,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1750776420, - "narHash": "sha256-/CG+w0o0oJ5itVklOoLbdn2dGB0wbZVOoDm4np6w09A=", + "lastModified": 1751637120, + "narHash": "sha256-xVNy/XopSfIG9c46nRmPaKfH1Gn/56vQ8++xWA8itO4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30a61f056ac492e3b7cdcb69c1e6abdcf00e39cf", + "rev": "5c724ed1388e53cc231ed98330a60eb2f7be4be3", "type": "github" }, "original": { @@ -1037,11 +1037,11 @@ ] }, "locked": { - "lastModified": 1750905536, - "narHash": "sha256-Mo7yXM5IvMGNvJPiNkFsVT2UERmnvjsKgnY6UyDdySQ=", + "lastModified": 1751683029, + "narHash": "sha256-dYO5X5jK8bpQOeRAo8R5aUt6M/+Ji1cZgstZI7SQ2IA=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "2fa7c0aabd15fa0ccc1dc7e675a4fcf0272ad9a1", + "rev": "9e5e62a33a929a67a5427fb7324a6f583dced0b2", "type": "github" }, "original": { @@ -1055,11 +1055,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1750991972, - "narHash": "sha256-jzadGZL1MtqmHb5AZcjZhHpNulOdMZPxf8Wifg8e5VA=", + "lastModified": 1751769931, + "narHash": "sha256-QR2Rp/41NkA5YxcpvZEKD1S2QE1Pb9U415aK8M/4tJc=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "b6509555d8ffaa0727f998af6ace901c5b78dc26", + "rev": "3ac4f630e375177ea8317e22f5c804156de177e8", "type": "github" }, "original": { @@ -1110,11 +1110,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1750950678, - "narHash": "sha256-ZNSjRDpaR/sAtrZNPO6RpGkHKdMb1oc1lkQN+6ZBvyU=", + "lastModified": 1751769163, + "narHash": "sha256-5/fDueotC2qqa5r+1UbOO1p6g1FUhVVb5cR5TwweF4c=", "owner": "danth", "repo": "stylix", - "rev": "c700d41bb8ee32baed490c8128c1077b2b27183b", + "rev": "50ed5ddd1072a6b10e6368cc338d759ffa02df9b", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 724043e..878b92c 100644 --- a/flake.nix +++ b/flake.nix @@ -11,10 +11,10 @@ name = "nixpkgs-patched"; src = inputs.nixpkgs; patches = [ - (builtins.fetchurl { - url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/419713.patch"; - sha256 = "sha256:0i9kij1vgv4x3bgnydlzn76pbjx6s8fvxm1agjs100ry931jizyv"; - }) + #(builtins.fetchurl { + # url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/419713.patch"; + # sha256 = "sha256:0i9kij1vgv4x3bgnydlzn76pbjx6s8fvxm1agjs100ry931jizyv"; + #}) ]; }; From 086eb08ae69495778407434223a570772675f72b Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 13 Jul 2025 20:04:20 -0500 Subject: [PATCH 257/317] moved undervolt to hardware config --- hosts/duskfall/configuration.nix | 8 -------- hosts/duskfall/hardware-configuration.nix | 8 ++++++++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index 8d13bee..01ebe2b 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -62,14 +62,6 @@ services.xserver.wacom.enable = true; services.xserver.videoDrivers = [ "i915" ]; - services.undervolt = { - enable = true; - coreOffset = -100; - uncoreOffset = -100; - analogioOffset = -100; - gpuOffset = -100; - }; - }; } diff --git a/hosts/duskfall/hardware-configuration.nix b/hosts/duskfall/hardware-configuration.nix index 16ec566..fb0ddf8 100644 --- a/hosts/duskfall/hardware-configuration.nix +++ b/hosts/duskfall/hardware-configuration.nix @@ -12,6 +12,14 @@ services.xserver.videoDrivers = lib.mkDefault [ "modesetting" ]; + services.undervolt = { + enable = true; + coreOffset = -100; + uncoreOffset = -100; + analogioOffset = -100; + gpuOffset = -100; + }; + hardware.graphics = { enable = lib.mkDefault true; enable32Bit = lib.mkDefault true; From 0558047a7b9cbc1fd0f34fe7f6b4c3e11b92225c Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 13 Jul 2025 20:05:32 -0500 Subject: [PATCH 258/317] switching some default apps --- hosts/duskfall/home.nix | 4 +--- hosts/snowfire/home.nix | 4 +--- hosts/zenith/home.nix | 4 +--- modules/user/shell/default.nix | 1 + 4 files changed, 4 insertions(+), 9 deletions(-) diff --git a/hosts/duskfall/home.nix b/hosts/duskfall/home.nix index 80e9780..06af00a 100644 --- a/hosts/duskfall/home.nix +++ b/hosts/duskfall/home.nix @@ -13,10 +13,8 @@ xdg.enable = true; # programs - browser = "qutebrowser"; - brave.enable = true; + browser = "brave"; editor = "emacs"; - ranger.enable = true; yazi.enable = true; git.enable = true; engineering.enable = true; diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index 933585c..e43ef46 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -13,11 +13,9 @@ xdg.enable = true; # programs - browser = "qutebrowser"; - brave.enable = true; + browser = "brave"; editor = "emacs"; vscodium.enable = true; - ranger.enable = true; yazi.enable = true; git.enable = true; engineering.enable = true; diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 930e9bb..a7c9225 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -12,11 +12,9 @@ xdg.enable = true; # programs - browser = "qutebrowser"; - brave.enable = true; + browser = "brave"; editor = "emacs"; vscodium.enable = true; - ranger.enable = true; yazi.enable = true; git.enable = true; engineering.enable = true; diff --git a/modules/user/shell/default.nix b/modules/user/shell/default.nix index 3f56dff..d526ad6 100644 --- a/modules/user/shell/default.nix +++ b/modules/user/shell/default.nix @@ -29,6 +29,7 @@ in { ]; shellAliases = { phoenix = "sudo phoenix"; + ranger = "yazi"; ls = "eza --icons -l -T -L=1"; cat = "bat"; htop = "btm"; From a98207c56add9405303aafbf2dbd86e8664ab017 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 13 Jul 2025 20:05:45 -0500 Subject: [PATCH 259/317] some emacs fixes --- modules/user/emacs/init.el | 15 ++++++++++++--- .../user/emacs/lib/line-wrapping-and-numbers.el | 8 ++++---- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 5ed6bb5..b1fd139 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -35,6 +35,9 @@ ;; I want declarative config, no custom (setq custom-file "/dev/null") + + ;; Auto save errors are annoying + (setq auto-save-default nil) ;; Disable the menu bar (menu-bar-mode -1) @@ -75,7 +78,7 @@ (36 . ".\\(?:>\\)") (37 . ".\\(?:\\(?:%%\\)\\|%\\)") (38 . ".\\(?:\\(?:&&\\)\\|&\\)") - (42 . ".\\(?:\\(?:\\*\\*/\\)\\|\\(?:\\*[*/]\\)\\|[*/>]\\)") + ;;(42 . ".\\(?:\\(?:\\*\\*/\\)\\|\\(?:\\*[*/]\\)\\|[*/>]\\)") (43 . ".\\(?:\\(?:\\+\\+\\)\\|[+>]\\)") (45 . ".\\(?:\\(?:-[>-]\\|<<\\|>>\\)\\|[<>}~-]\\)") (46 . ".\\(?:\\(?:\\.[.<]\\)\\|[.=-]\\)") @@ -320,13 +323,15 @@ (global-flycheck-mode)) (use-package treemacs + :after (evil) :config (defun treemacs-display-current-project-exclusively-silently () + (interactive) "Display current project exclusively in treemacs without switching to treemacs buffer." (let ((buffer (current-buffer))) (treemacs-add-and-display-current-project-exclusively) (switch-to-buffer buffer))) - (add-hook 'projectile-after-switch-project-hook 'treemacs-display-current-project-exclusively-silently)) + (evil-define-key 'normal 'global (kbd "ot") 'treemacs-add-and-display-current-project-exclusively)) (use-package treemacs-evil :after (treemacs)) @@ -341,11 +346,15 @@ '((gdscript-mode . gdscript-ts-mode))) :hook (lsp-mode . evil-normalize-keymaps) + (nix-mode . lsp-deferred) (gdscript-mode . lsp-deferred) (gdscript-ts-mode . lsp-deferred)) (use-package lsp-ui :commands lsp-ui-mode) -(use-package lsp-treemacs :commands lsp-treemacs-errors-list) +(use-package lsp-treemacs + :after (evil) + :config + (evil-define-key 'normal 'global (kbd "os") 'lsp-treemacs-symbols)) (use-package treesit :config diff --git a/modules/user/emacs/lib/line-wrapping-and-numbers.el b/modules/user/emacs/lib/line-wrapping-and-numbers.el index cc85951..feb5617 100644 --- a/modules/user/emacs/lib/line-wrapping-and-numbers.el +++ b/modules/user/emacs/lib/line-wrapping-and-numbers.el @@ -27,13 +27,13 @@ "Disable `visual-line-mode` in current buffer." (interactive) (visual-line-mode 0)) -(add-hook 'org-mode-hook 'truncate-lines-off) -(add-hook 'markdown-mode-hook 'truncate-lines-off) +(add-hook 'org-mode-hook 'truncate-lines-on) +(add-hook 'markdown-mode-hook 'truncate-lines-on) (add-hook 'org-mode-hook 'visual-line-mode) (add-hook 'markdown-mode-hook 'visual-line-mode) -(add-hook 'prog-mode-hook 'truncate-lines-on) +(add-hook 'prog-mode-hook 'truncate-lines-off) (add-hook 'prog-mode-hook 'visual-line-mode-off) -(add-hook 'nix-mode-hook 'truncate-lines-on) +(add-hook 'nix-mode-hook 'truncate-lines-off) (add-hook 'nix-mode-hook 'visual-line-mode-off) (defun apply-proper-line-wrapping () "Apply proper line wrapping and visual line mode settings according to whether or not the current mode derives from `prog-mode`." From 0bdff9aa7f9c67308b6f7497a6b17f59c289875f Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 13 Jul 2025 20:05:51 -0500 Subject: [PATCH 260/317] these are helpful for some art --- modules/user/art/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/user/art/default.nix b/modules/user/art/default.nix index 89f2218..b1b8f2c 100644 --- a/modules/user/art/default.nix +++ b/modules/user/art/default.nix @@ -16,6 +16,8 @@ in { inkscape libresprite upscayl + google-fonts + fontforge-gtk ]; userSettings.blender.enable = true; xdg.mimeApps.defaultApplications = lib.mkForce { From 99b33cb6315227d3c7f90bfb2b6be6862ef0d442 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 13 Jul 2025 20:05:58 -0500 Subject: [PATCH 261/317] git lfs is cool --- modules/user/git/git.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/user/git/git.nix b/modules/user/git/git.nix index 58ce7a1..e646b21 100644 --- a/modules/user/git/git.nix +++ b/modules/user/git/git.nix @@ -20,5 +20,6 @@ in { osConfig.systemSettings.secretsFlakeDir (config.home.homeDirectory + "/.cache/nix/tarball-cache") ]; }; + programs.git.lfs.enable = true; }; } From 6eacf793e96a154aa19e942e770df2387ba763b7 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 13 Jul 2025 20:06:03 -0500 Subject: [PATCH 262/317] Updated system --- flake.lock | 222 ++++++++++++++--------------------------------------- 1 file changed, 56 insertions(+), 166 deletions(-) diff --git a/flake.lock b/flake.lock index 4c20489..3894577 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1751727625, - "narHash": "sha256-sZa90ODMZpQvsxrMRPkj2A6FXcTpAgC7n0S9XU3+yAY=", + "lastModified": 1752255348, + "narHash": "sha256-eDKP15xvd/SHZd4i2EorRZkS7ih5d8YNvCJQsRQeMYs=", "owner": "StevenBlack", "repo": "hosts", - "rev": "1005c2bc2e8e07897ad637281fee3a5eec44df72", + "rev": "d4d4469162be80797d723be7bcfce28650cc7180", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1751809349, - "narHash": "sha256-2icX6cYIUBi1eosovJjsxvIGhoqys+GDtsgkf7ATesU=", + "lastModified": 1752327661, + "narHash": "sha256-aV5jry8kH3iRJJpm2NW5LRxP7MGo8/NyKn/l0/GunMg=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "c05c623bfdffb3cc617b5eba1ff99326745958ff", + "rev": "90a76faa626a45da534e1c1530dce245d6782a29", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1751792940, - "narHash": "sha256-M1shd3ifBmie78Am15hNxzrcfozdBgeJtF4QaI7JmwU=", + "lastModified": 1752340167, + "narHash": "sha256-7DAefKuQF6G8IxfWrrdnPGxquSGqCgQpu5wEOigi07g=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "9b4124ebcf6b1387e61761f5b46e940f91f18d5a", + "rev": "8bf19581d2e547159929f1340ed5b65d7b6bce4e", "type": "github" }, "original": { @@ -191,21 +191,6 @@ "type": "github" } }, - "flake-compat_2": { - "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -214,11 +199,11 @@ ] }, "locked": { - "lastModified": 1743550720, - "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", + "lastModified": 1751413152, + "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "c621e8422220273271f52058f618c94e405bb0f5", + "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", "type": "github" }, "original": { @@ -257,32 +242,6 @@ "type": "github" } }, - "git-hooks": { - "inputs": { - "flake-compat": [ - "stylix", - "flake-compat" - ], - "gitignore": "gitignore_2", - "nixpkgs": [ - "stylix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1747372754, - "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, "gitignore": { "inputs": { "nixpkgs": [ @@ -305,28 +264,6 @@ "type": "github" } }, - "gitignore_2": { - "inputs": { - "nixpkgs": [ - "stylix", - "git-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, "gnome-shell": { "flake": false, "locked": { @@ -352,11 +289,11 @@ ] }, "locked": { - "lastModified": 1751693185, - "narHash": "sha256-+LKghTO5wWBcR/MJAeoSarWR7c7dO6GyA8+jM8DHV08=", + "lastModified": 1752202894, + "narHash": "sha256-knafgng4gCjZIUMyAEWjxxdols6n/swkYnbWr+oF+1w=", "owner": "nix-community", "repo": "home-manager", - "rev": "36c57c6a1d03a5efbf5e23c04dbe21259d25f992", + "rev": "fab659b346c0d4252208434c3c4b3983a4b38fec", "type": "github" }, "original": { @@ -372,11 +309,11 @@ ] }, "locked": { - "lastModified": 1751760902, - "narHash": "sha256-qBGNn7T/zOgUDQTo/RM/D2oxMkB2x36j3ajvpVanEVs=", + "lastModified": 1752338520, + "narHash": "sha256-O1p5BwTwAqZ6sDrCxCxlZFaP/Jx4t1W8+ms9USyEcPQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "8b0180dde1d6f4cf632e046309e8f963924dfbd0", + "rev": "ae62fd8ad8347e6bb5b615057f39f33d595a1c47", "type": "github" }, "original": { @@ -386,27 +323,6 @@ "type": "github" } }, - "home-manager_3": { - "inputs": { - "nixpkgs": [ - "stylix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1751146119, - "narHash": "sha256-gvjG95TCnUVJkvQvLMlnC4NqiqFyBdJk3o8/RwuHeaU=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "76d0c31fce2aa0c71409de953e2f9113acd5b656", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, "hyprcursor": { "inputs": { "hyprlang": [ @@ -689,11 +605,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1751139849, - "narHash": "sha256-S4WaVk8tR6svR+L8y4VUjFPSYhsUvA9Oc6zYYELTPY0=", + "lastModified": 1752218742, + "narHash": "sha256-GTJDHmzaeNlsUU0P03q0zHLfOAGtGQCf/oYn2SRPWKE=", "ref": "refs/heads/main", - "rev": "fee04f640676868fe343bd3ffd0b81b22bd032ee", - "revCount": 376, + "rev": "17fefce86e6e857783aef38257af7a18be76323a", + "revCount": 378, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -811,11 +727,11 @@ ] }, "locked": { - "lastModified": 1751529406, - "narHash": "sha256-jwKDHyUycp678zDYa5Hyfq3msO73YMXdZPxp96dU7po=", + "lastModified": 1752218319, + "narHash": "sha256-fEvLVaVduwVotOib8NqO0e4N3dMsdA04Jlfm2sZQH5Q=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "b2e5ce654e4f5bf8905c2e07a96dcf4966e6277d", + "rev": "d5da490d8c2553fc8d589b49f9c036973b9656a1", "type": "github" }, "original": { @@ -849,11 +765,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751637120, - "narHash": "sha256-xVNy/XopSfIG9c46nRmPaKfH1Gn/56vQ8++xWA8itO4=", + "lastModified": 1751984180, + "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5c724ed1388e53cc231ed98330a60eb2f7be4be3", + "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", "type": "github" }, "original": { @@ -896,11 +812,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1751637120, - "narHash": "sha256-xVNy/XopSfIG9c46nRmPaKfH1Gn/56vQ8++xWA8itO4=", + "lastModified": 1751984180, + "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5c724ed1388e53cc231ed98330a60eb2f7be4be3", + "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", "type": "github" }, "original": { @@ -927,11 +843,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1748460289, - "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "lastModified": 1751792365, + "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", + "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", "type": "github" }, "original": { @@ -950,15 +866,14 @@ "nixpkgs": [ "stylix", "nixpkgs" - ], - "treefmt-nix": "treefmt-nix" + ] }, "locked": { - "lastModified": 1748730660, - "narHash": "sha256-5LKmRYKdPuhm8j5GFe3AfrJL8dd8o57BQ34AGjJl1R0=", + "lastModified": 1751906969, + "narHash": "sha256-BSQAOdPnzdpOuCdAGSJmefSDlqmStFNScEnrWzSqKPw=", "owner": "nix-community", "repo": "NUR", - "rev": "2c0bc52fe14681e9ef60e3553888c4f086e46ecb", + "rev": "ddb679f4131e819efe3bbc6457ba19d7ad116f25", "type": "github" }, "original": { @@ -1037,11 +952,11 @@ ] }, "locked": { - "lastModified": 1751683029, - "narHash": "sha256-dYO5X5jK8bpQOeRAo8R5aUt6M/+Ji1cZgstZI7SQ2IA=", + "lastModified": 1752201818, + "narHash": "sha256-d8KczaVT8WFEZdWg//tMAbv8EDyn2YTWcJvSY8gqKBU=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "9e5e62a33a929a67a5427fb7324a6f583dced0b2", + "rev": "bd8f8329780b348fedcd37b53dbbee48c08c496d", "type": "github" }, "original": { @@ -1055,11 +970,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1751769931, - "narHash": "sha256-QR2Rp/41NkA5YxcpvZEKD1S2QE1Pb9U415aK8M/4tJc=", + "lastModified": 1752288212, + "narHash": "sha256-f2PMqtf61mWAM11QoIfGv3hjD2AsJrij4FCzftepuaE=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "3ac4f630e375177ea8317e22f5c804156de177e8", + "rev": "678296525a4cce249c608749b171d0b2ceb8b2ff", "type": "github" }, "original": { @@ -1095,11 +1010,8 @@ "base16-helix": "base16-helix", "base16-vim": "base16-vim", "firefox-gnome-theme": "firefox-gnome-theme", - "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", - "git-hooks": "git-hooks", "gnome-shell": "gnome-shell", - "home-manager": "home-manager_3", "nixpkgs": "nixpkgs_4", "nur": "nur", "systems": "systems_3", @@ -1110,11 +1022,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1751769163, - "narHash": "sha256-5/fDueotC2qqa5r+1UbOO1p6g1FUhVVb5cR5TwweF4c=", + "lastModified": 1752250117, + "narHash": "sha256-zCPV1a8w9hRn5ukOQwaAggA3X5cMmVsZVBYo8wLfLuU=", "owner": "danth", "repo": "stylix", - "rev": "50ed5ddd1072a6b10e6368cc338d759ffa02df9b", + "rev": "0da583a359fd911d5cbfd2c789424b888b777a4b", "type": "github" }, "original": { @@ -1204,11 +1116,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1748180480, - "narHash": "sha256-7n0XiZiEHl2zRhDwZd/g+p38xwEoWtT0/aESwTMXWG4=", + "lastModified": 1750770351, + "narHash": "sha256-LI+BnRoFNRa2ffbe3dcuIRYAUcGklBx0+EcFxlHj0SY=", "owner": "tinted-theming", "repo": "schemes", - "rev": "87d652edd26f5c0c99deda5ae13dfb8ece2ffe31", + "rev": "5a775c6ffd6e6125947b393872cde95867d85a2a", "type": "github" }, "original": { @@ -1220,11 +1132,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1748740859, - "narHash": "sha256-OEM12bg7F4N5WjZOcV7FHJbqRI6jtCqL6u8FtPrlZz4=", + "lastModified": 1751159871, + "narHash": "sha256-UOHBN1fgHIEzvPmdNMHaDvdRMgLmEJh2hNmDrp3d3LE=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "57d5f9683ff9a3b590643beeaf0364da819aedda", + "rev": "bded5e24407cec9d01bd47a317d15b9223a1546c", "type": "github" }, "original": { @@ -1236,11 +1148,11 @@ "tinted-zed": { "flake": false, "locked": { - "lastModified": 1725758778, - "narHash": "sha256-8P1b6mJWyYcu36WRlSVbuj575QWIFZALZMTg5ID/sM4=", + "lastModified": 1751158968, + "narHash": "sha256-ksOyv7D3SRRtebpXxgpG4TK8gZSKFc4TIZpR+C98jX8=", "owner": "tinted-theming", "repo": "base16-zed", - "rev": "122c9e5c0e6f27211361a04fae92df97940eccf9", + "rev": "86a470d94204f7652b906ab0d378e4231a5b3384", "type": "github" }, "original": { @@ -1249,28 +1161,6 @@ "type": "github" } }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "stylix", - "nur", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1733222881, - "narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "49717b5af6f80172275d47a418c9719a31a78b53", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, "xdph": { "inputs": { "hyprland-protocols": [ From 6b07446f4a3a1fe5743353e35047d40d16385361 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 15 Jul 2025 12:52:16 -0500 Subject: [PATCH 263/317] Cleanup old files --- modules/user/hyprland/eww/eww.scss.mustache | 78 --------------------- modules/user/hyprland/eww/eww.yuck | 72 ------------------- 2 files changed, 150 deletions(-) delete mode 100644 modules/user/hyprland/eww/eww.scss.mustache delete mode 100644 modules/user/hyprland/eww/eww.yuck diff --git a/modules/user/hyprland/eww/eww.scss.mustache b/modules/user/hyprland/eww/eww.scss.mustache deleted file mode 100644 index e00e0ba..0000000 --- a/modules/user/hyprland/eww/eww.scss.mustache +++ /dev/null @@ -1,78 +0,0 @@ -.bar { - border-radius: 10px; - background: rgba({{base00-rgb-r}},{{base00-rgb-g}},{{base00-rgb-b}},0.35); - font-size: 18px; -} - -.button { - background: rgba(0,0,0,0.0); -} - -.active-workspace { - color: #{{base07-hex}}; - background: rgba(0,0,0,0.0); - margin-right: -30px; - margin-left: -30px; -} - -.inactive-workspace { - color: #{{base03-hex}}; - background: rgba(0,0,0,0.0); -} - -.inactive-workspace:hover { - color: #{{base0A-hex}}; -} - -.calendar_window { - background: rgba({{base01-rgb-r}},{{base01-rgb-g}},{{base01-rgb-b}},0.65); - font-size: 1.2em; - padding: 12px; - border-radius: 10px; - border-width: 0px; -} - -.calendar_window:selected { - background: #{{base08-hex}}; -} - -.calendar_window.header { - background: rgba(0,0,0,0.0); -} - -.time-box { - background: rgba(0,0,0,0.0); - margin-right: 5px; -} - -.time-box:hover { -} - -progressbar trough { - min-width: 30px; - background: #{{base05-hex}}; -} - -progressbar trough progress { - background: #{{base07-hex}}; -} - -.battery-text-normal { - color: #{{base07-hex}}; - font-size: 10px; -} - -.battery-text-danger { - color: #{{base08-hex}}; - font-size: 10px; -} - -.battery-icon-normal { - color: #{{base07-hex}}; - font-size: 20px; -} - -.battery-icon-danger { - color: #{{base08-hex}}; - font-size: 20px; -} diff --git a/modules/user/hyprland/eww/eww.yuck b/modules/user/hyprland/eww/eww.yuck deleted file mode 100644 index 0e1c67e..0000000 --- a/modules/user/hyprland/eww/eww.yuck +++ /dev/null @@ -1,72 +0,0 @@ -(defwindow bar [?monitor] - :monitor monitor - :geometry (geometry :x "0%" - :y "1%" - :width "99%" - :height "30px" - :anchor "top center") - :stacking "fg" - :reserve (struts :distance "5px" :side "top") - :windowtype "dock" - :wm-ignore false - :exclusive true - (bar-widget :monitor monitor)) - -(defvar workspaces "[1, 2, 3, 4, 5, 6, 7, 8, 9]") -(defvar workspacesreplace "[\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\"]") -(defpoll workspaces-monitor-0 :interval "1s" "workspace-on-monitor 0") -(defpoll workspaces-monitor-1 :interval "1s" "workspace-on-monitor 1") -(defpoll workspaces-monitor-2 :interval "1s" "workspace-on-monitor 2") -(defvar maxbattery 80) -(defvar batteryicons "[\"\", \"\", \"\", \"\", \"\"]") - -(defwidget bar-widget [?monitor] - (box :halign "expand" - (box :orientation "horizontal" - :halign "start" - :class "center-box" - (box :orientation "horizontal" - :spacing "10" - :halign "center" - :valign "center" - (label :text "") - (label :halign "center" :valign "center" :text {EWW_BATTERY.total_avg / maxbattery > 0.8 ? batteryicons[4] : EWW_BATTERY.total_avg / maxbattery > 0.6 ? batteryicons[3] : EWW_BATTERY.total_avg / maxbattery > 0.4 ? batteryicons[2] : EWW_BATTERY.total_avg / maxbattery > 0.2 ? batteryicons[1] : batteryicons[0]} :class {EWW_BATTERY.total_avg / maxbattery > 0.2 ? "battery-icon-normal" : "battery-icon-danger"}) - (label :halign "center" :valign "center" :text "${round(EWW_BATTERY.total_avg,0)}%" :class {EWW_BATTERY.total_avg / maxbattery > 0.2 ? "battery-text-normal" : "battery-text-danger"}) - ) - ) - (box :orientation "horizontal" - :spacing "-8" - :halign "center" - :class "center-box" - (for workspace in workspaces - (box :orientation "horizontal" - :halign "center" - :class "center-box" - (button :class { - monitor == 0 ? workspace == workspaces-monitor-0 ? "active-workspace" : "inactive-workspace" : - monitor == 1 ? workspace == workspaces-monitor-1 ? "active-workspace" : "inactive-workspace" : monitor == 2 ? workspace == workspaces-monitor-2 ? "active-workspace" : "inactive-workspace" : "inactive-workspace"} :onclick "hyprctl dispatch focusworkspaceoncurrentmonitor ${workspace}" {workspacesreplace[workspace - 1]}) - ))) - (box :orientation "horizontal" - :halign "end" - :class "center-box" - :spacing "5" - (button :onclick "eww open --toggle calendar_window --arg monitor=${monitor}" :class "time-box" :halign "end" time) - (systray :class "time-box" :icon-size "20" :spacing "2" :halign "end") - ))) - -(defvar time-visible false) -(defpoll time :interval "1s" - :initial "initial-value" - :run-while time-visible - `date +%H:%M:%S`) - -(defwindow calendar_window [?monitor] - :monitor monitor - :geometry (geometry :width "500px" :height "500px" :x "1410" :y "1%") - :stacking "overlay" - :focusable false - :hexpand true - :vexpand true - :namespace "eww" - (calendar :show-details true)) - From f86049f25937bcef1cd4d1f222c6cc808533d4b3 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 15 Jul 2025 12:52:25 -0500 Subject: [PATCH 264/317] Grayscale improves focus? --- modules/user/hyprland/default.nix | 60 +++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index f47ee82..6ce1357 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -516,6 +516,7 @@ in qt6.qtwayland xdg-utils wlsunset + hyprshade pavucontrol (pkgs.writeScriptBin "workspace-on-monitor" '' #!/bin/sh @@ -547,6 +548,10 @@ in killall wlsunset &> /dev/null; fi '') + (pkgs.writeScriptBin "scg" '' + #!/bin/sh + hyprshade toggle grayscale; + '') (pkgs.writeScriptBin "obs-notification-mute-daemon" '' #!/bin/sh while true; do @@ -565,6 +570,61 @@ in then echo "Shouldn't suspend"; sleep 10; else echo "Should suspend"; systemctl suspend; fi '') ]); + home.file.".config/hypr/shaders/grayscale.glsl".text = '' + /* + * Grayscale + */ + + precision highp float; + varying vec2 v_texcoord; + uniform sampler2D tex; + + // Enum for type of grayscale conversion + const int LUMINOSITY = 0; + const int LIGHTNESS = 1; + const int AVERAGE = 2; + + /** + * Type of grayscale conversion. + */ + const int Type = LUMINOSITY; + + // Enum for selecting luma coefficients + const int PAL = 0; + const int HDTV = 1; + const int HDR = 2; + + /** + * Formula used to calculate relative luminance. + * (Only applies to type = "luminosity".) + */ + const int LuminosityType = HDR; + + void main() { + vec4 pixColor = texture2D(tex, v_texcoord); + + float gray; + if (Type == LUMINOSITY) { + // https://en.wikipedia.org/wiki/Grayscale#Luma_coding_in_video_systems + if (LuminosityType == PAL) { + gray = dot(pixColor.rgb, vec3(0.299, 0.587, 0.114)); + } else if (LuminosityType == HDTV) { + gray = dot(pixColor.rgb, vec3(0.2126, 0.7152, 0.0722)); + } else if (LuminosityType == HDR) { + gray = dot(pixColor.rgb, vec3(0.2627, 0.6780, 0.0593)); + } + } else if (Type == LIGHTNESS) { + float maxPixColor = max(pixColor.r, max(pixColor.g, pixColor.b)); + float minPixColor = min(pixColor.r, min(pixColor.g, pixColor.b)); + gray = (maxPixColor + minPixColor) / 2.0; + } else if (Type == AVERAGE) { + gray = (pixColor.r + pixColor.g + pixColor.b) / 3.0; + } + vec3 grayscale = vec3(gray); + + gl_FragColor = vec4(grayscale, pixColor.a); + } + ''; home.file.".config/ashell/config.toml".text = '' outputs = "All" position = "Top" From dafd115747295a291b05e197673732de1f95cbce Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 18 Jul 2025 09:44:48 -0500 Subject: [PATCH 265/317] Messing around with ai is fun! --- hosts/snowfire/home.nix | 1 + modules/user/localai/default.nix | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 modules/user/localai/default.nix diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index e43ef46..a281edc 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -18,6 +18,7 @@ vscodium.enable = true; yazi.enable = true; git.enable = true; + ai.enable = true; engineering.enable = true; art.enable = true; flatpak.enable = false; diff --git a/modules/user/localai/default.nix b/modules/user/localai/default.nix new file mode 100644 index 0000000..7776ecf --- /dev/null +++ b/modules/user/localai/default.nix @@ -0,0 +1,15 @@ +{ config, lib, pkgs, ...}: + +let + cfg = config.userSettings.ai; +in { + options = { + userSettings.ai = { + enable = lib.mkEnableOption "Enable localai"; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ pkgs.local-ai ]; + }; +} From d35760e4dcb6ad032399e6f973ff047ccf24b6e1 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 18 Jul 2025 09:45:37 -0500 Subject: [PATCH 266/317] Gonna try making materials --- modules/user/art/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/user/art/default.nix b/modules/user/art/default.nix index b1b8f2c..a667e6d 100644 --- a/modules/user/art/default.nix +++ b/modules/user/art/default.nix @@ -16,6 +16,7 @@ in { inkscape libresprite upscayl + material-maker google-fonts fontforge-gtk ]; From 0893a4e483c1ba82d0443b2692bd5aba51f68c52 Mon Sep 17 00:00:00 2001 From: Emmet Date: Fri, 18 Jul 2025 09:46:13 -0500 Subject: [PATCH 267/317] Make git easier --- modules/user/git/git.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/user/git/git.nix b/modules/user/git/git.nix index e646b21..890b0c8 100644 --- a/modules/user/git/git.nix +++ b/modules/user/git/git.nix @@ -10,7 +10,7 @@ in { }; config = lib.mkIf cfg.enable { - home.packages = [ pkgs.git ]; + home.packages = [ pkgs.git pkgs.openssh ]; programs.git.enable = true; programs.git.userName = config.userSettings.name; programs.git.userEmail = config.userSettings.email; @@ -21,5 +21,6 @@ in { (config.home.homeDirectory + "/.cache/nix/tarball-cache") ]; }; programs.git.lfs.enable = true; + services.ssh-agent.enable = true; }; } From 4e4ba6a0a3dafaa3b934aa55e3cdc6f215d085d4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 21 Jul 2025 22:10:59 -0500 Subject: [PATCH 268/317] (Finally) Fixed problems with line wrapping and lsp! --- modules/user/emacs/default.nix | 3 +- modules/user/emacs/init.el | 18 ++++++-- .../emacs/lib/line-wrapping-and-numbers.el | 44 ++++++++----------- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index a989748..f7d0d9d 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -71,6 +71,7 @@ in { nil ]; home.file.".config/emacs/init.el".source = ./init.el; + home.file.".config/emacs/lib".source = ./lib; home.file.".config/emacs/themes/doom-stylix-theme.el".source = config.lib.stylix.colors { template = builtins.readFile ./lib/doom-stylix-theme.el.mustache; extension = ".el"; @@ -89,7 +90,7 @@ in { (setq systemOpacity ${builtins.toString config.userSettings.emacs.opacity}) ;;; sysvars.el ends here -''; + ''; wayland.windowManager.hyprland.settings.exec-once = lib.optionals config.wayland.windowManager.hyprland.enable [ "emacs --daemon" ]; }; } diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index b1fd139..30e711c 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -27,6 +27,10 @@ :config ;; No startup screen (setq inhibit-startup-message t) + + ;; Truncate lines is annoying + (setq truncate-lines nil) + (setq truncate-partial-width-windows nil) ;; Transparent background (set-frame-parameter nil 'alpha-background systemOpacity) @@ -141,8 +145,8 @@ ;; Packages (use-package line-wrapping-and-numbers - :load-path "./lib" - :after (org markdown git-timemachine nix-mode)) + :load-path "lib/" + :after (org git-timemachine nix-mode)) (use-package ultra-scroll :init @@ -336,6 +340,9 @@ (use-package treemacs-evil :after (treemacs)) +(use-package nix-mode) +(use-package gdscript-mode) + (use-package lsp-mode :config (setq lsp-completion-enable t) @@ -350,6 +357,9 @@ (gdscript-mode . lsp-deferred) (gdscript-ts-mode . lsp-deferred)) +(use-package lsp-nix + :after (lsp-mode)) + (use-package lsp-ui :commands lsp-ui-mode) (use-package lsp-treemacs :after (evil) @@ -944,13 +954,13 @@ Made for `org-tab-first-hook' in evil-mode." ;; Olivetti (use-package olivetti - :commands (org-mode markdown-mode) :custom (olivetti-style 'fancy) (olivetti-margin-width 100) :config (setq-default olivetti-body-width 100) - (add-hook 'org-mode-hook 'olivetti-mode)) + (add-hook 'org-mode-hook 'olivetti-mode) + (add-hook 'markdown-mode-hook 'olivetti-mode)) (evil-collection-define-key 'normal 'dired-mode-map "h" 'dired-up-directory diff --git a/modules/user/emacs/lib/line-wrapping-and-numbers.el b/modules/user/emacs/lib/line-wrapping-and-numbers.el index feb5617..0719e70 100644 --- a/modules/user/emacs/lib/line-wrapping-and-numbers.el +++ b/modules/user/emacs/lib/line-wrapping-and-numbers.el @@ -15,43 +15,35 @@ ;;; Code: ;; Line wrapping management -(defun truncate-lines-off () +(defun activate-writing-lines () "Stop truncating lines in current buffer." (interactive) - (toggle-truncate-lines 0)) -(defun truncate-lines-on () + (setq-local truncate-lines nil) + (setq visual-line-mode t) + (display-line-numbers-mode 0)) +(defun activate-coding-lines () "Truncate lines in current buffer." (interactive) - (toggle-truncate-lines 1)) -(defun visual-line-mode-off () - "Disable `visual-line-mode` in current buffer." - (interactive) - (visual-line-mode 0)) -(add-hook 'org-mode-hook 'truncate-lines-on) -(add-hook 'markdown-mode-hook 'truncate-lines-on) -(add-hook 'org-mode-hook 'visual-line-mode) -(add-hook 'markdown-mode-hook 'visual-line-mode) -(add-hook 'prog-mode-hook 'truncate-lines-off) -(add-hook 'prog-mode-hook 'visual-line-mode-off) -(add-hook 'nix-mode-hook 'truncate-lines-off) -(add-hook 'nix-mode-hook 'visual-line-mode-off) + (setq-local truncate-lines t) + (setq visual-line-mode nil) + (display-line-numbers-mode 1)) +(add-hook 'org-mode-hook 'activate-writing-lines) +(add-hook 'markdown-mode-hook 'activate-writing-lines) +(add-hook 'prog-mode-hook 'activate-coding-lines) (defun apply-proper-line-wrapping () - "Apply proper line wrapping and visual line mode settings according to whether or not the current mode derives from `prog-mode`." + "Apply proper line wrapping and visual line mode + settings according to whether or not the current + mode derives from `prog-mode`." (if (derived-mode-p 'prog-mode) (progn - (display-line-numbers-mode) (truncate-lines-on) - (visual-line-mode-off) - (display-line-numbers-mode 1)) + ) (progn (truncate-lines-off) - (visual-line-mode) (display-line-numbers-mode 0)))) -(add-hook 'prog-mode-hook 'apply-proper-line-wrapping) -(add-hook 'org-mode-hook 'apply-proper-line-wrapping) -(if (featurep 'markdown-mode) - (add-hook 'markdown-mode-hook 'apply-proper-line-wrapping)) (if (featurep 'git-timemachine) - (add-hook 'git-timemachine-mode-hook 'apply-proper-line-wrapping)) + (add-hook 'git-timemachine-mode-hook 'apply-proper-line-wrapping)) + +(provide 'line-wrapping-and-numbers) ;;; line-wrapping.el ends here From 84d7101a6e11d3bee3280a512e20bf331d59c17b Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 21 Jul 2025 22:12:41 -0500 Subject: [PATCH 269/317] Seems like --fast parameter causes cache misses? --- modules/system/phoenix/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index 7368f37..f3dd656 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -38,7 +38,7 @@ chown -R 0:0 ${config.systemSettings.dotfilesDir}; chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; pushd ${config.systemSettings.dotfilesDir} &> /dev/null; - nixos-rebuild switch --fast; + nixos-rebuild switch; popd &> /dev/null; exit 0; elif [ "$1" = "update" ]; then @@ -78,19 +78,19 @@ chown -R 0:0 ${config.systemSettings.dotfilesDir}; chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; pushd ${config.systemSettings.dotfilesDir} &> /dev/null; - nixos-rebuild build --fast --flake .#snowfire; + nixos-rebuild build --flake .#snowfire; attic push emmet ./result; rm ./result; - nixos-rebuild build --fast --flake .#duskfall; + nixos-rebuild build --flake .#duskfall; attic push emmet ./result; rm ./result; - nixos-rebuild build --fast --flake .#zenith; + nixos-rebuild build --flake .#zenith; attic push emmet ./result; rm ./result; - nixos-rebuild build --fast --flake .#stardust; + nixos-rebuild build --flake .#stardust; attic push emmet ./result; rm ./result; - nixos-rebuild build --fast --flake .#ori; + nixos-rebuild build --flake .#ori; attic push emmet ./result; rm ./result; exit 0; From 237e8246cea188b88706ab1fdb965297702cb673 Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 28 Jul 2025 16:40:45 -0500 Subject: [PATCH 270/317] Random fixes --- hosts/snowfire/home.nix | 2 -- modules/user/browser/default.nix | 3 ++- modules/user/hyprland/default.nix | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index a281edc..71c9abf 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -2,7 +2,6 @@ { config = { - userSettings = { # setup shell = { @@ -53,7 +52,6 @@ "HDMI-A-1,preferred,1536x0,1.25,vrr,0" "DP-1,preferred,0x0,1.25,vrr,0" ]; - }; }; }; diff --git a/modules/user/browser/default.nix b/modules/user/browser/default.nix index b890b49..6d948d3 100644 --- a/modules/user/browser/default.nix +++ b/modules/user/browser/default.nix @@ -22,7 +22,8 @@ in { userSettings.qutebrowser.enable = lib.mkIf (browser == "qutebrowser") true; userSettings.spawnBrowser = lib.mkMerge [ - (lib.mkIf ((browser == "brave") || (browser == "librewolf")) browser) + (lib.mkIf (browser == "brave") "brave --new-window") + (lib.mkIf (browser == "librewolf") browser) (lib.mkIf (!(config.userSettings.hyprland.hyprprofiles.enable) && (browser == "qutebrowser")) "qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4") (lib.mkIf (config.userSettings.hyprland.hyprprofiles.enable && (browser == "qutebrowser")) "qutebrowser-hyprprofile") (lib.mkIf (browser == null) "") diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 6ce1357..c1b7698 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -240,7 +240,7 @@ in "SUPER,T,togglefloating" ",code:148,exec,${term} -e numbat" '',code:107,exec,grim -g "$(slurp)"'' - ''SHIFT,code:107,exec,grim -g "$(slurp -o)'' + ''SHIFT,code:107,exec,grim -g "$(slurp -o)"'' "SUPER,code:107,exec,grim" ''CTRL,code:107,exec,grim -g "$(slurp)" - | wl-copy'' ''SHIFTCTRL,code:107,exec,grim -g "$(slurp -o)" - | wl-copy'' From 3734ba792cc64fa31147decabde77a3513a46641 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 29 Jul 2025 11:41:59 -0500 Subject: [PATCH 271/317] Updated system --- flake.lock | 162 ++++++++++++++++++++++++++--------------------------- flake.nix | 6 +- 2 files changed, 84 insertions(+), 84 deletions(-) diff --git a/flake.lock b/flake.lock index 3894577..c86e062 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1745357003, - "narHash": "sha256-jYwzQkv1r7HN/4qrAuKp+NR4YYNp2xDrOX5O9YVqkWo=", + "lastModified": 1752936381, + "narHash": "sha256-b191B12GRfvOT3odGpx5IFyGRPZbBrvCLADZfFHoJFg=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "a19cf76ee1a15c1c12083fa372747ce46387289f", + "rev": "141a991678b34e768f09b3a670c61a4c1d5d7110", "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": { @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1752255348, - "narHash": "sha256-eDKP15xvd/SHZd4i2EorRZkS7ih5d8YNvCJQsRQeMYs=", + "lastModified": 1753544047, + "narHash": "sha256-QrJGRXmyOz7sAxDeefZ/vdeX07RwNqX00WPuw6KOnsI=", "owner": "StevenBlack", "repo": "hosts", - "rev": "d4d4469162be80797d723be7bcfce28650cc7180", + "rev": "08ebdd4bb52e87752084d34403abeafae109ffa1", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1752327661, - "narHash": "sha256-aV5jry8kH3iRJJpm2NW5LRxP7MGo8/NyKn/l0/GunMg=", + "lastModified": 1753688594, + "narHash": "sha256-HH6AQ194qjAbhwFRcpn1SHdZRX0oqxW/jr+OlV6QelY=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "90a76faa626a45da534e1c1530dce245d6782a29", + "rev": "59f6374bd198dd3a1deb45949e8a896860916ebe", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1752340167, - "narHash": "sha256-7DAefKuQF6G8IxfWrrdnPGxquSGqCgQpu5wEOigi07g=", + "lastModified": 1753720133, + "narHash": "sha256-08Z+2zNrOApkbmJmDS9YIc4OEKrkelBC8VtlTibx+6k=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "8bf19581d2e547159929f1340ed5b65d7b6bce4e", + "rev": "a460ed2bc3383fcb691f8b88c254145d237b4283", "type": "github" }, "original": { @@ -289,11 +289,11 @@ ] }, "locked": { - "lastModified": 1752202894, - "narHash": "sha256-knafgng4gCjZIUMyAEWjxxdols6n/swkYnbWr+oF+1w=", + "lastModified": 1753675338, + "narHash": "sha256-KDS9sr7dddH97lUXa7oxfRqphBlCA6JxZO4m/Z4W06I=", "owner": "nix-community", "repo": "home-manager", - "rev": "fab659b346c0d4252208434c3c4b3983a4b38fec", + "rev": "e4b032ba5113664f0b8b23d956e59ce8e0bc349d", "type": "github" }, "original": { @@ -309,11 +309,11 @@ ] }, "locked": { - "lastModified": 1752338520, - "narHash": "sha256-O1p5BwTwAqZ6sDrCxCxlZFaP/Jx4t1W8+ms9USyEcPQ=", + "lastModified": 1753732062, + "narHash": "sha256-vojVM0SgFP8crFh1LDDXkzaI9/er/1cuRfbNPhfBHyc=", "owner": "nix-community", "repo": "home-manager", - "rev": "ae62fd8ad8347e6bb5b615057f39f33d595a1c47", + "rev": "f49e872f55e36e67ebcb906ff65f86c7a1538f7c", "type": "github" }, "original": { @@ -339,11 +339,11 @@ ] }, "locked": { - "lastModified": 1745948457, - "narHash": "sha256-lzTV10FJTCGNtMdgW5YAhCAqezeAzKOd/97HbQK8GTU=", + "lastModified": 1749155331, + "narHash": "sha256-XR9fsI0zwLiFWfqi/pdS/VD+YNorKb3XIykgTg4l1nA=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "ac903e80b33ba6a88df83d02232483d99f327573", + "rev": "45fcc10b4c282746d93ec406a740c43b48b4ef80", "type": "github" }, "original": { @@ -368,11 +368,11 @@ ] }, "locked": { - "lastModified": 1745015490, - "narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=", + "lastModified": 1752149140, + "narHash": "sha256-gbh1HL98Fdqu0jJIWN4OJQN7Kkth7+rbkFpSZLm/62A=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "60754910946b4e2dc1377b967b7156cb989c5873", + "rev": "340494a38b5ec453dfc542c6226481f736cc8a9a", "type": "github" }, "original": { @@ -428,16 +428,16 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1746735318, - "narHash": "sha256-iN0Ge4LaVT7rATqzIrAZFSdfYuIXbe4/HGcXle7qK1g=", + "lastModified": 1752961026, + "narHash": "sha256-n5lzYUr1iQqzMmEF9oLL9BXMpOO9eVnY0AUCDrM93Yk=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "9958d297641b5c84dcff93f9039d80a5ad37ab00", + "rev": "4e242d086e20b32951fdc0ebcbfb4d41b5be8dcc", "type": "github" }, "original": { "owner": "hyprwm", - "ref": "v0.49.0", + "ref": "v0.50.1", "repo": "Hyprland", "type": "github" } @@ -454,11 +454,11 @@ ] }, "locked": { - "lastModified": 1743714874, - "narHash": "sha256-yt8F7NhMFCFHUHy/lNjH/pjZyIDFNk52Q4tivQ31WFo=", + "lastModified": 1749046714, + "narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "3a5c2bda1c1a4e55cc1330c782547695a93f05b2", + "rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330", "type": "github" }, "original": { @@ -486,11 +486,11 @@ ] }, "locked": { - "lastModified": 1737634706, - "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "lastModified": 1749154592, + "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", "owner": "hyprwm", "repo": "hyprland-qt-support", - "rev": "8810df502cdee755993cb803eba7b23f189db795", + "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", "type": "github" }, "original": { @@ -522,11 +522,11 @@ ] }, "locked": { - "lastModified": 1745951494, - "narHash": "sha256-2dModE32doiyQMmd6EDAQeZnz+5LOs6KXyE0qX76WIg=", + "lastModified": 1750371812, + "narHash": "sha256-D868K1dVEACw17elVxRgXC6hOxY+54wIEjURztDWLk8=", "owner": "hyprwm", "repo": "hyprland-qtutils", - "rev": "4be1d324faf8d6e82c2be9f8510d299984dfdd2e", + "rev": "b13c7481e37856f322177010bdf75fccacd1adc8", "type": "github" }, "original": { @@ -551,11 +551,11 @@ ] }, "locked": { - "lastModified": 1746655412, - "narHash": "sha256-kVQ0bHVtX6baYxRWWIh4u3LNJZb9Zcm2xBeDPOGz5BY=", + "lastModified": 1750371198, + "narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "557241780c179cf7ef224df392f8e67dab6cef83", + "rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b", "type": "github" }, "original": { @@ -605,11 +605,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1752218742, - "narHash": "sha256-GTJDHmzaeNlsUU0P03q0zHLfOAGtGQCf/oYn2SRPWKE=", + "lastModified": 1753461596, + "narHash": "sha256-Td+W8vHCCLtYQWPDVESNxk5fgzQawBmkqCS/4noNDiI=", "ref": "refs/heads/main", - "rev": "17fefce86e6e857783aef38257af7a18be76323a", - "revCount": 378, + "rev": "1e5e62d6e31de0d2610ade4a424d4b696d137a78", + "revCount": 383, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -630,11 +630,11 @@ ] }, "locked": { - "lastModified": 1746635225, - "narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=", + "lastModified": 1752252310, + "narHash": "sha256-06i1pIh6wb+sDeDmWlzuPwIdaFMxLlj1J9I5B9XqSeo=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "674ea57373f08b7609ce93baff131117a0dfe70d", + "rev": "bcabcbada90ed2aacb435dc09b91001819a6dc82", "type": "github" }, "original": { @@ -680,11 +680,11 @@ ] }, "locked": { - "lastModified": 1739870480, - "narHash": "sha256-SiDN5BGxa/1hAsqhgJsS03C3t2QrLgBT8u+ENJ0Qzwc=", + "lastModified": 1751897909, + "narHash": "sha256-FnhBENxihITZldThvbO7883PdXC/2dzW4eiNvtoV5Ao=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "206367a08dc5ac4ba7ad31bdca391d098082e64b", + "rev": "fcca0c61f988a9d092cbb33e906775014c61579d", "type": "github" }, "original": { @@ -727,11 +727,11 @@ ] }, "locked": { - "lastModified": 1752218319, - "narHash": "sha256-fEvLVaVduwVotOib8NqO0e4N3dMsdA04Jlfm2sZQH5Q=", + "lastModified": 1753418232, + "narHash": "sha256-fMVYDv0/7v4qrbZmzfqkFeEpelME4bT5JQBfXL9zl/E=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "d5da490d8c2553fc8d589b49f9c036973b9656a1", + "rev": "ca1145d927d177194fec4b0bf47a4b7dd2ed613d", "type": "github" }, "original": { @@ -765,11 +765,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751984180, - "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", + "lastModified": 1753429684, + "narHash": "sha256-9h7+4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ+SJjk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", + "rev": "7fd36ee82c0275fb545775cc5e4d30542899511d", "type": "github" }, "original": { @@ -812,11 +812,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1751984180, - "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", + "lastModified": 1753549186, + "narHash": "sha256-Znl7rzuxKg/Mdm6AhimcKynM7V3YeNDIcLjBuoBcmNs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", + "rev": "17f6bd177404d6d43017595c5264756764444ab8", "type": "github" }, "original": { @@ -915,11 +915,11 @@ ] }, "locked": { - "lastModified": 1746537231, - "narHash": "sha256-Wb2xeSyOsCoTCTj7LOoD6cdKLEROyFAArnYoS+noCWo=", + "lastModified": 1750779888, + "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", + "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", "type": "github" }, "original": { @@ -952,11 +952,11 @@ ] }, "locked": { - "lastModified": 1752201818, - "narHash": "sha256-d8KczaVT8WFEZdWg//tMAbv8EDyn2YTWcJvSY8gqKBU=", + "lastModified": 1753671061, + "narHash": "sha256-IU4eBWfe9h2QejJYST+EAlhg8a1H6mh9gbcmWgZ2/mQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "bd8f8329780b348fedcd37b53dbbee48c08c496d", + "rev": "40065d17ee4dbec3ded8ca61236132aede843fab", "type": "github" }, "original": { @@ -970,11 +970,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1752288212, - "narHash": "sha256-f2PMqtf61mWAM11QoIfGv3hjD2AsJrij4FCzftepuaE=", + "lastModified": 1753671061, + "narHash": "sha256-IU4eBWfe9h2QejJYST+EAlhg8a1H6mh9gbcmWgZ2/mQ=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "678296525a4cce249c608749b171d0b2ceb8b2ff", + "rev": "40065d17ee4dbec3ded8ca61236132aede843fab", "type": "github" }, "original": { @@ -990,11 +990,11 @@ ] }, "locked": { - "lastModified": 1751731349, - "narHash": "sha256-8TsOqyBfEzwJFLnGnS3d3maEI8jp6VkwLzSzv0uoFvE=", + "lastModified": 1753739139, + "narHash": "sha256-CYgiCh6lJ53YS7aft+l9lSfXRbz8JIuz0sGnwT+uBTs=", "ref": "refs/heads/main", - "rev": "a9ee39a25bfe96c957a09182437d23b9e62c3d6e", - "revCount": 31, + "rev": "c72af4731c34c89e0a96f2f8e87b02f1ba8914c9", + "revCount": 32, "type": "git", "url": "file://path:/etc/nixos.secrets" }, @@ -1022,11 +1022,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1752250117, - "narHash": "sha256-zCPV1a8w9hRn5ukOQwaAggA3X5cMmVsZVBYo8wLfLuU=", + "lastModified": 1753731630, + "narHash": "sha256-8pyTksY2aYtLGmqP8u3xhs4ZfttsfzZXAQZXHKecLDo=", "owner": "danth", "repo": "stylix", - "rev": "0da583a359fd911d5cbfd2c789424b888b777a4b", + "rev": "57d036d92283fddc6ae080459e72e767144a1cda", "type": "github" }, "original": { @@ -1189,11 +1189,11 @@ ] }, "locked": { - "lastModified": 1745871725, - "narHash": "sha256-M24SNc2flblWGXFkGQfqSlEOzAGZnMc9QG3GH4K/KbE=", + "lastModified": 1751300244, + "narHash": "sha256-PFuv1TZVYvQhha0ac53E3YgdtmLShrN0t4T6xqHl0jE=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "76bbf1a6b1378e4ab5230bad00ad04bc287c969e", + "rev": "6115f3fdcb2c1a57b4a80a69f3c797e47607b90a", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 878b92c..26bb3fa 100644 --- a/flake.nix +++ b/flake.nix @@ -12,8 +12,8 @@ src = inputs.nixpkgs; patches = [ #(builtins.fetchurl { - # url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/419713.patch"; - # sha256 = "sha256:0i9kij1vgv4x3bgnydlzn76pbjx6s8fvxm1agjs100ry931jizyv"; + # url = "https://asdf1234.patch"; + # sha256 = "sha256:qwerty123456..."; #}) ]; }; @@ -91,7 +91,7 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; hyprland = { - url = "github:hyprwm/Hyprland/v0.49.0?submodules=true"; + url = "github:hyprwm/Hyprland/v0.50.1?submodules=true"; inputs.nixpkgs.follows = "nixpkgs"; }; From f1a64aa93795ebe61d654be6f85851aaa6057d2b Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 29 Jul 2025 15:54:01 -0500 Subject: [PATCH 272/317] Emacs updates and improvements --- .scratch/scratch.org-mode | 1 + modules/user/emacs/default.nix | 48 +++++++++++++++++++ modules/user/emacs/init.el | 39 ++++++++++++++- .../emacs/lib/line-wrapping-and-numbers.el | 7 +++ 4 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 .scratch/scratch.org-mode diff --git a/.scratch/scratch.org-mode b/.scratch/scratch.org-mode new file mode 100644 index 0000000..90fd3cd --- /dev/null +++ b/.scratch/scratch.org-mode @@ -0,0 +1 @@ +# Scratchpad \ No newline at end of file diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index f7d0d9d..3f6ca6c 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -64,6 +64,54 @@ in { }; } ) {}) + (epkgs.callPackage ( + { lib, fetchurl, trivialBuild }: + + trivialBuild { + pname = "lsp-treemacs-nerd-icons"; + version = "2efa09a-unstable"; + + src = builtins.fetchGit { + url = "https://github.com/Velnbur/lsp-treemacs-nerd-icons.git"; + rev = "2efa09a701b8b455bfb66529454f27c30f7462dc"; + ref = "master"; + }; + + buildInputs = with pkgs.emacsPackages; [ + lsp-treemacs + treemacs + nerd-icons + ]; + + meta = with lib; { + description = "Use nerd icons for lsp-mode and lsp-treemacs"; + homepage = "https://github.com/Velnbur/lsp-treemacs-nerd-icons"; + license = licenses.gpl3; + platforms = platforms.all; + }; + } + ) {}) + (epkgs.callPackage ( + { lib, fetchurl, trivialBuild }: + + trivialBuild { + pname = "scratch-plus"; + version = "2efa09a-unstable"; + + src = builtins.fetchGit { + url = "https://git.sr.ht/~swflint/scratch-plus"; + rev = "b794901f968000f6e338808307385b683b79ec8b"; + ref = "main"; + }; + + meta = with lib; { + description = "Better scratch buffers"; + homepage = "https://git.sr.ht/~swflint/scratch-plus"; + license = licenses.gpl3; + platforms = platforms.all; + }; + } + ) {}) ]; }) fira-code diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 30e711c..8bc5c2e 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -25,6 +25,9 @@ (use-package emacs :defer t :config + ;; Org mode scratch buffers + (setq initial-major-mode 'org-mode) + ;; No startup screen (setq inhibit-startup-message t) @@ -146,7 +149,7 @@ (use-package line-wrapping-and-numbers :load-path "lib/" - :after (org git-timemachine nix-mode)) + :after (org git-timemachine nix-mode treemacs)) (use-package ultra-scroll :init @@ -233,7 +236,16 @@ (evil-define-key 'motion 'global (kbd "j") 'evil-next-visual-line) (evil-define-key 'motion 'global (kbd "k") 'evil-previous-visual-line) + (defun scratch-plus-toggle () + (interactive) + (if (projectile-project-p) + (progn + (select-window (scratch-plus-switch-project nil))) + (progn + (select-window (scratch-plus-switch nil))))) + ;; File and buffer keybinds + (evil-define-key 'motion 'global (kbd "x") 'scratch-plus-toggle) (evil-define-key 'motion 'global (kbd ".") 'find-file) (evil-define-key 'motion 'global (kbd "bi") 'ibuffer) (evil-define-key 'motion 'global (kbd "bd") 'evil-delete-buffer) @@ -297,6 +309,9 @@ (evil-define-key 'motion 'global (kbd "wh") 'evil-window-left) (evil-define-key 'motion 'global (kbd "wl") 'evil-window-right) + (evil-define-key 'motion scratch-plus-minor-mode-map (kbd "q") 'quit-window) + (evil-define-key 'normal scratch-plus-minor-mode-map (kbd "q") 'quit-window) + (evil-define-key 'insert org-mode-map (kbd "") '+org/insert-item-below) (evil-define-key 'insert org-mode-map (kbd "") '+org/insert-item-above) (evil-define-key 'motion org-mode-map (kbd "") '+org/insert-item-below) @@ -361,8 +376,11 @@ :after (lsp-mode)) (use-package lsp-ui :commands lsp-ui-mode) + (use-package lsp-treemacs :after (evil) + :custom + (lsp-treemacs-theme "nerd-icons-ext") :config (evil-define-key 'normal 'global (kbd "os") 'lsp-treemacs-symbols)) @@ -414,6 +432,11 @@ :config (treemacs-load-theme "nerd-icons")) +(use-package lsp-treemacs-nerd-icons + :after (lsp-treemacs) + :init (with-eval-after-load 'lsp-treemacs + (require 'lsp-treemacs-nerd-icons))) + (use-package nerd-icons-dired :after (nerd-icons dired) :config @@ -995,7 +1018,19 @@ Made for `org-tab-first-hook' in evil-mode." (evil-define-key 'insert 'global (kbd "M-z") 'vterm-toggle-cd-force) (evil-define-key 'motion vterm-mode-map (kbd "M-z") 'vterm-toggle-hide) (evil-define-key 'insert vterm-mode-map (kbd "M-z") 'vterm-toggle-hide) -) + ) + +(use-package scratch-plus + :custom + (initial-major-mode 'org-mode) + (scratch-plus-save-directory (file-truename "~/.config/emacs/scratch")) + (scratch-plus-project-subdir ".scratch") + (scratch-plus-restore-type 'demand) + (scratch-plus-force-restore t) + (scratch-plus-idle-save 2) + (scratch-plus-initial-message "Scratchpad") + :init + (add-hook 'after-init-hook #'scratch-plus-mode)) (provide 'init) ;;; init.el ends here diff --git a/modules/user/emacs/lib/line-wrapping-and-numbers.el b/modules/user/emacs/lib/line-wrapping-and-numbers.el index 0719e70..c4597bf 100644 --- a/modules/user/emacs/lib/line-wrapping-and-numbers.el +++ b/modules/user/emacs/lib/line-wrapping-and-numbers.el @@ -27,9 +27,16 @@ (setq-local truncate-lines t) (setq visual-line-mode nil) (display-line-numbers-mode 1)) +(defun activate-coding-lines-without-numbers () + "Truncate lines in current buffer." + (interactive) + (setq-local truncate-lines t) + (setq visual-line-mode nil) + (display-line-numbers-mode 0)) (add-hook 'org-mode-hook 'activate-writing-lines) (add-hook 'markdown-mode-hook 'activate-writing-lines) (add-hook 'prog-mode-hook 'activate-coding-lines) +(add-hook 'treemacs-mode-hook 'activate-coding-lines-without-numbers) (defun apply-proper-line-wrapping () "Apply proper line wrapping and visual line mode settings according to whether or not the current From 90a46342eb51bb793a4d53d56a7dd53a8e469452 Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 4 Aug 2025 08:21:24 -0500 Subject: [PATCH 273/317] This is useful for networking gui --- modules/user/hyprland/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index c1b7698..3e83edb 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -422,6 +422,7 @@ in }; home.packages = (with pkgs; [ + networkmanagerapplet hyprland-monitor-attached alacritty kitty From 62fc76cfd9faa06024f7d582796db8ecb3c3a0f8 Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 4 Aug 2025 08:21:43 -0500 Subject: [PATCH 274/317] Scratch plus autosave buggy with project scratch buffers --- modules/user/emacs/init.el | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 8bc5c2e..6758d3f 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -1027,7 +1027,6 @@ Made for `org-tab-first-hook' in evil-mode." (scratch-plus-project-subdir ".scratch") (scratch-plus-restore-type 'demand) (scratch-plus-force-restore t) - (scratch-plus-idle-save 2) (scratch-plus-initial-message "Scratchpad") :init (add-hook 'after-init-hook #'scratch-plus-mode)) From 29c347ff9c7522bbef02be5cd117f8e4bbfa2080 Mon Sep 17 00:00:00 2001 From: Emmet Date: Mon, 4 Aug 2025 10:12:39 -0500 Subject: [PATCH 275/317] Fix grayscale shader to gles 3 --- modules/user/hyprland/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 3e83edb..29d7e53 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -575,10 +575,12 @@ in /* * Grayscale */ + #version 300 es precision highp float; - varying vec2 v_texcoord; + in vec2 v_texcoord; uniform sampler2D tex; + out vec4 fragColor; // Enum for type of grayscale conversion const int LUMINOSITY = 0; @@ -623,7 +625,7 @@ in } vec3 grayscale = vec3(gray); - gl_FragColor = vec4(grayscale, pixColor.a); + fragColor = vec4(grayscale, pixColor.a); } ''; home.file.".config/ashell/config.toml".text = '' From 23574a726e637f49fd9f958dc1437fec2e04a97e Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 12 Aug 2025 18:13:52 -0500 Subject: [PATCH 276/317] Updated system --- flake.lock | 88 +++++++++++++++++++++++++++--------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/flake.lock b/flake.lock index c86e062..6f399de 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1753544047, - "narHash": "sha256-QrJGRXmyOz7sAxDeefZ/vdeX07RwNqX00WPuw6KOnsI=", + "lastModified": 1754667345, + "narHash": "sha256-mLorEFy4J7IQN1ggE19FeUS1IyyqCpHM9tXmp9iB0oU=", "owner": "StevenBlack", "repo": "hosts", - "rev": "08ebdd4bb52e87752084d34403abeafae109ffa1", + "rev": "5398a10d1d31d408b10a3efa82fc8ccf26d4a4de", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1753688594, - "narHash": "sha256-HH6AQ194qjAbhwFRcpn1SHdZRX0oqxW/jr+OlV6QelY=", + "lastModified": 1754712381, + "narHash": "sha256-LbTalQDguSZ5xpfFihCEHMjm7xYF+QLQlHFfFTHpkj8=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "59f6374bd198dd3a1deb45949e8a896860916ebe", + "rev": "9c8c4ed6fab07590095105cb5bea98587955b3c4", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1753720133, - "narHash": "sha256-08Z+2zNrOApkbmJmDS9YIc4OEKrkelBC8VtlTibx+6k=", + "lastModified": 1754756645, + "narHash": "sha256-wqkcGq0JPuZms03cEKzFPGVb4eRqFZiafXPY6sBZRRE=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "a460ed2bc3383fcb691f8b88c254145d237b4283", + "rev": "538d8c3c8f58aaf0b843496f54ee569113466ad3", "type": "github" }, "original": { @@ -289,11 +289,11 @@ ] }, "locked": { - "lastModified": 1753675338, - "narHash": "sha256-KDS9sr7dddH97lUXa7oxfRqphBlCA6JxZO4m/Z4W06I=", + "lastModified": 1754613544, + "narHash": "sha256-ueR1mGX4I4DWfDRRxxMphbKDNisDeMPMusN72VV1+cc=", "owner": "nix-community", "repo": "home-manager", - "rev": "e4b032ba5113664f0b8b23d956e59ce8e0bc349d", + "rev": "cc2fa2331aebf9661d22bb507d362b39852ac73f", "type": "github" }, "original": { @@ -309,11 +309,11 @@ ] }, "locked": { - "lastModified": 1753732062, - "narHash": "sha256-vojVM0SgFP8crFh1LDDXkzaI9/er/1cuRfbNPhfBHyc=", + "lastModified": 1754756528, + "narHash": "sha256-W1jYKMetZSOHP5m2Z5Wokdj/ct17swPHs+MiY2WT1HQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "f49e872f55e36e67ebcb906ff65f86c7a1538f7c", + "rev": "3ec1cd9a0703fbd55d865b7fd2b07d08374f0355", "type": "github" }, "original": { @@ -605,11 +605,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1753461596, - "narHash": "sha256-Td+W8vHCCLtYQWPDVESNxk5fgzQawBmkqCS/4noNDiI=", + "lastModified": 1754413248, + "narHash": "sha256-d2C75Ij8JCuNwy6Vgq32Fe1iSrEOOnBnOX4JZJvtAFA=", "ref": "refs/heads/main", - "rev": "1e5e62d6e31de0d2610ade4a424d4b696d137a78", - "revCount": 383, + "rev": "347e05a40ec3bc48b3f21f44dea551d07773e214", + "revCount": 386, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -727,11 +727,11 @@ ] }, "locked": { - "lastModified": 1753418232, - "narHash": "sha256-fMVYDv0/7v4qrbZmzfqkFeEpelME4bT5JQBfXL9zl/E=", + "lastModified": 1754639028, + "narHash": "sha256-w1+XzPBAZPbeGLMAgAlOjIquswo6Q42PMep9KSrRzOA=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "ca1145d927d177194fec4b0bf47a4b7dd2ed613d", + "rev": "d49809278138d17be77ab0ef5506b26dc477fa62", "type": "github" }, "original": { @@ -765,11 +765,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1753429684, - "narHash": "sha256-9h7+4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ+SJjk=", + "lastModified": 1754498491, + "narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7fd36ee82c0275fb545775cc5e4d30542899511d", + "rev": "c2ae88e026f9525daf89587f3cbee584b92b6134", "type": "github" }, "original": { @@ -812,11 +812,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1753549186, - "narHash": "sha256-Znl7rzuxKg/Mdm6AhimcKynM7V3YeNDIcLjBuoBcmNs=", + "lastModified": 1754498491, + "narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "17f6bd177404d6d43017595c5264756764444ab8", + "rev": "c2ae88e026f9525daf89587f3cbee584b92b6134", "type": "github" }, "original": { @@ -892,11 +892,11 @@ ] }, "locked": { - "lastModified": 1748196248, - "narHash": "sha256-1iHjsH6/5UOerJEoZKE+Gx1BgAoge/YcnUsOA4wQ/BU=", + "lastModified": 1754501628, + "narHash": "sha256-FExJ54tVB5iu7Dh2tLcyCSWpaV+lmUzzWKZUkemwXvo=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "b7697abe89967839b273a863a3805345ea54ab56", + "rev": "cca090f8115c4172b9aef6c5299ae784bdd5e133", "type": "github" }, "original": { @@ -952,11 +952,11 @@ ] }, "locked": { - "lastModified": 1753671061, - "narHash": "sha256-IU4eBWfe9h2QejJYST+EAlhg8a1H6mh9gbcmWgZ2/mQ=", + "lastModified": 1754621349, + "narHash": "sha256-JkXUS/nBHyUqVTuL4EDCvUWauTHV78EYfk+WqiTAMQ4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "40065d17ee4dbec3ded8ca61236132aede843fab", + "rev": "c448ab42002ac39d3337da10420c414fccfb1088", "type": "github" }, "original": { @@ -970,11 +970,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1753671061, - "narHash": "sha256-IU4eBWfe9h2QejJYST+EAlhg8a1H6mh9gbcmWgZ2/mQ=", + "lastModified": 1754707163, + "narHash": "sha256-wgVgOsyJUDn2ZRpzu2gELKALoJXlBSoZJSln+Tlg5Pw=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "40065d17ee4dbec3ded8ca61236132aede843fab", + "rev": "ac39ab4c8ed7cefe48d5ae5750f864422df58f01", "type": "github" }, "original": { @@ -990,11 +990,11 @@ ] }, "locked": { - "lastModified": 1753739139, - "narHash": "sha256-CYgiCh6lJ53YS7aft+l9lSfXRbz8JIuz0sGnwT+uBTs=", + "lastModified": 1754756619, + "narHash": "sha256-T4AFB2+GTSyz72AaUwZY7aexhE5z6KaEaeEuBINZh5Q=", "ref": "refs/heads/main", - "rev": "c72af4731c34c89e0a96f2f8e87b02f1ba8914c9", - "revCount": 32, + "rev": "8a23fe152a3fea702159ad1680cb9083d20aacf6", + "revCount": 33, "type": "git", "url": "file://path:/etc/nixos.secrets" }, @@ -1022,11 +1022,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1753731630, - "narHash": "sha256-8pyTksY2aYtLGmqP8u3xhs4ZfttsfzZXAQZXHKecLDo=", + "lastModified": 1754597531, + "narHash": "sha256-OpC9/PBIuL2WEJUkcuD/wVxI8r+3o6f5RylSIefjHo4=", "owner": "danth", "repo": "stylix", - "rev": "57d036d92283fddc6ae080459e72e767144a1cda", + "rev": "63bb34a66ad7d1af2e95ee20dd675896b2074c32", "type": "github" }, "original": { From fa16f0c327b05f7b99bb9a4560e3d1f09a4e11fb Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 20 Aug 2025 20:51:23 -0500 Subject: [PATCH 277/317] Updates for new work computer --- flake.lock | 8 ++--- hosts/zenith/hardware-configuration.nix | 40 ++++++------------------- hosts/zenith/home.nix | 14 +-------- 3 files changed, 14 insertions(+), 48 deletions(-) diff --git a/flake.lock b/flake.lock index 6f399de..b242238 100644 --- a/flake.lock +++ b/flake.lock @@ -990,11 +990,11 @@ ] }, "locked": { - "lastModified": 1754756619, - "narHash": "sha256-T4AFB2+GTSyz72AaUwZY7aexhE5z6KaEaeEuBINZh5Q=", + "lastModified": 1755740692, + "narHash": "sha256-aEEDVUreWCXtgA7rtAM1llzjoRJS+jOnWKD8jP1KdiY=", "ref": "refs/heads/main", - "rev": "8a23fe152a3fea702159ad1680cb9083d20aacf6", - "revCount": 33, + "rev": "e3d9e1103df26dfd143f75913d33de55f5d59ae1", + "revCount": 34, "type": "git", "url": "file://path:/etc/nixos.secrets" }, diff --git a/hosts/zenith/hardware-configuration.nix b/hosts/zenith/hardware-configuration.nix index 0aac4c5..5b2342a 100644 --- a/hosts/zenith/hardware-configuration.nix +++ b/hosts/zenith/hardware-configuration.nix @@ -8,49 +8,27 @@ [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "ahci" "nvme" "usb_storage" "sd_mod" ]; - boot.initrd.kernelModules = [ "i915" ]; - boot.kernelModules = [ "kvm-intel" ]; + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ]; services.fstrim.enable = true; services.xserver.videoDrivers = lib.mkDefault [ "modesetting" ]; - hardware.graphics = { - enable = lib.mkDefault true; - enable32Bit = lib.mkDefault true; - extraPackages = with pkgs; [ - vpl-gpu-rt - intel-media-driver - intel-vaapi-driver - vaapiIntel - vaapiVdpau - libvdpau-va-gl - ]; - extraPackages32 = with pkgs.driversi686Linux; [ - intel-media-driver - intel-vaapi-driver - libvdpau-va-gl - ]; - }; - - environment.sessionVariables = { - LIBVA_DRIVER_NAME = "iHD"; - }; - powerManagement.cpuFreqGovernor = "performance"; services.thermald.enable = true; fileSystems."/" = - { device = "/dev/disk/by-uuid/548f7030-af4c-412a-b2ed-d842337aa336"; + { device = "/dev/disk/by-uuid/41b254d6-96aa-4498-91d3-939f1722fff1"; fsType = "ext4"; }; - boot.initrd.luks.devices."luks-50f310ae-545b-4f09-84b6-e69b5ecacaae".device = "/dev/disk/by-uuid/50f310ae-545b-4f09-84b6-e69b5ecacaae"; + boot.initrd.luks.devices."luks-759bd464-2cda-4c25-b7c0-800d4265314b".device = "/dev/disk/by-uuid/759bd464-2cda-4c25-b7c0-800d4265314b"; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/F691-DA8C"; + { device = "/dev/disk/by-uuid/3212-E58F"; fsType = "vfat"; options = [ "fmask=0077" "dmask=0077" ]; }; @@ -62,9 +40,9 @@ # still possible to use this option, but it's recommended to use it in conjunction # with explicit per-interface declarations with `networking.interfaces..useDHCP`. networking.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true; + # networking.interfaces.enp1s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; - + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index a7c9225..9954ab1 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -62,20 +62,8 @@ }; }; - bind = [ - ''SUPER,E,exec,if hyprctl clients | grep qutegmail; then echo "scratch_mail respawn not needed"; else qutebrowser --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag num-raster-threads=4 -B ~/.browser/Teaching :'set input.mode_override passthrough -u mail.google.com' :'set window.title_format qutegmail' :'set tabs.show never' :'set statusbar.show never' https://mail.google.com; fi'' - "SUPER,E,togglespecialworkspace,scratch_email" - ]; - - windowrulev2 = [ - "float,title:^(qutegmail)$" - "size 80% 85%,title:^(qutegmail)$" - "workspace special:scratch_email ,title:^(qutegmail)$" - "center,title:^(qutegmail)$" - ]; - monitor = [ - "eDP-1,1920x1080,1536x0,1.25" + "eDP-1,1920x1200,1536x0,1.25" "HDMI-A-1,1920x1080,0x0,1.25" ]; From 30e2e2b5e04014a72b84003ca925ec30a0662ea6 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 28 Aug 2025 19:49:27 -0500 Subject: [PATCH 278/317] Enable wireguard --- hosts/snowfire/hardware-configuration.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/snowfire/hardware-configuration.nix b/hosts/snowfire/hardware-configuration.nix index caab46d..c685a0f 100644 --- a/hosts/snowfire/hardware-configuration.nix +++ b/hosts/snowfire/hardware-configuration.nix @@ -16,6 +16,7 @@ boot.blacklistedKernelModules = [ "k10temp" ]; boot.kernelParams = [ "amd_pstate=active" "acpi_osi=Linux" "acpi_wake=USB0" ]; boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ]; + networking.wireguard.enable = true; hardware.opengl.enable = true; hardware.opengl.extraPackages = [ pkgs.rocmPackages.clr.icd ]; hardware.opengl.extraPackages32 = [ ]; From c94dcbff2982bc5a7d72a3f4104f8973bbf9ba63 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 28 Aug 2025 19:49:33 -0500 Subject: [PATCH 279/317] localsend is really cool --- modules/system/configuration.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/system/configuration.nix b/modules/system/configuration.nix index 7b92bbb..ec45f49 100644 --- a/modules/system/configuration.nix +++ b/modules/system/configuration.nix @@ -83,6 +83,10 @@ # Remove bloat programs.nano.enable = lib.mkForce false; + + # Localsend is helpful for setting up new systems or quickly transferring files + programs.localsend.enable = true; + programs.localsend.openFirewall = true; }; } From 5684e1b560ad058715597b82244dc833718427a8 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 28 Aug 2025 21:56:23 -0500 Subject: [PATCH 280/317] Updated system --- flake.lock | 82 ++++++++++++++--------------- modules/system/hyprland/default.nix | 5 +- modules/system/stylix/default.nix | 2 +- modules/user/hyprland/default.nix | 5 +- modules/user/stylix/default.nix | 8 +-- 5 files changed, 49 insertions(+), 53 deletions(-) diff --git a/flake.lock b/flake.lock index b242238..3e5c27b 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1754667345, - "narHash": "sha256-mLorEFy4J7IQN1ggE19FeUS1IyyqCpHM9tXmp9iB0oU=", + "lastModified": 1756051903, + "narHash": "sha256-98Bn6BTV0SC0sCe6IpwRw8gsPR5T7Z8TW/gU74FbHwU=", "owner": "StevenBlack", "repo": "hosts", - "rev": "5398a10d1d31d408b10a3efa82fc8ccf26d4a4de", + "rev": "64ee012b7ec917fcf654e45d3442a9bf53901410", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1754712381, - "narHash": "sha256-LbTalQDguSZ5xpfFihCEHMjm7xYF+QLQlHFfFTHpkj8=", + "lastModified": 1756419218, + "narHash": "sha256-bD10TLSG2KljGpW/HpVPa6wIMjjwQ69IjeaRWP1QE0k=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "9c8c4ed6fab07590095105cb5bea98587955b3c4", + "rev": "cf5f934ea48b4a3048febc0132ffc628a0fde759", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1754756645, - "narHash": "sha256-wqkcGq0JPuZms03cEKzFPGVb4eRqFZiafXPY6sBZRRE=", + "lastModified": 1756400986, + "narHash": "sha256-tWJrNoOk6buV4dktEOVevKZymgp/NZDNYusUyuH/WhA=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "538d8c3c8f58aaf0b843496f54ee569113466ad3", + "rev": "452a76945fd25463c5855a8eb419f0580104cef1", "type": "github" }, "original": { @@ -289,11 +289,11 @@ ] }, "locked": { - "lastModified": 1754613544, - "narHash": "sha256-ueR1mGX4I4DWfDRRxxMphbKDNisDeMPMusN72VV1+cc=", + "lastModified": 1756261190, + "narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=", "owner": "nix-community", "repo": "home-manager", - "rev": "cc2fa2331aebf9661d22bb507d362b39852ac73f", + "rev": "77f348da3176dc68b20a73dab94852a417daf361", "type": "github" }, "original": { @@ -309,11 +309,11 @@ ] }, "locked": { - "lastModified": 1754756528, - "narHash": "sha256-W1jYKMetZSOHP5m2Z5Wokdj/ct17swPHs+MiY2WT1HQ=", + "lastModified": 1756261190, + "narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=", "owner": "nix-community", "repo": "home-manager", - "rev": "3ec1cd9a0703fbd55d865b7fd2b07d08374f0355", + "rev": "77f348da3176dc68b20a73dab94852a417daf361", "type": "github" }, "original": { @@ -605,11 +605,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1754413248, - "narHash": "sha256-d2C75Ij8JCuNwy6Vgq32Fe1iSrEOOnBnOX4JZJvtAFA=", + "lastModified": 1756305651, + "narHash": "sha256-KttBtdPHDCuD+BT0da8DmBarv6k+9GA9INpeDLLgpc8=", "ref": "refs/heads/main", - "rev": "347e05a40ec3bc48b3f21f44dea551d07773e214", - "revCount": 386, + "rev": "8d0e56998e299ae42f3fd8ede5bb5c396193cdbc", + "revCount": 388, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -727,11 +727,11 @@ ] }, "locked": { - "lastModified": 1754639028, - "narHash": "sha256-w1+XzPBAZPbeGLMAgAlOjIquswo6Q42PMep9KSrRzOA=", + "lastModified": 1756201372, + "narHash": "sha256-bK5j5cwJgO5AZXlDl5AgISzpOv9YV1Fcv2nDr9RW/5o=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "d49809278138d17be77ab0ef5506b26dc477fa62", + "rev": "9f6745bd704ab7f2617d41c2b02f4fd5f9ed0e89", "type": "github" }, "original": { @@ -765,11 +765,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1754498491, - "narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=", + "lastModified": 1756266583, + "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c2ae88e026f9525daf89587f3cbee584b92b6134", + "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", "type": "github" }, "original": { @@ -812,11 +812,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1754498491, - "narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=", + "lastModified": 1756266583, + "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c2ae88e026f9525daf89587f3cbee584b92b6134", + "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", "type": "github" }, "original": { @@ -952,11 +952,11 @@ ] }, "locked": { - "lastModified": 1754621349, - "narHash": "sha256-JkXUS/nBHyUqVTuL4EDCvUWauTHV78EYfk+WqiTAMQ4=", + "lastModified": 1756262090, + "narHash": "sha256-PQHSup4d0cVXxJ7mlHrrxBx1WVrmudKiNQgnNl5xRas=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "c448ab42002ac39d3337da10420c414fccfb1088", + "rev": "df7ea78aded79f195a92fc5423de96af2b8a85d1", "type": "github" }, "original": { @@ -970,11 +970,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1754707163, - "narHash": "sha256-wgVgOsyJUDn2ZRpzu2gELKALoJXlBSoZJSln+Tlg5Pw=", + "lastModified": 1756348497, + "narHash": "sha256-xJp3VnoYh4kpsaKFO/7SsGbwOz7pI1ZmjbqpXEuR2cw=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "ac39ab4c8ed7cefe48d5ae5750f864422df58f01", + "rev": "0adf92c70d23fb4f703aea5d3ebb51ac65994f7f", "type": "github" }, "original": { @@ -990,11 +990,11 @@ ] }, "locked": { - "lastModified": 1755740692, - "narHash": "sha256-aEEDVUreWCXtgA7rtAM1llzjoRJS+jOnWKD8jP1KdiY=", + "lastModified": 1756429289, + "narHash": "sha256-yOAerEZpBOhZAk9ygSDMAXTanNaBXJLA+TlF9iUtHM4=", "ref": "refs/heads/main", - "rev": "e3d9e1103df26dfd143f75913d33de55f5d59ae1", - "revCount": 34, + "rev": "fbe2e9cfaf3e2e590a60eb785127f732492f05d2", + "revCount": 35, "type": "git", "url": "file://path:/etc/nixos.secrets" }, @@ -1022,11 +1022,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1754597531, - "narHash": "sha256-OpC9/PBIuL2WEJUkcuD/wVxI8r+3o6f5RylSIefjHo4=", + "lastModified": 1755997543, + "narHash": "sha256-/fejmCQ7AWa655YxyPxRDbhdU7c5+wYsFSjmEMXoBCM=", "owner": "danth", "repo": "stylix", - "rev": "63bb34a66ad7d1af2e95ee20dd675896b2074c32", + "rev": "f47c0edcf71e802378b1b7725fa57bb44fe85ee8", "type": "github" }, "original": { diff --git a/modules/system/hyprland/default.nix b/modules/system/hyprland/default.nix index 6cd33c6..86b7def 100644 --- a/modules/system/hyprland/default.nix +++ b/modules/system/hyprland/default.nix @@ -12,10 +12,7 @@ in config = lib.mkIf cfg.enable { # Power key should not shut off computer by defaultPower key shuts of - services.logind.extraConfig = '' - # Suspend when power button is pressed - HandlePowerKey=suspend - ''; + services.logind.powerKey = "suspend"; # Hyprland programs = { diff --git a/modules/system/stylix/default.nix b/modules/system/stylix/default.nix index 1886344..560ec61 100644 --- a/modules/system/stylix/default.nix +++ b/modules/system/stylix/default.nix @@ -50,7 +50,7 @@ in stylix.targets.console.enable = true; environment.sessionVariables = { - QT_QPA_PLATFORMTHEME = "qt5ct"; + #QT_QPA_PLATFORMTHEME = "qt5ct"; }; }; } diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 29d7e53..5cc8eaf 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -40,7 +40,7 @@ in XDG_SESSION_TYPE = "wayland"; GDK_BACKEND = "wayland,x11,*"; QT_QPA_PLATFORM = "wayland;xcb"; - QT_QPA_PLATFORMTHEME = lib.mkForce "qt5ct"; + #QT_QPA_PLATFORMTHEME = lib.mkForce "qt5ct"; QT_AUTO_SCREEN_SCALE_FACTOR = "1.25"; QT_WAYLAND_DISABLE_WINDOWDECORATION = 1; CLUTTER_BACKEND = "wayland"; @@ -513,8 +513,7 @@ in wev grim slurp - libsForQt5.qt5.qtwayland - qt6.qtwayland + kdePackages.qtwayland xdg-utils wlsunset hyprshade diff --git a/modules/user/stylix/default.nix b/modules/user/stylix/default.nix index 22ab5e3..ac1db73 100644 --- a/modules/user/stylix/default.nix +++ b/modules/user/stylix/default.nix @@ -109,13 +109,13 @@ in ".config/qt5ct/qt5ct.conf".text = pkgs.lib.mkBefore (builtins.readFile ./qt5ct.conf); }; home.packages = with pkgs; [ - libsForQt5.qt5ct pkgs.libsForQt5.breeze-qt5 libsForQt5.breeze-icons pkgs.noto-fonts-monochrome-emoji + kdePackages.breeze kdePackages.breeze-icons pkgs.noto-fonts-monochrome-emoji ]; qt = { - enable = true; - style.package = pkgs.libsForQt5.breeze-qt5; + #enable = true; + style.package = pkgs.kdePackages.breeze; style.name = "breeze-dark"; - platformTheme = "kde"; + platformTheme.name = "kde"; }; fonts.fontconfig.defaultFonts = { From b927432d45b31e27053bcda66eca7473aa8cf114 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 31 Aug 2025 18:08:30 -0500 Subject: [PATCH 281/317] Better brave config --- hosts/duskfall/configuration.nix | 1 + hosts/snowfire/configuration.nix | 1 + hosts/stardust/configuration.nix | 1 + hosts/zenith/configuration.nix | 1 + modules/system/brave-policy/default.nix | 40 +++++++++++++++++++++++++ modules/system/overlays/brave.nix | 22 -------------- modules/system/stylix/default.nix | 2 ++ modules/user/browser/brave.nix | 12 ++++++-- modules/user/browser/default.nix | 2 +- 9 files changed, 57 insertions(+), 25 deletions(-) create mode 100644 modules/system/brave-policy/default.nix delete mode 100644 modules/system/overlays/brave.nix diff --git a/hosts/duskfall/configuration.nix b/hosts/duskfall/configuration.nix index 01ebe2b..cd97bfb 100644 --- a/hosts/duskfall/configuration.nix +++ b/hosts/duskfall/configuration.nix @@ -20,6 +20,7 @@ docker.enable = true; virtualMachines.enable = false; }; + brave.enable = true; # wm hyprland.enable = true; diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index 34ad55e..4de8de3 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -21,6 +21,7 @@ docker.enable = true; virtualMachines.enable = true; }; + brave.enable = true; # wm hyprland.enable = true; diff --git a/hosts/stardust/configuration.nix b/hosts/stardust/configuration.nix index 542cd44..cf130a7 100644 --- a/hosts/stardust/configuration.nix +++ b/hosts/stardust/configuration.nix @@ -19,6 +19,7 @@ virtualization = { docker.enable = true; }; + brave.enable = true; # wm plasma.enable = true; diff --git a/hosts/zenith/configuration.nix b/hosts/zenith/configuration.nix index 037c241..050b9d2 100644 --- a/hosts/zenith/configuration.nix +++ b/hosts/zenith/configuration.nix @@ -19,6 +19,7 @@ docker.enable = true; virtualMachines.enable = true; }; + brave.enable = true; # wm hyprland.enable = true; diff --git a/modules/system/brave-policy/default.nix b/modules/system/brave-policy/default.nix new file mode 100644 index 0000000..0bf371f --- /dev/null +++ b/modules/system/brave-policy/default.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ...}: + +let + cfg = config.systemSettings.brave; +in +{ + options = { + systemSettings.brave = { + enable = lib.mkEnableOption "Enable brave group policies"; + }; + }; + + config = lib.mkIf cfg.enable { + environment.etc."/brave/policies/managed/GroupPolicy.json".text = '' + { + "BrowserSignin": 0, + "PasswordManagerEnabled": false, + "SpellcheckEnabled": true, + "SpellcheckLanguage": [ + "en-US" + ], + "TorDisabled": true, + "BraveRewardsDisabled": true, + "BraveWalletDisabled": true, + "BraveVPNDisabled": true, + "BraveAIChatEnabled": false, + "BraveNewsDisabled": true, + "BraveTalkDisabled": true, + "BraveSpeedreaderEnabled": false, + "BraveP3AEnabled": false, + "BraveStatsPingEnabled": false, + "BraveWebDiscoveryEnabled": false, + "BraveSyncUrl": "https://sync-v2.brave.com/v2", + "DefaultSearchProviderAlternateURLS": [ + "https://search.nixos.org/packages?channel=unstable&query={searchTerms}" + ] + } + ''; + }; +} diff --git a/modules/system/overlays/brave.nix b/modules/system/overlays/brave.nix deleted file mode 100644 index 94b9b7d..0000000 --- a/modules/system/overlays/brave.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - config = { - nixpkgs.config.overlays = [ - (self: super: { - brave = super.brave.override { - commandLineArgs = [ - "--password-store=gnome-libsecret" - "--ignore-gpu-blocklist" - "--enable-gpu-rasterization" - "--enable-accelerated-video-decode" - "--enable-quic" - "--enable-zero-copy" - "--enable-native-gpu-memory-buffers" - "--num-raster-threads=4" - ]; - }; - }) - ]; - }; -} diff --git a/modules/system/stylix/default.nix b/modules/system/stylix/default.nix index 560ec61..c594d32 100644 --- a/modules/system/stylix/default.nix +++ b/modules/system/stylix/default.nix @@ -49,6 +49,8 @@ in stylix.targets.console.enable = true; + stylix.targets.chromium.enable = true; + environment.sessionVariables = { #QT_QPA_PLATFORMTHEME = "qt5ct"; }; diff --git a/modules/user/browser/brave.nix b/modules/user/browser/brave.nix index 9e8cd85..695c982 100644 --- a/modules/user/browser/brave.nix +++ b/modules/user/browser/brave.nix @@ -10,8 +10,16 @@ in { }; config = lib.mkIf cfg.enable { - home.packages = [ pkgs.brave ]; - + programs.brave.enable = true; + programs.brave.package = pkgs.brave; + programs.brave.extensions = [ + { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } + { id = "oboonakemofpalcgghocfoadofidjkkk"; } + ]; + programs.brave.commandLineArgs = [ + "--password-store=gnome-libsecret" + "--enable-accelerated-video-decode" + ]; xdg.mimeApps.defaultApplications = lib.mkIf (config.userSettings.browser == "brave" ) { "text/html" = "brave-browser.desktop"; "x-scheme-handler/http" = "brave-browser.desktop"; diff --git a/modules/user/browser/default.nix b/modules/user/browser/default.nix index 6d948d3..d394ba5 100644 --- a/modules/user/browser/default.nix +++ b/modules/user/browser/default.nix @@ -22,7 +22,7 @@ in { userSettings.qutebrowser.enable = lib.mkIf (browser == "qutebrowser") true; userSettings.spawnBrowser = lib.mkMerge [ - (lib.mkIf (browser == "brave") "brave --new-window") + (lib.mkIf (browser == "brave") "sh -c 'brave --new-window'") (lib.mkIf (browser == "librewolf") browser) (lib.mkIf (!(config.userSettings.hyprland.hyprprofiles.enable) && (browser == "qutebrowser")) "qutebrowser --qt-flag ignore-gpu-blacklist --qt-flag enable-gpu-rasterization --qt-flag enable-native-gpu-memory-buffers --qt-flag enable-accelerated-2d-canvas --qt-flag num-raster-threads=4") (lib.mkIf (config.userSettings.hyprland.hyprprofiles.enable && (browser == "qutebrowser")) "qutebrowser-hyprprofile") From 80e7c3bc6b896f7cb11150f6ce513c5116c2e798 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 31 Aug 2025 18:09:00 -0500 Subject: [PATCH 282/317] Fix qt styling --- flake.lock | 4 ++-- flake.nix | 2 +- modules/user/office/default.nix | 2 +- modules/user/stylix/default.nix | 9 ++------- 4 files changed, 6 insertions(+), 11 deletions(-) diff --git a/flake.lock b/flake.lock index 3e5c27b..7d7745f 100644 --- a/flake.lock +++ b/flake.lock @@ -1024,13 +1024,13 @@ "locked": { "lastModified": 1755997543, "narHash": "sha256-/fejmCQ7AWa655YxyPxRDbhdU7c5+wYsFSjmEMXoBCM=", - "owner": "danth", + "owner": "nix-community", "repo": "stylix", "rev": "f47c0edcf71e802378b1b7725fa57bb44fe85ee8", "type": "github" }, "original": { - "owner": "danth", + "owner": "nix-community", "repo": "stylix", "type": "github" } diff --git a/flake.nix b/flake.nix index 26bb3fa..9b15c7a 100644 --- a/flake.nix +++ b/flake.nix @@ -107,7 +107,7 @@ inputs.home-manager.follows = "home-manager"; }; - stylix.url = "github:danth/stylix"; + stylix.url = "github:nix-community/stylix"; emacs-overlay = { url = "github:nix-community/emacs-overlay"; diff --git a/modules/user/office/default.nix b/modules/user/office/default.nix index 7c7aa46..29c471d 100644 --- a/modules/user/office/default.nix +++ b/modules/user/office/default.nix @@ -12,7 +12,7 @@ in { config = lib.mkIf cfg.enable { home.packages = with pkgs; [ shared-mime-info - nautilus + kdePackages.dolphin libreoffice-still mate.atril xournalpp diff --git a/modules/user/stylix/default.nix b/modules/user/stylix/default.nix index ac1db73..3eca713 100644 --- a/modules/user/stylix/default.nix +++ b/modules/user/stylix/default.nix @@ -92,6 +92,8 @@ in stylix.targets.kitty.enable = true; stylix.targets.gtk.enable = true; + stylix.targets.kde.enable = true; + stylix.targets.qt.enable = true; home.file = { ".config/qt5ct/colors/oomox-current.conf".source = config.lib.stylix.colors { @@ -106,17 +108,10 @@ in template = builtins.readFile ./Trolltech.conf.mustache; extension = ""; }; - ".config/qt5ct/qt5ct.conf".text = pkgs.lib.mkBefore (builtins.readFile ./qt5ct.conf); }; home.packages = with pkgs; [ kdePackages.breeze kdePackages.breeze-icons pkgs.noto-fonts-monochrome-emoji ]; - qt = { - #enable = true; - style.package = pkgs.kdePackages.breeze; - style.name = "breeze-dark"; - platformTheme.name = "kde"; - }; fonts.fontconfig.defaultFonts = { monospace = [ config.stylix.fonts.monospace.name ]; From e1a29072eba6526734bd1d0a6079c0a7cf858b03 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 31 Aug 2025 18:09:14 -0500 Subject: [PATCH 283/317] More scratch buffer functions --- modules/user/emacs/init.el | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 6758d3f..bf8cc2c 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -244,8 +244,30 @@ (progn (select-window (scratch-plus-switch nil))))) + (defun scratch-plus-only () + (interactive) + (if (projectile-project-p) + (progn + (select-window (scratch-plus-switch-project nil))) + (progn + (select-window (scratch-plus-switch nil)))) + (delete-other-windows)) + + (defun scratch-plus-main-toggle () + (interactive) + (select-window (scratch-plus-switch nil))) + + + (defun scratch-plus-main-only () + (interactive) + (select-window (scratch-plus-switch nil)) + (delete-other-windows)) + ;; File and buffer keybinds (evil-define-key 'motion 'global (kbd "x") 'scratch-plus-toggle) + (evil-define-key 'motion 'global (kbd "X") 'scratch-plus-main-toggle) + (evil-define-key 'motion 'global (kbd "z") 'scratch-plus-only) + (evil-define-key 'motion 'global (kbd "Z") 'scratch-plus-main-only) (evil-define-key 'motion 'global (kbd ".") 'find-file) (evil-define-key 'motion 'global (kbd "bi") 'ibuffer) (evil-define-key 'motion 'global (kbd "bd") 'evil-delete-buffer) From 90719e9a9370e792e458be20012d4ecbd669f297 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 31 Aug 2025 18:09:26 -0500 Subject: [PATCH 284/317] Finalize updates --- flake.lock | 8 ++++---- hosts/snowfire/home.nix | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index 7d7745f..0b87cfd 100644 --- a/flake.lock +++ b/flake.lock @@ -990,11 +990,11 @@ ] }, "locked": { - "lastModified": 1756429289, - "narHash": "sha256-yOAerEZpBOhZAk9ygSDMAXTanNaBXJLA+TlF9iUtHM4=", + "lastModified": 1756567946, + "narHash": "sha256-pFy3cBSsymPXUc1BYDllYvyqX3a7l3vkF5YXVzmWoiY=", "ref": "refs/heads/main", - "rev": "fbe2e9cfaf3e2e590a60eb785127f732492f05d2", - "revCount": 35, + "rev": "a050e2da4df9f56bcff3b7fb1b5c86bd4fc6dbbe", + "revCount": 36, "type": "git", "url": "file://path:/etc/nixos.secrets" }, diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index 71c9abf..ed1f8bc 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -17,7 +17,6 @@ vscodium.enable = true; yazi.enable = true; git.enable = true; - ai.enable = true; engineering.enable = true; art.enable = true; flatpak.enable = false; From eac2cd88eaab71be039d06575c6560f994fd59a3 Mon Sep 17 00:00:00 2001 From: Emmet Date: Tue, 2 Sep 2025 20:18:52 -0500 Subject: [PATCH 285/317] work updates --- hosts/zenith/configuration.nix | 3 +++ hosts/zenith/home.nix | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/hosts/zenith/configuration.nix b/hosts/zenith/configuration.nix index 050b9d2..1293f29 100644 --- a/hosts/zenith/configuration.nix +++ b/hosts/zenith/configuration.nix @@ -46,6 +46,9 @@ }; }; + programs.localsend.enable = true; + programs.localsend.openFirewall = true; + home-manager.users.emmet.userSettings = { name = "Emmet"; }; diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 9954ab1..73ae75d 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -26,6 +26,7 @@ music.enable = true; office.enable = true; recording.enable = true; + remote.enable = true; virtualization = { virtualMachines.enable = true; }; @@ -41,11 +42,11 @@ }; home.packages = with pkgs; [ - openldap ldapvi rclone teams-for-linux + openldap ldapvi rclone teams-for-linux rpi-imager freerdp tigervnc unixtools.xxd ]; home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable { - AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card0"; + AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card1"; }; wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { From a4e8b952c6f68d7f38155365423f23396dcc5eb5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 6 Sep 2025 18:08:27 -0500 Subject: [PATCH 286/317] some fixes --- hosts/snowfire/home.nix | 2 +- modules/system/nix/default.nix | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index ed1f8bc..12de12e 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -41,7 +41,7 @@ }; home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable { - AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card0:/dev/dri/card1"; + AQ_DRM_DEVICES = lib.mkForce "/dev/dri/card1:/dev/dri/card2"; }; wayland.windowManager.hyprland = lib.mkIf config.userSettings.hyprland.enable { diff --git a/modules/system/nix/default.nix b/modules/system/nix/default.nix index c02682f..543e1c0 100644 --- a/modules/system/nix/default.nix +++ b/modules/system/nix/default.nix @@ -20,6 +20,24 @@ download-buffer-size = 500000000; }; }; + programs.nix-ld = { + enable = true; + #Include libstdc++ in the nix-ld profile + libraries = [ + pkgs.stdenv.cc.cc + pkgs.zlib + pkgs.fuse3 + pkgs.icu + pkgs.nss + pkgs.openssl + pkgs.curl + pkgs.expat + pkgs.xorg.libX11 + pkgs.vulkan-headers + pkgs.vulkan-loader + pkgs.vulkan-tools + ]; + }; system.stateVersion = "22.11"; }; } From d6cc3de97c77df662f72da1f924d02aa69f8923a Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 7 Sep 2025 19:09:55 -0500 Subject: [PATCH 287/317] added web-mode --- modules/user/emacs/default.nix | 21 +++++++++++++++++++++ modules/user/emacs/init.el | 12 ++++++++++++ 2 files changed, 33 insertions(+) diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index 3f6ca6c..b1983dc 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -38,6 +38,27 @@ in { org-roam org-node org-node-fakeroam vterm vterm-toggle sudo-edit direnv + (epkgs.callPackage ( + { lib, fetchurl, trivialBuild }: + + trivialBuild { + pname = "web-mode"; + version = "17.3.20"; + + src = builtins.fetchGit { + url = "https://github.com/fxbois/web-mode.git"; + rev = "0c83581d1e93d1d802c730a1d5e90cd1c740e1b2"; + ref = "main"; + }; + + meta = with lib; { + description = "web template editing mode for emacs"; + homepage = "https://web-mode.org/"; + license = licenses.gpl3; + platforms = platforms.all; + }; + } + ) {}) gdscript-mode nix-mode python python-mode diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index bf8cc2c..1f8a8a8 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -162,6 +162,18 @@ :config (ultra-scroll-mode 1)) +(use-package web-mode + :mode + (("\\.phtml\\'" . web-mode) + ("\\.php\\'" . web-mode) + ("\\.svelte\\'" . web-mode) + ("\\.tpl\\'" . web-mode) + ("\\.[agj]sp\\'" . web-mode) + ("\\.as[cp]x\\'" . web-mode) + ("\\.erb\\'" . web-mode) + ("\\.mustache\\'" . web-mode) + ("\\.djhtml\\'" . web-mode))) + ;; Magit (use-package magit :commands (magit magit-status) From 0fbac317f5a0dc8891bee9f9dab94734ce369178 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 7 Sep 2025 19:10:02 -0500 Subject: [PATCH 288/317] Updated system --- flake.lock | 167 ++++++++++++++++-------------- flake.nix | 3 +- modules/system/gaming/default.nix | 10 +- 3 files changed, 99 insertions(+), 81 deletions(-) diff --git a/flake.lock b/flake.lock index 0b87cfd..7b92e9d 100644 --- a/flake.lock +++ b/flake.lock @@ -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": { @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1756051903, - "narHash": "sha256-98Bn6BTV0SC0sCe6IpwRw8gsPR5T7Z8TW/gU74FbHwU=", + "lastModified": 1757086236, + "narHash": "sha256-bcQnByOCtEbdKQmtaESIM4xrPakuhrpCIqeh79UDUxE=", "owner": "StevenBlack", "repo": "hosts", - "rev": "64ee012b7ec917fcf654e45d3442a9bf53901410", + "rev": "b0781e7975c0c09fe7e33fbcf9222193c9f36a25", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1756419218, - "narHash": "sha256-bD10TLSG2KljGpW/HpVPa6wIMjjwQ69IjeaRWP1QE0k=", + "lastModified": 1757270623, + "narHash": "sha256-tSGCFMKzbhqByFOfUtmnv8BOz2pB5hDtkYt5i0LXQGA=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "cf5f934ea48b4a3048febc0132ffc628a0fde759", + "rev": "6ce91909eb3ef6ece9ab2ed24fc69928883c5b68", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1756400986, - "narHash": "sha256-tWJrNoOk6buV4dktEOVevKZymgp/NZDNYusUyuH/WhA=", + "lastModified": 1757265531, + "narHash": "sha256-qivcU4dbflK4DR703s0YlmOzk365zKUJKzdei8oBdWE=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "452a76945fd25463c5855a8eb419f0580104cef1", + "rev": "eabe03335ec98f151eefcdbe859abacfeea5e7f5", "type": "github" }, "original": { @@ -162,11 +162,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1748383148, - "narHash": "sha256-pGvD/RGuuPf/4oogsfeRaeMm6ipUIznI2QSILKjKzeA=", + "lastModified": 1756083905, + "narHash": "sha256-UqYGTBgI5ypGh0Kf6zZjom/vABg7HQocB4gmxzl12uo=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "4eb2714fbed2b80e234312611a947d6cb7d70caf", + "rev": "b655eaf16d4cbec9c3472f62eee285d4b419a808", "type": "github" }, "original": { @@ -199,11 +199,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": { @@ -289,11 +289,11 @@ ] }, "locked": { - "lastModified": 1756261190, - "narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=", + "lastModified": 1757075491, + "narHash": "sha256-a+NMGl5tcvm+hyfSG2DlVPa8nZLpsumuRj1FfcKb2mQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "77f348da3176dc68b20a73dab94852a417daf361", + "rev": "f56bf065f9abedc7bc15e1f2454aa5c8edabaacf", "type": "github" }, "original": { @@ -309,11 +309,11 @@ ] }, "locked": { - "lastModified": 1756261190, - "narHash": "sha256-eiy0klFK5EVJLNilutR7grsZN/7Itj9DyD75eyOf83k=", + "lastModified": 1757256385, + "narHash": "sha256-WK7tOhWwr15mipcckhDg2no/eSpM1nIh4C9le8HgHhk=", "owner": "nix-community", "repo": "home-manager", - "rev": "77f348da3176dc68b20a73dab94852a417daf361", + "rev": "f35703b412c67b48e97beb6e27a6ab96a084cd37", "type": "github" }, "original": { @@ -420,9 +420,7 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": [ - "nixpkgs" - ], + "nixpkgs": "nixpkgs_2", "pre-commit-hooks": "pre-commit-hooks", "systems": "systems", "xdph": "xdph" @@ -600,16 +598,17 @@ "hyprutils": "hyprutils_2", "hyprwayland-scanner": "hyprwayland-scanner_2", "nixpkgs": [ + "hyprland", "nixpkgs" ], "systems": "systems_2" }, "locked": { - "lastModified": 1756305651, - "narHash": "sha256-KttBtdPHDCuD+BT0da8DmBarv6k+9GA9INpeDLLgpc8=", + "lastModified": 1756969494, + "narHash": "sha256-gpTDaJT8CSTqumMdENIw4x+mmbeoP1D3ywuAaOaRfac=", "ref": "refs/heads/main", - "rev": "8d0e56998e299ae42f3fd8ede5bb5c396193cdbc", - "revCount": 388, + "rev": "04cfdc4e5bb0e53036e70cc20922ab346ce165cd", + "revCount": 390, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -727,11 +726,11 @@ ] }, "locked": { - "lastModified": 1756201372, - "narHash": "sha256-bK5j5cwJgO5AZXlDl5AgISzpOv9YV1Fcv2nDr9RW/5o=", + "lastModified": 1757052778, + "narHash": "sha256-rYszJwY0EArAqK6q0i5bB1zxNCNRk6gVmD9SIvnoXW8=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "9f6745bd704ab7f2617d41c2b02f4fd5f9ed0e89", + "rev": "ceaa413a68f28bbf6731464594fdb2c3513e9110", "type": "github" }, "original": { @@ -765,11 +764,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756266583, - "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", - "owner": "NixOS", + "lastModified": 1757238739, + "narHash": "sha256-ovEq9v+Xc+oQH1zvQo28rT/YVqMQK2TRgUcNanvo2Zk=", + "owner": "PedroHLC", "repo": "nixpkgs", - "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "rev": "6d8fca2c92488ff860524dd3400aa90a3310123e", "type": "github" }, "original": { @@ -812,11 +811,27 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1756266583, - "narHash": "sha256-cr748nSmpfvnhqSXPiCfUPxRz2FJnvf/RjJGvFfaCsM=", + "lastModified": 1752687322, + "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a6d5427d99ec71c64f0b93d45778c889005d9c2", + "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1757068644, + "narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9", "type": "github" }, "original": { @@ -825,7 +840,7 @@ "type": "indirect" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1744536153, "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", @@ -841,13 +856,13 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { - "lastModified": 1751792365, - "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", + "lastModified": 1756819007, + "narHash": "sha256-12V64nKG/O/guxSYnr5/nq1EfqwJCdD2+cIGmhz3nrE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", + "rev": "aaff8c16d7fc04991cac6245bee1baa31f72b1e1", "type": "github" }, "original": { @@ -869,11 +884,11 @@ ] }, "locked": { - "lastModified": 1751906969, - "narHash": "sha256-BSQAOdPnzdpOuCdAGSJmefSDlqmStFNScEnrWzSqKPw=", + "lastModified": 1756961635, + "narHash": "sha256-hETvQcILTg5kChjYNns1fD5ELdsYB/VVgVmBtqKQj9A=", "owner": "nix-community", "repo": "NUR", - "rev": "ddb679f4131e819efe3bbc6457ba19d7ad116f25", + "rev": "6ca27b2654ac55e3f6e0ca434c1b4589ae22b370", "type": "github" }, "original": { @@ -892,11 +907,11 @@ ] }, "locked": { - "lastModified": 1754501628, - "narHash": "sha256-FExJ54tVB5iu7Dh2tLcyCSWpaV+lmUzzWKZUkemwXvo=", + "lastModified": 1756632588, + "narHash": "sha256-ydam6eggXf3ZwRutyCABwSbMAlX+5lW6w1SVZQ+kfSo=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "cca090f8115c4172b9aef6c5299ae784bdd5e133", + "rev": "d47428e5390d6a5a8f764808a4db15929347cd77", "type": "github" }, "original": { @@ -936,7 +951,7 @@ "home-manager": "home-manager_2", "hyprland": "hyprland", "hyprlock": "hyprlock", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "nixpkgs-stable": "nixpkgs-stable_2", "plasma-manager": "plasma-manager", "rust-overlay": "rust-overlay_2", @@ -952,11 +967,11 @@ ] }, "locked": { - "lastModified": 1756262090, - "narHash": "sha256-PQHSup4d0cVXxJ7mlHrrxBx1WVrmudKiNQgnNl5xRas=", + "lastModified": 1757125853, + "narHash": "sha256-noKkYHKpT5lpvNSYrlH56d8cedthZfs010Uv6vTqLT4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "df7ea78aded79f195a92fc5423de96af2b8a85d1", + "rev": "8b70793a6be183536a5d562056dac10b7b36820d", "type": "github" }, "original": { @@ -967,14 +982,14 @@ }, "rust-overlay_2": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1756348497, - "narHash": "sha256-xJp3VnoYh4kpsaKFO/7SsGbwOz7pI1ZmjbqpXEuR2cw=", + "lastModified": 1757212513, + "narHash": "sha256-ZTHwY7u8BQF1JUazhGk+ftCjsS57Ht6KSnnkxQoUBA8=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "0adf92c70d23fb4f703aea5d3ebb51ac65994f7f", + "rev": "a8c2f9348abb14647d8a4899d1b3acd0155ce2cd", "type": "github" }, "original": { @@ -990,10 +1005,10 @@ ] }, "locked": { - "lastModified": 1756567946, - "narHash": "sha256-pFy3cBSsymPXUc1BYDllYvyqX3a7l3vkF5YXVzmWoiY=", + "lastModified": 1757277266, + "narHash": "sha256-m+221GCxVOQ7bdAlbjgbjNVk+CYTji9wNZqP5gBaM2I=", "ref": "refs/heads/main", - "rev": "a050e2da4df9f56bcff3b7fb1b5c86bd4fc6dbbe", + "rev": "c1f3de3e7b089177d9dfd0189d190e2e5a467440", "revCount": 36, "type": "git", "url": "file://path:/etc/nixos.secrets" @@ -1012,7 +1027,7 @@ "firefox-gnome-theme": "firefox-gnome-theme", "flake-parts": "flake-parts", "gnome-shell": "gnome-shell", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "nur": "nur", "systems": "systems_3", "tinted-foot": "tinted-foot", @@ -1022,11 +1037,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1755997543, - "narHash": "sha256-/fejmCQ7AWa655YxyPxRDbhdU7c5+wYsFSjmEMXoBCM=", + "lastModified": 1757172691, + "narHash": "sha256-VOn/s24rb+iO6auhmGfT5kyr0ixRK6weBsNCKkGo2yY=", "owner": "nix-community", "repo": "stylix", - "rev": "f47c0edcf71e802378b1b7725fa57bb44fe85ee8", + "rev": "9991299fe9aad330fb6b96bb58def37033271177", "type": "github" }, "original": { @@ -1116,11 +1131,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1750770351, - "narHash": "sha256-LI+BnRoFNRa2ffbe3dcuIRYAUcGklBx0+EcFxlHj0SY=", + "lastModified": 1754779259, + "narHash": "sha256-8KG2lXGaXLUE0F/JVwLQe7kOVm21IDfNEo0gfga5P4M=", "owner": "tinted-theming", "repo": "schemes", - "rev": "5a775c6ffd6e6125947b393872cde95867d85a2a", + "rev": "097d751b9e3c8b97ce158e7d141e5a292545b502", "type": "github" }, "original": { @@ -1132,11 +1147,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1751159871, - "narHash": "sha256-UOHBN1fgHIEzvPmdNMHaDvdRMgLmEJh2hNmDrp3d3LE=", + "lastModified": 1754788770, + "narHash": "sha256-LAu5nBr7pM/jD9jwFc6/kyFY4h7Us4bZz7dvVvehuwo=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "bded5e24407cec9d01bd47a317d15b9223a1546c", + "rev": "fb2175accef8935f6955503ec9dd3c973eec385c", "type": "github" }, "original": { @@ -1148,11 +1163,11 @@ "tinted-zed": { "flake": false, "locked": { - "lastModified": 1751158968, - "narHash": "sha256-ksOyv7D3SRRtebpXxgpG4TK8gZSKFc4TIZpR+C98jX8=", + "lastModified": 1755613540, + "narHash": "sha256-zBFrrTxHLDMDX/OYxkCwGGbAhPXLi8FrnLhYLsSOKeY=", "owner": "tinted-theming", "repo": "base16-zed", - "rev": "86a470d94204f7652b906ab0d378e4231a5b3384", + "rev": "937bada16cd3200bdbd3a2f5776fc3b686d5cba0", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 9b15c7a..0e7a627 100644 --- a/flake.nix +++ b/flake.nix @@ -92,13 +92,12 @@ hyprland = { url = "github:hyprwm/Hyprland/v0.50.1?submodules=true"; - inputs.nixpkgs.follows = "nixpkgs"; }; hyprlock = { type = "git"; url = "https://code.hyprland.org/hyprwm/hyprlock.git"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "hyprland/nixpkgs"; }; plasma-manager = { diff --git a/modules/system/gaming/default.nix b/modules/system/gaming/default.nix index 3f27829..1c4336a 100644 --- a/modules/system/gaming/default.nix +++ b/modules/system/gaming/default.nix @@ -11,7 +11,7 @@ in { }; config = lib.mkIf cfg.enable { - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-unwrapped" "steam-jupiter-unwrapped" "steamdeck-hw-theme" ]; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "steam" "steam-unwrapped" "steam-jupiter-unwrapped" "steamdeck-hw-theme" "xow_dongle-firmware" ]; nixpkgs.config.packageOverrides = pkgs: { steam = pkgs.steam.override { extraPkgs = pkgs: with pkgs; [ @@ -108,9 +108,13 @@ in { FastConnectable = true; }; }; - hardware.xpadneo.enable = true; + # FIXME https://github.com/NixOS/nixpkgs/issues/378447 + hardware.xone.enable = true; + #hardware.xpadneo.enable = true; boot = { - extraModulePackages = with config.boot.kernelPackages; [ xpadneo ]; + # FIXME https://github.com/NixOS/nixpkgs/issues/378447 + extraModulePackages = with config.boot.kernelPackages; [ xone ]; + #extraModulePackages = with config.boot.kernelPackages; [ xpadneo ]; extraModprobeConfig = '' options bluetooth disable_ertm=Y ''; From 4bcd9efc99e3fd15483820b0e4867142d674c8af Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 7 Sep 2025 19:20:21 -0500 Subject: [PATCH 289/317] more efficient projectile --- modules/user/emacs/init.el | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index 1f8a8a8..f6d0f7c 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -195,8 +195,16 @@ ;; Projectile (use-package projectile + :custom + (projectile-switch-project-action 'magit-status) :init - (projectile-mode +1)) + (projectile-mode +1) + ;; Project keybinds + (defun projectile-switch-project-commander () + (interactive) + (projectile-switch-project t)) + (def-projectile-commander-method ?g "Open magit status" (magit-status)) + (def-projectile-commander-method ?/ "Grep through project" (projectile-grep))) ;; Being able to undo is nice... (use-package undo-fu) @@ -309,8 +317,8 @@ (progn (dired-omit-mode 1) (setq dired-show-dotfiles nil)))) (evil-define-key 'normal dired-mode-map (kbd "H") 'toggle-dired-omit-mode) - ;; Project keybinds - (evil-define-key 'motion 'global (kbd "pp") 'projectile-switch-project) + (evil-define-key 'motion 'global (kbd "pp") 'projectile-switch-project-commander) + (evil-define-key 'motion 'global (kbd "pg") 'projectile-switch-project) (evil-define-key 'motion 'global (kbd "pf") 'projectile-find-file) (evil-define-key 'motion 'global (kbd "pa") 'projectile-add-known-project) (evil-define-key 'motion 'global (kbd "/") 'projectile-grep) From 5dee28b5c83008bcc371657e15386b260b45978c Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 7 Sep 2025 20:48:53 -0500 Subject: [PATCH 290/317] Fix hyprland... --- flake.lock | 31 ++++++++----------------------- flake.nix | 3 ++- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 7b92e9d..9bf472a 100644 --- a/flake.lock +++ b/flake.lock @@ -420,7 +420,9 @@ "hyprlang": "hyprlang", "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs_2", + "nixpkgs": [ + "nixpkgs" + ], "pre-commit-hooks": "pre-commit-hooks", "systems": "systems", "xdph": "xdph" @@ -598,7 +600,6 @@ "hyprutils": "hyprutils_2", "hyprwayland-scanner": "hyprwayland-scanner_2", "nixpkgs": [ - "hyprland", "nixpkgs" ], "systems": "systems_2" @@ -810,22 +811,6 @@ } }, "nixpkgs_2": { - "locked": { - "lastModified": 1752687322, - "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { "locked": { "lastModified": 1757068644, "narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=", @@ -840,7 +825,7 @@ "type": "indirect" } }, - "nixpkgs_4": { + "nixpkgs_3": { "locked": { "lastModified": 1744536153, "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", @@ -856,7 +841,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { "lastModified": 1756819007, "narHash": "sha256-12V64nKG/O/guxSYnr5/nq1EfqwJCdD2+cIGmhz3nrE=", @@ -951,7 +936,7 @@ "home-manager": "home-manager_2", "hyprland": "hyprland", "hyprlock": "hyprlock", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_2", "nixpkgs-stable": "nixpkgs-stable_2", "plasma-manager": "plasma-manager", "rust-overlay": "rust-overlay_2", @@ -982,7 +967,7 @@ }, "rust-overlay_2": { "inputs": { - "nixpkgs": "nixpkgs_4" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1757212513, @@ -1027,7 +1012,7 @@ "firefox-gnome-theme": "firefox-gnome-theme", "flake-parts": "flake-parts", "gnome-shell": "gnome-shell", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "nur": "nur", "systems": "systems_3", "tinted-foot": "tinted-foot", diff --git a/flake.nix b/flake.nix index 0e7a627..9b15c7a 100644 --- a/flake.nix +++ b/flake.nix @@ -92,12 +92,13 @@ hyprland = { url = "github:hyprwm/Hyprland/v0.50.1?submodules=true"; + inputs.nixpkgs.follows = "nixpkgs"; }; hyprlock = { type = "git"; url = "https://code.hyprland.org/hyprwm/hyprlock.git"; - inputs.nixpkgs.follows = "hyprland/nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs"; }; plasma-manager = { From c69616c4b5bc122fec5f8e62e69fcc60feb6daa2 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 13 Sep 2025 21:02:58 -0500 Subject: [PATCH 291/317] Trying some alternate ricing --- modules/user/hyprland/default.nix | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 5cc8eaf..a4a62fc 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -118,12 +118,12 @@ in general = { layout = "master"; - border_size = 3; + border_size = 0; "col.active_border" = if performance then "0xff${config.lib.stylix.colors.base0B}" else "0xff${config.lib.stylix.colors.base08} 0xff${config.lib.stylix.colors.base09} 0xff${config.lib.stylix.colors.base0A} 0xff${config.lib.stylix.colors.base0B} 0xff${config.lib.stylix.colors.base0C} 0xff${config.lib.stylix.colors.base0D} 0xff${config.lib.stylix.colors.base0E} 0xff${config.lib.stylix.colors.base0F} 270deg"; "col.inactive_border" = "0xff${config.lib.stylix.colors.base02}"; resize_on_border = true; - gaps_in = 6; - gaps_out = 6; + gaps_in = 14; + gaps_out = 14; }; group = { @@ -140,12 +140,14 @@ in shadow = { enabled = (!performance); }; - rounding = 8; + rounding = 0; dim_special = 0.0; + dim_inactive = true; + dim_strength = 0.15; blur = { enabled = (!performance); - size = 5; - passes = 2; + size = 10; + passes = 3; ignore_opacity = true; contrast = 1.17; brightness = (if (config.stylix.polarity == "dark") then "0.65" else "1.45"); @@ -789,8 +791,8 @@ backdrop = 0.0 border = config.lib.stylix.colors.base08 + "ff"; }; border = { - width = 3; - radius = 7; + width = 0; + radius = 0; }; }; services.fnott.enable = true; From 35cd781c3d4928ffb47ae01408f052e49eb467a5 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 13 Sep 2025 21:03:09 -0500 Subject: [PATCH 292/317] Learning some svelte --- modules/user/emacs/default.nix | 3 +++ modules/user/emacs/init.el | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index b1983dc..23d8bd8 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -38,6 +38,9 @@ in { org-roam org-node org-node-fakeroam vterm vterm-toggle sudo-edit direnv + svelte-mode + typescript-mode + sass-mode (epkgs.callPackage ( { lib, fetchurl, trivialBuild }: diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index f6d0f7c..c299790 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -166,7 +166,6 @@ :mode (("\\.phtml\\'" . web-mode) ("\\.php\\'" . web-mode) - ("\\.svelte\\'" . web-mode) ("\\.tpl\\'" . web-mode) ("\\.[agj]sp\\'" . web-mode) ("\\.as[cp]x\\'" . web-mode) @@ -174,6 +173,10 @@ ("\\.mustache\\'" . web-mode) ("\\.djhtml\\'" . web-mode))) +(use-package svelte-mode) +(use-package typescript-mode) +(use-package sass-mode) + ;; Magit (use-package magit :commands (magit magit-status) From 48e0909748881c574ac0b4721901827f45094ec0 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 13 Sep 2025 21:03:28 -0500 Subject: [PATCH 293/317] Updated system --- flake.lock | 142 +++++++++++++++--------------- flake.nix | 2 +- modules/system/kernel/default.nix | 1 + 3 files changed, 73 insertions(+), 72 deletions(-) diff --git a/flake.lock b/flake.lock index 9bf472a..318a1d1 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ ] }, "locked": { - "lastModified": 1752936381, - "narHash": "sha256-b191B12GRfvOT3odGpx5IFyGRPZbBrvCLADZfFHoJFg=", + "lastModified": 1755946532, + "narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=", "owner": "hyprwm", "repo": "aquamarine", - "rev": "141a991678b34e768f09b3a670c61a4c1d5d7110", + "rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada", "type": "github" }, "original": { @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1757086236, - "narHash": "sha256-bcQnByOCtEbdKQmtaESIM4xrPakuhrpCIqeh79UDUxE=", + "lastModified": 1757379139, + "narHash": "sha256-mhbhyvblJvSjlWj2WDTo35woFKF8PcQ17uSQPNJtbq8=", "owner": "StevenBlack", "repo": "hosts", - "rev": "b0781e7975c0c09fe7e33fbcf9222193c9f36a25", + "rev": "961747eaee730c1217083954c71277290cda72cf", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1757270623, - "narHash": "sha256-tSGCFMKzbhqByFOfUtmnv8BOz2pB5hDtkYt5i0LXQGA=", + "lastModified": 1757789833, + "narHash": "sha256-cpYiHtQ9ROyutuFEkqDNkc3sOVayEeNHAtCVQI5reoc=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "6ce91909eb3ef6ece9ab2ed24fc69928883c5b68", + "rev": "5a088eb3f84aeea80b2d240e25c4f72a0fbdea4e", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1757265531, - "narHash": "sha256-qivcU4dbflK4DR703s0YlmOzk365zKUJKzdei8oBdWE=", + "lastModified": 1757783175, + "narHash": "sha256-Wko6aZsgmfYF/dAmHuUDjCyGIWbmA0YfYW+9kaT/+Qc=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "eabe03335ec98f151eefcdbe859abacfeea5e7f5", + "rev": "5c2f59a0a0d9958d91e63974772f0a24a5150b8d", "type": "github" }, "original": { @@ -178,11 +178,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": { @@ -289,11 +289,11 @@ ] }, "locked": { - "lastModified": 1757075491, - "narHash": "sha256-a+NMGl5tcvm+hyfSG2DlVPa8nZLpsumuRj1FfcKb2mQ=", + "lastModified": 1757698511, + "narHash": "sha256-UqHHGydF/q3jfYXCpvYLA0TWtvByOp1NwOKCUjhYmPs=", "owner": "nix-community", "repo": "home-manager", - "rev": "f56bf065f9abedc7bc15e1f2454aa5c8edabaacf", + "rev": "a3fcc92180c7462082cd849498369591dfb20855", "type": "github" }, "original": { @@ -309,11 +309,11 @@ ] }, "locked": { - "lastModified": 1757256385, - "narHash": "sha256-WK7tOhWwr15mipcckhDg2no/eSpM1nIh4C9le8HgHhk=", + "lastModified": 1757784838, + "narHash": "sha256-6aHo1++bAFdW1z+0tfuxM9EmxHvon90mHo8/+izXMcY=", "owner": "nix-community", "repo": "home-manager", - "rev": "f35703b412c67b48e97beb6e27a6ab96a084cd37", + "rev": "6e28513cf2ee9a985c339fcef24d44f43d23456b", "type": "github" }, "original": { @@ -339,11 +339,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": { @@ -368,11 +368,11 @@ ] }, "locked": { - "lastModified": 1752149140, - "narHash": "sha256-gbh1HL98Fdqu0jJIWN4OJQN7Kkth7+rbkFpSZLm/62A=", + "lastModified": 1756891319, + "narHash": "sha256-/e6OXxzbAj/o97Z1dZgHre4bNaVjapDGscAujSCQSbI=", "owner": "hyprwm", "repo": "hyprgraphics", - "rev": "340494a38b5ec453dfc542c6226481f736cc8a9a", + "rev": "621e2e00f1736aa18c68f7dfbf2b9cff94b8cc4d", "type": "github" }, "original": { @@ -428,16 +428,16 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1752961026, - "narHash": "sha256-n5lzYUr1iQqzMmEF9oLL9BXMpOO9eVnY0AUCDrM93Yk=", + "lastModified": 1757508065, + "narHash": "sha256-JkUkn8p/sHqjmykejd9ZMUlYyaXA+Ve9IPA71ybqloY=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "4e242d086e20b32951fdc0ebcbfb4d41b5be8dcc", + "rev": "46174f78b374b6cea669c48880877a8bdcf7802f", "type": "github" }, "original": { "owner": "hyprwm", - "ref": "v0.50.1", + "ref": "v0.51.0", "repo": "Hyprland", "type": "github" } @@ -522,11 +522,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": { @@ -551,11 +551,11 @@ ] }, "locked": { - "lastModified": 1750371198, - "narHash": "sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE=", + "lastModified": 1756810301, + "narHash": "sha256-wgZ3VW4VVtjK5dr0EiK9zKdJ/SOqGIBXVG85C3LVxQA=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "cee01452bca58d6cadb3224e21e370de8bc20f0b", + "rev": "3d63fb4a42c819f198deabd18c0c2c1ded1de931", "type": "github" }, "original": { @@ -605,11 +605,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1756969494, - "narHash": "sha256-gpTDaJT8CSTqumMdENIw4x+mmbeoP1D3ywuAaOaRfac=", + "lastModified": 1757520666, + "narHash": "sha256-jYV+vPzfii7HSr3RSHMMP8msjvljsfOQd6JWpKjgLuw=", "ref": "refs/heads/main", - "rev": "04cfdc4e5bb0e53036e70cc20922ab346ce165cd", - "revCount": 390, + "rev": "450ae1e5f09fa95c970fb370c037e60d3b4783f2", + "revCount": 391, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -630,11 +630,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": { @@ -680,11 +680,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": { @@ -727,11 +727,11 @@ ] }, "locked": { - "lastModified": 1757052778, - "narHash": "sha256-rYszJwY0EArAqK6q0i5bB1zxNCNRk6gVmD9SIvnoXW8=", + "lastModified": 1757230583, + "narHash": "sha256-4uqu7sFPOaVTCogsxaGMgbzZ2vK40GVGMfUmrvK3/LY=", "owner": "Jovian-Experiments", "repo": "Jovian-NixOS", - "rev": "ceaa413a68f28bbf6731464594fdb2c3513e9110", + "rev": "fc3960e6c32c9d4f95fff2ef84444284d24d3bea", "type": "github" }, "original": { @@ -765,11 +765,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1757238739, - "narHash": "sha256-ovEq9v+Xc+oQH1zvQo28rT/YVqMQK2TRgUcNanvo2Zk=", + "lastModified": 1757598577, + "narHash": "sha256-+PccWxBVh1cFy2sDWHlpSBG+OP0b6o/DE2EzCxsB0ns=", "owner": "PedroHLC", "repo": "nixpkgs", - "rev": "6d8fca2c92488ff860524dd3400aa90a3310123e", + "rev": "7bbfafff0e9f1c9a0d10ca4d4c26aaa49a13d893", "type": "github" }, "original": { @@ -812,11 +812,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1757068644, - "narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=", + "lastModified": 1757487488, + "narHash": "sha256-zwE/e7CuPJUWKdvvTCB7iunV4E/+G0lKfv4kk/5Izdg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9", + "rev": "ab0f3607a6c7486ea22229b92ed2d355f1482ee0", "type": "github" }, "original": { @@ -915,11 +915,11 @@ ] }, "locked": { - "lastModified": 1750779888, - "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", + "lastModified": 1757239681, + "narHash": "sha256-E9spYi9lxm2f1zWQLQ7xQt8Xs2nWgr1T4QM7ZjLFphM=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", + "rev": "ab82ab08d6bf74085bd328de2a8722c12d97bd9d", "type": "github" }, "original": { @@ -952,11 +952,11 @@ ] }, "locked": { - "lastModified": 1757125853, - "narHash": "sha256-noKkYHKpT5lpvNSYrlH56d8cedthZfs010Uv6vTqLT4=", + "lastModified": 1757730403, + "narHash": "sha256-Jxl4OZRVsXs8JxEHUVQn3oPu6zcqFyGGKaFrlNgbzp0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "8b70793a6be183536a5d562056dac10b7b36820d", + "rev": "3232f7f8bd07849fc6f4ae77fe695e0abb2eba2c", "type": "github" }, "original": { @@ -970,11 +970,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1757212513, - "narHash": "sha256-ZTHwY7u8BQF1JUazhGk+ftCjsS57Ht6KSnnkxQoUBA8=", + "lastModified": 1757730403, + "narHash": "sha256-Jxl4OZRVsXs8JxEHUVQn3oPu6zcqFyGGKaFrlNgbzp0=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "a8c2f9348abb14647d8a4899d1b3acd0155ce2cd", + "rev": "3232f7f8bd07849fc6f4ae77fe695e0abb2eba2c", "type": "github" }, "original": { @@ -1022,11 +1022,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1757172691, - "narHash": "sha256-VOn/s24rb+iO6auhmGfT5kyr0ixRK6weBsNCKkGo2yY=", + "lastModified": 1757360005, + "narHash": "sha256-VwzdFEQCpYMU9mc7BSQGQe5wA1MuTYPJnRc9TQCTMcM=", "owner": "nix-community", "repo": "stylix", - "rev": "9991299fe9aad330fb6b96bb58def37033271177", + "rev": "834a743c11d66ea18e8c54872fbcc72ce48bc57f", "type": "github" }, "original": { @@ -1189,11 +1189,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/flake.nix b/flake.nix index 9b15c7a..16e49a4 100644 --- a/flake.nix +++ b/flake.nix @@ -91,7 +91,7 @@ home-manager.inputs.nixpkgs.follows = "nixpkgs"; hyprland = { - url = "github:hyprwm/Hyprland/v0.50.1?submodules=true"; + url = "github:hyprwm/Hyprland/v0.51.0?submodules=true"; inputs.nixpkgs.follows = "nixpkgs"; }; diff --git a/modules/system/kernel/default.nix b/modules/system/kernel/default.nix index f2351df..f34e1e5 100644 --- a/modules/system/kernel/default.nix +++ b/modules/system/kernel/default.nix @@ -25,6 +25,7 @@ in (lib.mkIf (cfg.variant == "hardened") pkgs.linuxPackages_cachyos-hardened) ]; services.scx.enable = true; + services.scx.package = pkgs.scx.rustscheds; services.scx.scheduler = "scx_lavd"; boot.consoleLogLevel = 0; }; From 62b02e96e037f765cb5383cf8732cfb7675feccd Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 13 Sep 2025 21:03:34 -0500 Subject: [PATCH 294/317] Trying to fix dumb amd gpu --- hosts/snowfire/hardware-configuration.nix | 38 +++++++++++++++++++---- 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/hosts/snowfire/hardware-configuration.nix b/hosts/snowfire/hardware-configuration.nix index c685a0f..0953f65 100644 --- a/hosts/snowfire/hardware-configuration.nix +++ b/hosts/snowfire/hardware-configuration.nix @@ -17,7 +17,38 @@ boot.kernelParams = [ "amd_pstate=active" "acpi_osi=Linux" "acpi_wake=USB0" ]; boot.extraModulePackages = with config.boot.kernelPackages; [ zenpower ]; networking.wireguard.enable = true; - hardware.opengl.enable = true; + # https://wiki.nixos.org/wiki/Mesa + hardware = { + graphics = + let + fn = oa: { + nativeBuildInputs = oa.nativeBuildInputs ++ [ pkgs.glslang ]; + mesonFlags = oa.mesonFlags ++ [ "-Dvulkan-layers=device-select,overlay" ]; + # patches = oa.patches ++ [ ./mesa-vulkan-layer-nvidia.patch ]; See below + postInstall = oa.postInstall + '' + mv $out/lib/libVkLayer* $drivers/lib + + #Device Select layer + layer=VkLayer_MESA_device_select + substituteInPlace $drivers/share/vulkan/implicit_layer.d/''${layer}.json \ + --replace "lib''${layer}" "$drivers/lib/lib''${layer}" + + #Overlay layer + layer=VkLayer_MESA_overlay + substituteInPlace $drivers/share/vulkan/explicit_layer.d/''${layer}.json \ + --replace "lib''${layer}" "$drivers/lib/lib''${layer}" + ''; + }; + in + with pkgs; { + enable = true; + enable32Bit = true; + package = (mesa.overrideAttrs fn).drivers; + package32 = (pkgsi686Linux.mesa.overrideAttrs fn).drivers; + extraPackages = with pkgs; [ amdvlk ]; + extraPackages32 = with pkgs; [ driversi686Linux.amdvlk ]; + }; + }; hardware.opengl.extraPackages = [ pkgs.rocmPackages.clr.icd ]; hardware.opengl.extraPackages32 = [ ]; @@ -26,11 +57,6 @@ services.xserver.videoDrivers = lib.mkDefault [ "modesetting" ]; - hardware.graphics = { - enable = lib.mkDefault true; - enable32Bit = lib.mkDefault true; - }; - hardware.amdgpu.initrd.enable = true; hardware.amdgpu.opencl.enable = true; hardware.amdgpu.amdvlk.enable = true; From 02d584c12902bfe87cf71024e5ef5822e6804c43 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 14 Sep 2025 09:41:00 -0500 Subject: [PATCH 295/317] Add devenv --- modules/user/shell/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/user/shell/default.nix b/modules/user/shell/default.nix index d526ad6..438889e 100644 --- a/modules/user/shell/default.nix +++ b/modules/user/shell/default.nix @@ -57,7 +57,7 @@ in { home.packages = with pkgs; [ gnugrep gnused w3m bat eza bottom fd bc - direnv nix-direnv + direnv nix-direnv devenv ]; programs.neovim = { From e488b0212d6b98386d61bd48bcb7da55e87a1e18 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 14 Sep 2025 09:41:17 -0500 Subject: [PATCH 296/317] Fix weird bug with browser spawn keybind? --- modules/user/hyprland/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index a4a62fc..08fa14b 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -114,6 +114,7 @@ in "alacritty --class scratch_numbat -e numbat" "alacritty --class scratch_btm -e btm" "element-desktop" + "sleep 5 && hyprctl keyword bind SUPER,S,exec,${spawnBrowser}" ]; general = { @@ -231,7 +232,6 @@ in "SUPER,RETURN,exec,${term}" "SUPERSHIFT,RETURN,exec,${term} --class float_term" "SUPER,A,exec,${spawnEditor}" - "SUPER,S,exec,${spawnBrowser}" "SUPERCTRL,S,exec,container-open" "SUPERCTRL,P,pin" "SUPER,code:47,exec,fuzzel" @@ -308,6 +308,7 @@ in "SUPER,P,exec,keepmenu" "SUPERSHIFT,P,exec,hyprprofile-dmenu" "SUPERCTRL,R,exec,phoenix refresh" + "SUPER,S,exec,${spawnBrowser}" ]; bindm = [ @@ -766,6 +767,7 @@ backdrop = 0.0 valign = center } ''; + services.hyprpolkitagent.enable = true; services.swayosd.enable = true; services.swayosd.topMargin = 0.5; home.file.".config/nwg-launchers/nwggrid/terminal".text = "alacritty -e"; From c93198371758385a5539c475376e3cee623a7c51 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sun, 14 Sep 2025 09:41:32 -0500 Subject: [PATCH 297/317] Fix amdgpu --- hosts/snowfire/hardware-configuration.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hosts/snowfire/hardware-configuration.nix b/hosts/snowfire/hardware-configuration.nix index 0953f65..5a261a2 100644 --- a/hosts/snowfire/hardware-configuration.nix +++ b/hosts/snowfire/hardware-configuration.nix @@ -60,6 +60,9 @@ hardware.amdgpu.initrd.enable = true; hardware.amdgpu.opencl.enable = true; hardware.amdgpu.amdvlk.enable = true; + environment.sessionVariables = { + VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/radeon_icd.x86_64.json"; # fix for godot + }; # makes disk io not freeze the computer services.udev.extraRules = '' @@ -71,8 +74,8 @@ rocmEnv = pkgs.symlinkJoin { name = "rocm-combined"; paths = with pkgs.rocmPackages; [ - #rocblas - #hipblas + rocblas + hipblas clr ]; }; From d970b1f93383c44e6e2b19984c0d7961e983e49f Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 20 Sep 2025 07:26:26 -0500 Subject: [PATCH 298/317] Org node/roam fixes --- modules/user/emacs/init.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index c299790..cabaa47 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -958,7 +958,7 @@ Made for `org-tab-first-hook' in evil-mode." (setq org-roam-capture-templates '(("d" "default" plain "%?" :unnarrowed t :target (file+head "${slug}-%<%Y%m%d%H%M%S>.org" "#+title: ${title}")))) (evil-define-key 'motion 'global (kbd "N.") 'org-node-find) - (evil-define-key 'motion 'global (kbd "Nr") 'org-roam-refile) + (evil-define-key 'motion 'global (kbd "Nr") 'org-node-refile) (evil-define-key 'motion 'global (kbd "Nb") 'org-roam-buffer-toggle) (evil-define-key 'motion 'global (kbd "nrdd") 'org-roam-dailies-goto-date) (evil-define-key 'motion 'global (kbd "nrdt") 'org-roam-dailies-goto-today) @@ -968,6 +968,8 @@ Made for `org-tab-first-hook' in evil-mode." (use-package org-node :after (org org-roam) :config + (setq org-mem-do-sync-with-org-id t) + (org-mem-updater-mode) (setq org-node-extra-id-dirs '("~/Notes/")) (setq org-id-locations-file "~/Notes/.org-id-locations") (setq org-node-extra-id-dirs-exclude '("~/Notes/daily/")) From b75226279ddde6ffbd6391f13e61b8353885fbf1 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 20 Sep 2025 16:35:02 -0500 Subject: [PATCH 299/317] phoenix now aquires wakelock --- modules/system/phoenix/default.nix | 40 ++++++++++++++++-------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/modules/system/phoenix/default.nix b/modules/system/phoenix/default.nix index f3dd656..e825482 100644 --- a/modules/system/phoenix/default.nix +++ b/modules/system/phoenix/default.nix @@ -38,7 +38,7 @@ chown -R 0:0 ${config.systemSettings.dotfilesDir}; chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; pushd ${config.systemSettings.dotfilesDir} &> /dev/null; - nixos-rebuild switch; + systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild switch; popd &> /dev/null; exit 0; elif [ "$1" = "update" ]; then @@ -78,21 +78,21 @@ chown -R 0:0 ${config.systemSettings.dotfilesDir}; chown -R 0:0 ${config.systemSettings.secretsFlakeDir}; pushd ${config.systemSettings.dotfilesDir} &> /dev/null; - nixos-rebuild build --flake .#snowfire; - attic push emmet ./result; - rm ./result; - nixos-rebuild build --flake .#duskfall; - attic push emmet ./result; - rm ./result; - nixos-rebuild build --flake .#zenith; - attic push emmet ./result; - rm ./result; - nixos-rebuild build --flake .#stardust; - attic push emmet ./result; - rm ./result; - nixos-rebuild build --flake .#ori; - attic push emmet ./result; - rm ./result; + systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild build --flake .#snowfire; + systemd-inhibit --what sleep:idle:handle-lid-switch attic push emmet ./result; + systemd-inhibit --what sleep:idle:handle-lid-switch rm ./result; + systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild build --flake .#duskfall; + systemd-inhibit --what sleep:idle:handle-lid-switch attic push emmet ./result; + systemd-inhibit --what sleep:idle:handle-lid-switch rm ./result; + systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild build --flake .#zenith; + systemd-inhibit --what sleep:idle:handle-lid-switch attic push emmet ./result; + systemd-inhibit --what sleep:idle:handle-lid-switch rm ./result; + systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild build --flake .#stardust; + systemd-inhibit --what sleep:idle:handle-lid-switch attic push emmet ./result; + systemd-inhibit --what sleep:idle:handle-lid-switch rm ./result; + systemd-inhibit --what sleep:idle:handle-lid-switch nixos-rebuild build --flake .#ori; + systemd-inhibit --what sleep:idle:handle-lid-switch attic push emmet ./result; + systemd-inhibit --what sleep:idle:handle-lid-switch rm ./result; exit 0; elif [ "$1" = "lock" ]; then if [ "$#" -gt 1 ]; then @@ -113,16 +113,18 @@ echo "Warning: The 'gc' command only accepts one argument (collect_older_than)"; fi if [ "$2" = "full" ]; then - nix-collect-garbage --delete-old; + systemd-inhibit --what sleep:idle:handle-lid-switch nix-collect-garbage --delete-old; elif [ "$2" ]; then - nix-collect-garbage --delete-older-than $2; + systemd-inhibit --what sleep:idle:handle-lid-switch nix-collect-garbage --delete-older-than $2; else - nix-collect-garbage --delete-older-than 30d; + systemd-inhibit --what sleep:idle:handle-lid-switch nix-collect-garbage --delete-older-than 30d; fi exit 0; fi '') ]; + + # FIXME this thing doesn't work at all systemd.services."phoenix-system-builder" = lib.mkIf config.systemSettings.systemBuilder.enable { path = with pkgs; [ openssh git nix nixos-rebuild From fce49ba54e103f5660a47e1085b9a491feccd0fd Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 20 Sep 2025 16:35:26 -0500 Subject: [PATCH 300/317] Fixed some home dirs --- modules/user/xdg/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/user/xdg/default.nix b/modules/user/xdg/default.nix index 1d75a34..98c1f95 100644 --- a/modules/user/xdg/default.nix +++ b/modules/user/xdg/default.nix @@ -31,9 +31,11 @@ in { XDG_BOOK_DIR = "${config.home.homeDirectory}/Media/Books"; XDG_VM_DIR = "${config.home.homeDirectory}/Machines"; XDG_NOTES_DIR = "${config.home.homeDirectory}/Notes"; + XDG_KP_DIR = "${config.home.homeDirectory}/KP"; }; }; xdg.mime.enable = true; xdg.mimeApps.enable = true; + home.file.External.source = config.lib.file.mkOutOfStoreSymlink "/run/media/" + config.home.username; }; } From 601990c613d3f8a1c933d790e916bf450d096596 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 20 Sep 2025 16:35:33 -0500 Subject: [PATCH 301/317] Removed some todos --- modules/user/browser/qutebrowser.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/user/browser/qutebrowser.nix b/modules/user/browser/qutebrowser.nix index abb93c8..f70a137 100644 --- a/modules/user/browser/qutebrowser.nix +++ b/modules/user/browser/qutebrowser.nix @@ -309,7 +309,6 @@ config.bind(',m', 'hint links spawn mpv {hint-url}') config.bind(',co', 'spawn container-open') config.bind(',cf', 'hint links userscript container-open') -# TODO stylix user CSS # current_stylesheet_directory = '~/.config/qutebrowser/themes/' # current_stylesheet = base16_theme+'-all-sites.css' # current_stylesheet_path = current_stylesheet_directory + current_stylesheet From 0ca063ddde9d44755730fa3097e5974a35b88af7 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 20 Sep 2025 16:35:38 -0500 Subject: [PATCH 302/317] Updated system --- flake.lock | 82 +++++++++++++++++++++++++++--------------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/flake.lock b/flake.lock index 318a1d1..2507987 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1757379139, - "narHash": "sha256-mhbhyvblJvSjlWj2WDTo35woFKF8PcQ17uSQPNJtbq8=", + "lastModified": 1758115911, + "narHash": "sha256-Br2cR3VuXLzTisEnS0xC0Cl31N5zxf5gzecs/kC0yd8=", "owner": "StevenBlack", "repo": "hosts", - "rev": "961747eaee730c1217083954c71277290cda72cf", + "rev": "7583934e9ba322124b90b7ce1eb6ddfe937013b4", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1757789833, - "narHash": "sha256-cpYiHtQ9ROyutuFEkqDNkc3sOVayEeNHAtCVQI5reoc=", + "lastModified": 1758066113, + "narHash": "sha256-dfoSTG24e8rT18QEFa4IoPd1JaHSaWmBDobja4pT4Mo=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "5a088eb3f84aeea80b2d240e25c4f72a0fbdea4e", + "rev": "3dca6a170fc07d0fb265bc7268397cb55a05bc9b", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1757783175, - "narHash": "sha256-Wko6aZsgmfYF/dAmHuUDjCyGIWbmA0YfYW+9kaT/+Qc=", + "lastModified": 1758359238, + "narHash": "sha256-NfOX8r+4FXxxC2N+2qlDaFsvaYEKGL5SGyqxSkTw2n4=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "5c2f59a0a0d9958d91e63974772f0a24a5150b8d", + "rev": "516ffa347ff2ed3ea4b5283625ca0c6b1a1e31a3", "type": "github" }, "original": { @@ -289,11 +289,11 @@ ] }, "locked": { - "lastModified": 1757698511, - "narHash": "sha256-UqHHGydF/q3jfYXCpvYLA0TWtvByOp1NwOKCUjhYmPs=", + "lastModified": 1757920978, + "narHash": "sha256-Mv16aegXLulgyDunijP6SPFJNm8lSXb2w3Q0X+vZ9TY=", "owner": "nix-community", "repo": "home-manager", - "rev": "a3fcc92180c7462082cd849498369591dfb20855", + "rev": "11cc5449c50e0e5b785be3dfcb88245232633eb8", "type": "github" }, "original": { @@ -309,11 +309,11 @@ ] }, "locked": { - "lastModified": 1757784838, - "narHash": "sha256-6aHo1++bAFdW1z+0tfuxM9EmxHvon90mHo8/+izXMcY=", + "lastModified": 1758296614, + "narHash": "sha256-l60D1i0aaSqemy9dL7wP0ePMfcv/oZbeKpvUMY+q0kQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "6e28513cf2ee9a985c339fcef24d44f43d23456b", + "rev": "55b1f5b7b191572257545413b98e37abab2fdb00", "type": "github" }, "original": { @@ -605,11 +605,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1757520666, - "narHash": "sha256-jYV+vPzfii7HSr3RSHMMP8msjvljsfOQd6JWpKjgLuw=", + "lastModified": 1758124489, + "narHash": "sha256-YiVF/8Me3vVKJBEgGpQhn0HF09EWfXZGaWLzAaJBrO4=", "ref": "refs/heads/main", - "rev": "450ae1e5f09fa95c970fb370c037e60d3b4783f2", - "revCount": 391, + "rev": "7f769fa993cb492982d7bf25676c68ddbcc0268e", + "revCount": 395, "type": "git", "url": "https://code.hyprland.org/hyprwm/hyprlock.git" }, @@ -765,11 +765,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1757598577, - "narHash": "sha256-+PccWxBVh1cFy2sDWHlpSBG+OP0b6o/DE2EzCxsB0ns=", + "lastModified": 1758029758, + "narHash": "sha256-fKqsvznISxVSBo6aaiGGXMRiBG4IIuV3sSySxx80pcQ=", "owner": "PedroHLC", "repo": "nixpkgs", - "rev": "7bbfafff0e9f1c9a0d10ca4d4c26aaa49a13d893", + "rev": "4eb5897225c3d7e78a0b9d1542197ee7c8d270a5", "type": "github" }, "original": { @@ -812,11 +812,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1757487488, - "narHash": "sha256-zwE/e7CuPJUWKdvvTCB7iunV4E/+G0lKfv4kk/5Izdg=", + "lastModified": 1758277210, + "narHash": "sha256-iCGWf/LTy+aY0zFu8q12lK8KuZp7yvdhStehhyX1v8w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ab0f3607a6c7486ea22229b92ed2d355f1482ee0", + "rev": "8eaee110344796db060382e15d3af0a9fc396e0e", "type": "github" }, "original": { @@ -892,11 +892,11 @@ ] }, "locked": { - "lastModified": 1756632588, - "narHash": "sha256-ydam6eggXf3ZwRutyCABwSbMAlX+5lW6w1SVZQ+kfSo=", + "lastModified": 1758185783, + "narHash": "sha256-6fX2CG8PzdBNwJGBISnf/nVHUVMZdCsekT1mP672Uh8=", "owner": "nix-community", "repo": "plasma-manager", - "rev": "d47428e5390d6a5a8f764808a4db15929347cd77", + "rev": "6a7d78cebd9a0f84a508bec9bc47ac504c5f51f4", "type": "github" }, "original": { @@ -952,11 +952,11 @@ ] }, "locked": { - "lastModified": 1757730403, - "narHash": "sha256-Jxl4OZRVsXs8JxEHUVQn3oPu6zcqFyGGKaFrlNgbzp0=", + "lastModified": 1757930296, + "narHash": "sha256-Z9u5VszKs8rfEvg2AsFucWEjl7wMtAln9l1b78cfBh4=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "3232f7f8bd07849fc6f4ae77fe695e0abb2eba2c", + "rev": "09442765a05c2ca617c20ed68d9613da92a2d96b", "type": "github" }, "original": { @@ -970,11 +970,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1757730403, - "narHash": "sha256-Jxl4OZRVsXs8JxEHUVQn3oPu6zcqFyGGKaFrlNgbzp0=", + "lastModified": 1758335443, + "narHash": "sha256-2jaGMj32IckpZgBjn7kG4zyJl66T+2A1Fn2ppkHh91o=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "3232f7f8bd07849fc6f4ae77fe695e0abb2eba2c", + "rev": "f1ccb14649cf87e48051a6ac3a571b4a57d84ff3", "type": "github" }, "original": { @@ -990,11 +990,11 @@ ] }, "locked": { - "lastModified": 1757277266, - "narHash": "sha256-m+221GCxVOQ7bdAlbjgbjNVk+CYTji9wNZqP5gBaM2I=", + "lastModified": 1758405875, + "narHash": "sha256-jFeymQStcHvwNd4TNoo6v0eB0ZmFvYR+yF5SKcEBHPM=", "ref": "refs/heads/main", - "rev": "c1f3de3e7b089177d9dfd0189d190e2e5a467440", - "revCount": 36, + "rev": "f99bbebd7910062e544343013614456cd0875519", + "revCount": 37, "type": "git", "url": "file://path:/etc/nixos.secrets" }, @@ -1022,11 +1022,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1757360005, - "narHash": "sha256-VwzdFEQCpYMU9mc7BSQGQe5wA1MuTYPJnRc9TQCTMcM=", + "lastModified": 1757956156, + "narHash": "sha256-f0W7qbsCqpi6swQ5w8H+0YrAbNwsHgCFDkNRMTJjqrE=", "owner": "nix-community", "repo": "stylix", - "rev": "834a743c11d66ea18e8c54872fbcc72ce48bc57f", + "rev": "0ce0103b498bb22f899ed8862d8d7f9503ed9cdb", "type": "github" }, "original": { From 147aec1692acf550d16640757941b3ec5440c310 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 20 Sep 2025 17:13:53 -0500 Subject: [PATCH 303/317] Create allowedHosts to let specific hosts through blocklist --- modules/system/security/blocklist/default.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/system/security/blocklist/default.nix b/modules/system/security/blocklist/default.nix index ee9b216..e833486 100644 --- a/modules/system/security/blocklist/default.nix +++ b/modules/system/security/blocklist/default.nix @@ -1,12 +1,18 @@ { config, lib, inputs, ... }: let - blocklist = builtins.readFile "${inputs.blocklist-hosts}/alternates/gambling-porn/hosts"; + allowedHosts = config.systemSettings.security.blocklist.allowedHosts; + hostsFileDeletions = builtins.genList (x: "0.0.0.0 " + (builtins.elemAt allowedHosts x)) (builtins.length allowedHosts); + blocklist = builtins.replaceStrings hostsFileDeletions (builtins.genList (x: "") (builtins.length hostsFileDeletions)) (builtins.readFile "${inputs.blocklist-hosts}/alternates/gambling-porn/hosts"); cfg = config.systemSettings.security.blocklist; in { options = { systemSettings.security.blocklist = { enable = lib.mkEnableOption "Enable basic host blocking for bad websites"; + allowedHosts = lib.mkOption { + description = "List of hosts to allow (remove from blocklist)"; + type = lib.types.listOf lib.types.str; + }; }; }; From 316588308dce3afe79928bf5a1e0579bba0105f7 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 20 Sep 2025 17:14:21 -0500 Subject: [PATCH 304/317] Add packages to work computer --- hosts/zenith/home.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hosts/zenith/home.nix b/hosts/zenith/home.nix index 73ae75d..fdff4a3 100644 --- a/hosts/zenith/home.nix +++ b/hosts/zenith/home.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, pkgs-stable, ... }: { config = { @@ -42,7 +42,7 @@ }; home.packages = with pkgs; [ - openldap ldapvi rclone teams-for-linux rpi-imager freerdp tigervnc unixtools.xxd + openldap ldapvi rclone teams-for-linux rpi-imager freerdp pkgs-stable.tigervnc unixtools.xxd ]; home.sessionVariables = lib.mkIf config.userSettings.hyprland.enable { From c7be140c864d661e597b2b36c85260e57772c8b4 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 20 Sep 2025 17:15:15 -0500 Subject: [PATCH 305/317] Updated secrets --- flake.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/flake.lock b/flake.lock index 2507987..a1d3b63 100644 --- a/flake.lock +++ b/flake.lock @@ -990,11 +990,11 @@ ] }, "locked": { - "lastModified": 1758405875, - "narHash": "sha256-jFeymQStcHvwNd4TNoo6v0eB0ZmFvYR+yF5SKcEBHPM=", + "lastModified": 1758406446, + "narHash": "sha256-LO6ab6NcJmRm0xz21YbOAY43qTcos4fTOibw1XGnKYI=", "ref": "refs/heads/main", - "rev": "f99bbebd7910062e544343013614456cd0875519", - "revCount": 37, + "rev": "5406586a69cd2a66d674e962a4544647bf02aaa2", + "revCount": 38, "type": "git", "url": "file://path:/etc/nixos.secrets" }, From 8a2a6ccfdb0cbe8d24391e90d98dd3f3c70ed665 Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 20 Sep 2025 17:24:42 -0500 Subject: [PATCH 306/317] Forgot default value :| --- modules/system/security/blocklist/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/system/security/blocklist/default.nix b/modules/system/security/blocklist/default.nix index e833486..c2035ad 100644 --- a/modules/system/security/blocklist/default.nix +++ b/modules/system/security/blocklist/default.nix @@ -10,6 +10,7 @@ in { systemSettings.security.blocklist = { enable = lib.mkEnableOption "Enable basic host blocking for bad websites"; allowedHosts = lib.mkOption { + default = [ ]; description = "List of hosts to allow (remove from blocklist)"; type = lib.types.listOf lib.types.str; }; From 76788051dd65add27abc6d5f747edc9acd908aef Mon Sep 17 00:00:00 2001 From: Emmet Date: Sat, 20 Sep 2025 17:27:15 -0500 Subject: [PATCH 307/317] needs flatpaks --- hosts/stardust/configuration.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hosts/stardust/configuration.nix b/hosts/stardust/configuration.nix index cf130a7..97b84ee 100644 --- a/hosts/stardust/configuration.nix +++ b/hosts/stardust/configuration.nix @@ -14,7 +14,7 @@ printing.enable = true; # software - flatpak.enable = false; + flatpak.enable = true; gaming.enable = true; virtualization = { docker.enable = true; From 917cbe4a39234cac9562df0b17dd16989e1d1e8a Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 25 Sep 2025 20:23:03 -0500 Subject: [PATCH 308/317] Made orichalcum theme --- hosts/snowfire/configuration.nix | 2 +- modules/system/stylix/default.nix | 2 +- modules/themes/io/default.nix | 2 +- modules/themes/orichalcum/README.org | 8 ++++++++ modules/themes/orichalcum/default.nix | 26 ++++++++++++++++++++++++++ 5 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 modules/themes/orichalcum/README.org create mode 100644 modules/themes/orichalcum/default.nix diff --git a/hosts/snowfire/configuration.nix b/hosts/snowfire/configuration.nix index 4de8de3..17c9e0a 100644 --- a/hosts/snowfire/configuration.nix +++ b/hosts/snowfire/configuration.nix @@ -44,7 +44,7 @@ # style stylix = { enable = true; - theme = "io"; + theme = "orichalcum"; }; }; diff --git a/modules/system/stylix/default.nix b/modules/system/stylix/default.nix index c594d32..5fcab3d 100644 --- a/modules/system/stylix/default.nix +++ b/modules/system/stylix/default.nix @@ -10,7 +10,7 @@ in enable = lib.mkEnableOption "Enable stylix theming"; }; systemSettings.stylix.theme = lib.mkOption { - default = "io"; + default = "orichalcum"; type = lib.types.enum (builtins.attrNames (lib.filterAttrs (name: type: type == "directory") (builtins.readDir ../../themes))); description = "Theme for stylix to use system wide. A list of themes can be found in the `themes` directory."; }; diff --git a/modules/themes/io/default.nix b/modules/themes/io/default.nix index 2c0df78..4cecd67 100644 --- a/modules/themes/io/default.nix +++ b/modules/themes/io/default.nix @@ -3,7 +3,7 @@ slug = "io"; author = "LibrePhoenix (https://github.com/librephoenix)"; credits = "Forked from Fernando Marques (https://github.com/RakkiUwU) and Gabriel Fontes (https://github.com/Misterio77))"; - description = "Flagship theme of the LibrePhoenix Channel, named after one of Jupiter's moons"; + description = "Former flagship theme of the LibrePhoenix Channel, named after one of Jupiter's moons"; polarity = "dark"; backgroundUrl = "https://images.hdqwalls.com/wallpapers/aurora-s-embrace-a-borealis-beauty-in-anime-ub.jpg"; backgroundSha256 = "sha256-GjM/Bu0zispdtPCFPzAk+zGlKYYg5XwTTxZ0TXOW9Fg="; diff --git a/modules/themes/orichalcum/README.org b/modules/themes/orichalcum/README.org new file mode 100644 index 0000000..7ad2484 --- /dev/null +++ b/modules/themes/orichalcum/README.org @@ -0,0 +1,8 @@ +#+title: Orichalcum +#+author: Emmet + +"Orichalcum" theme, which is a fork of Uwunicorn originally by Fernando Marques ([[https://github.com/RakkiUwU]]) and Gabriel Fontes ([[https://github.com/Misterio77]]). + +[[https://raw.githubusercontent.com/librephoenix/nixos-config-screenshots/main/hyprland/uwunicorn.png]] + +[[https://wallpapers.com/images/hd/alluring-sunset-anime-scenery-r2gmgtcp8h9iwo9u.webp][Background Link]] diff --git a/modules/themes/orichalcum/default.nix b/modules/themes/orichalcum/default.nix new file mode 100644 index 0000000..f438ce9 --- /dev/null +++ b/modules/themes/orichalcum/default.nix @@ -0,0 +1,26 @@ +{ + scheme = "Orichalcum"; + slug = "orichalcum"; + author = "LibrePhoenix (https://github.com/librephoenix)"; + credits = "Forked from Fernando Marques (https://github.com/RakkiUwU) and Gabriel Fontes (https://github.com/Misterio77))"; + description = "Flagship theme of the LibrePhoenix Channel, named after a mythical metal"; + polarity = "dark"; + backgroundUrl = "https://wallpapers.com/images/hd/alluring-sunset-anime-scenery-r2gmgtcp8h9iwo9u.webp"; + backgroundSha256 = "sha256-jOd9SznQTa8AoO6cZGy0LhN8lBadrRf60FvyCEs2tLo="; + base00 = "#1a181a"; + base01 = "#262326"; + base02 = "#302c30"; + base03 = "#463f47"; + base04 = "#bfaab7"; + base05 = "#dbd7da"; + base06 = "#dbd7da"; + base07 = "#faf7f9"; + base08 = "#da4747"; + base09 = "#fd6d35"; + base0A = "#ffa846"; + base0B = "#fbc024"; + base0C = "#8049d5"; + base0D = "#b368ec"; + base0E = "#e27fc6"; + base0F = "#e64464"; +} From a8a0e1249d0be506b807d006001b2f34d4be6739 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 25 Sep 2025 20:23:14 -0500 Subject: [PATCH 309/317] this is helpful for colors.. --- modules/user/emacs/default.nix | 1 + modules/user/emacs/init.el | 2 ++ 2 files changed, 3 insertions(+) diff --git a/modules/user/emacs/default.nix b/modules/user/emacs/default.nix index 23d8bd8..0844cb3 100644 --- a/modules/user/emacs/default.nix +++ b/modules/user/emacs/default.nix @@ -41,6 +41,7 @@ in { svelte-mode typescript-mode sass-mode + rainbow-mode (epkgs.callPackage ( { lib, fetchurl, trivialBuild }: diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index cabaa47..a3f30ae 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -1078,5 +1078,7 @@ Made for `org-tab-first-hook' in evil-mode." :init (add-hook 'after-init-hook #'scratch-plus-mode)) +(use-package rainbow-mode) + (provide 'init) ;;; init.el ends here From 27d121a4124a387c8b169327248d25b1a1c1159d Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 25 Sep 2025 20:23:29 -0500 Subject: [PATCH 310/317] messing around with some ai --- hosts/snowfire/home.nix | 1 + modules/user/localai/default.nix | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/hosts/snowfire/home.nix b/hosts/snowfire/home.nix index 12de12e..19efe2a 100644 --- a/hosts/snowfire/home.nix +++ b/hosts/snowfire/home.nix @@ -29,6 +29,7 @@ virtualization = { virtualMachines.enable = true; }; + ai.enable = true; # wm hyprland.enable = true; diff --git a/modules/user/localai/default.nix b/modules/user/localai/default.nix index 7776ecf..5fe5971 100644 --- a/modules/user/localai/default.nix +++ b/modules/user/localai/default.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ...}: +{ config, lib, pkgs, pkgs-stable, ...}: let cfg = config.userSettings.ai; @@ -10,6 +10,13 @@ in { }; config = lib.mkIf cfg.enable { - home.packages = [ pkgs.local-ai ]; + home.packages = [ pkgs-stable.local-ai + (pkgs.writeScriptBin "aid" + '' + # ai daemon + pushd ~/.config/local-ai; + local-ai &> /dev/null & disown; + popd;'') + ]; }; } From 392b3619440949c846d614b2c13723e1804d86f3 Mon Sep 17 00:00:00 2001 From: Emmet Date: Thu, 25 Sep 2025 20:24:12 -0500 Subject: [PATCH 311/317] Some hyprland fixes --- modules/user/hyprland/default.nix | 34 ++++++++++++++++--------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index 08fa14b..f06b2a2 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -211,8 +211,6 @@ in }; bind = [ - "SUPER,code:9,exec,nwggrid-wrapper" - "SUPER,code:66,exec,nwggrid-wrapper" "SUPER,SPACE,fullscreen,1" "SUPERSHIFT,F,fullscreen,0" "SUPER,Y,workspaceopt,allfloat" @@ -247,20 +245,7 @@ in ''CTRL,code:107,exec,grim -g "$(slurp)" - | wl-copy'' ''SHIFTCTRL,code:107,exec,grim -g "$(slurp -o)" - | wl-copy'' "SUPERCTRL,code:107,exec,grim - | wl-copy" - ",code:122,exec,swayosd-client --output-volume lower" - ",code:123,exec,swayosd-client --output-volume raise" - ",code:121,exec,swayosd-client --output-volume mute-toggle" - ",code:256,exec,swayosd-client --output-volume mute-toggle" - "SHIFT,code:122,exec,swayosd-client --output-volume lower" - "SHIFT,code:123,exec,swayosd-client --output-volume raise" - ",code:232,exec,swayosd-client --brightness lower" - ",code:233,exec,swayosd-client --brightness raise" - ",code:237,exec,brightnessctl --device='asus::kbd_backlight' set 1-" - ",code:238,exec,brightnessctl --device='asus::kbd_backlight' set +1" - ",code:255,exec,airplane-mode" "SUPER,C,exec,wl-copy $(hyprpicker)" - "SUPERSHIFT,S,exec,systemctl suspend" - "SUPERCTRL,L,exec,loginctl lock-session" "SUPERCTRL,G,exec,hyprgamemode" "SUPER,H,movefocus,l" "SUPER,J,movefocus,d" @@ -311,6 +296,10 @@ in "SUPER,S,exec,${spawnBrowser}" ]; + bindr = [ + "SUPER,SUPER_L,exec,nwggrid-wrapper" + ]; + bindm = [ "SUPER,mouse:272,movewindow" "SUPER,mouse:273,resizewindow" @@ -318,6 +307,19 @@ in bindl = [ ",switch:on:Lid Switch,exec,loginctl lock-session" + "SUPERSHIFT,S,exec,systemctl suspend" + "SUPERCTRL,L,exec,loginctl lock-session" + ",code:122,exec,swayosd-client --output-volume lower" + ",code:123,exec,swayosd-client --output-volume raise" + ",code:121,exec,swayosd-client --output-volume mute-toggle" + ",code:256,exec,swayosd-client --output-volume mute-toggle" + "SHIFT,code:122,exec,swayosd-client --output-volume lower" + "SHIFT,code:123,exec,swayosd-client --output-volume raise" + ",code:232,exec,swayosd-client --brightness lower" + ",code:233,exec,swayosd-client --brightness raise" + ",code:237,exec,brightnessctl --device='asus::kbd_backlight' set 1-" + ",code:238,exec,brightnessctl --device='asus::kbd_backlight' set +1" + ",code:255,exec,airplane-mode" ]; windowrulev2 = [ @@ -666,7 +668,7 @@ bluetooth_more_cmd = "blueman-manager" style = "Solid" opacity = ${if performance then "1.0" else "0.7"} background_color = "#${config.lib.stylix.colors.base00}88" -primary_color = "#${config.lib.stylix.colors.base0B}" +primary_color = "#${config.lib.stylix.colors.base0A}" secondary_color = "#${config.lib.stylix.colors.base01}" success_color = "#${config.lib.stylix.colors.base0A}" danger_color = "#${config.lib.stylix.colors.base08}" From 0c43e51e603fbfcaffaf294a781c7de9b1ac2769 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 1 Oct 2025 18:41:12 -0500 Subject: [PATCH 312/317] Just use mesa.. --- hosts/snowfire/hardware-configuration.nix | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hosts/snowfire/hardware-configuration.nix b/hosts/snowfire/hardware-configuration.nix index 5a261a2..2c624a5 100644 --- a/hosts/snowfire/hardware-configuration.nix +++ b/hosts/snowfire/hardware-configuration.nix @@ -9,6 +9,8 @@ ]; services.fstrim.enable = true; + services.lact.enable = true; + #services.lact.settings = {}; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" "radeon" ]; boot.initrd.kernelModules = [ "radeon" ]; @@ -45,8 +47,8 @@ enable32Bit = true; package = (mesa.overrideAttrs fn).drivers; package32 = (pkgsi686Linux.mesa.overrideAttrs fn).drivers; - extraPackages = with pkgs; [ amdvlk ]; - extraPackages32 = with pkgs; [ driversi686Linux.amdvlk ]; + #extraPackages = with pkgs; [ amdvlk ]; + #extraPackages32 = with pkgs; [ driversi686Linux.amdvlk ]; }; }; hardware.opengl.extraPackages = [ pkgs.rocmPackages.clr.icd ]; @@ -59,7 +61,8 @@ hardware.amdgpu.initrd.enable = true; hardware.amdgpu.opencl.enable = true; - hardware.amdgpu.amdvlk.enable = true; + #hardware.amdgpu.amdvlk.enable = true; + #hardware.amdgpu.overdrive.enable = true; environment.sessionVariables = { VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/radeon_icd.x86_64.json"; # fix for godot }; From dd3d042c0f3ec4bc21d574ee3c1e3f2a9cadcd19 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 1 Oct 2025 18:41:23 -0500 Subject: [PATCH 313/317] For my new site using quartz --- modules/user/emacs/init.el | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/user/emacs/init.el b/modules/user/emacs/init.el index a3f30ae..2bea792 100644 --- a/modules/user/emacs/init.el +++ b/modules/user/emacs/init.el @@ -1022,6 +1022,12 @@ Made for `org-tab-first-hook' in evil-mode." :init (global-org-modern-mode)) +;; Markdown setup for quartz +(use-package markdown-mode + :custom + (markdown-enable-wiki-links t) + (markdown-wiki-link-alias-first nil)) + ;; Olivetti (use-package olivetti :custom From cff06e61c890a9c1f81563cdb0e5ace0ef5723db Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 1 Oct 2025 18:41:52 -0500 Subject: [PATCH 314/317] Updates to my hyprgamemode --- modules/user/hyprland/default.nix | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/modules/user/hyprland/default.nix b/modules/user/hyprland/default.nix index f06b2a2..069009a 100644 --- a/modules/user/hyprland/default.nix +++ b/modules/user/hyprland/default.nix @@ -461,13 +461,13 @@ in keyword decoration:blur:enabled 0;\ keyword general:gaps_in 0;\ keyword general:gaps_out 0;\ - keyword general:border_size 1;\ + keyword general:border_size 0;\ keyword decoration:rounding 0"; - pkill -STOP electron; - pkill -STOP syncthing; - pkill -STOP emacs; - pkill -STOP emacsclient; - systemctl --user stop nextcloud-client; + #pkill -STOP electron; + #pkill -STOP syncthing; + #pkill -STOP emacs; + #pkill -STOP emacsclient; + #systemctl --user stop nextcloud-client; pkill ashell; pkill hypridle; exit; @@ -480,11 +480,11 @@ in keyword general:gaps_out ${builtins.toString config.wayland.windowManager.hyprland.settings.general.gaps_out};\ keyword general:border_size ${builtins.toString config.wayland.windowManager.hyprland.settings.general.border_size};\ keyword decoration:rounding ${builtins.toString config.wayland.windowManager.hyprland.settings.decoration.rounding}"; - pkill -CONT electron; - pkill -CONT syncthing; - pkill -CONT emacs; - pkill -CONT emacsclient; - systemctl --user start nextcloud-client; + #pkill -CONT electron; + #pkill -CONT syncthing; + #pkill -CONT emacs; + #pkill -CONT emacsclient; + #systemctl --user start nextcloud-client; WGPU_BACKEND=gl ashell & disown; hypridle & disown; exit; From 44e854f32e0a6ac37dbab0306236fd6c95a5b787 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 1 Oct 2025 18:42:09 -0500 Subject: [PATCH 315/317] Updated system --- flake.lock | 68 +++++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/flake.lock b/flake.lock index a1d3b63..a2ce90e 100644 --- a/flake.lock +++ b/flake.lock @@ -103,11 +103,11 @@ "blocklist-hosts": { "flake": false, "locked": { - "lastModified": 1758115911, - "narHash": "sha256-Br2cR3VuXLzTisEnS0xC0Cl31N5zxf5gzecs/kC0yd8=", + "lastModified": 1758853179, + "narHash": "sha256-z3VWoF5/evd0n97AmrWgSskaNqVaad0Ex2pn53JHkSk=", "owner": "StevenBlack", "repo": "hosts", - "rev": "7583934e9ba322124b90b7ce1eb6ddfe937013b4", + "rev": "1dd1fc4a30bad4dbd7ed33962c3ac7a2f2506b77", "type": "github" }, "original": { @@ -125,11 +125,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1758066113, - "narHash": "sha256-dfoSTG24e8rT18QEFa4IoPd1JaHSaWmBDobja4pT4Mo=", + "lastModified": 1758895312, + "narHash": "sha256-fkGae4lxUPP1KAfZ0Yz5f3KyWHyGRJbdyh4HWJVGTw4=", "owner": "chaotic-cx", "repo": "nyx", - "rev": "3dca6a170fc07d0fb265bc7268397cb55a05bc9b", + "rev": "4e2ef2f45cd83d4e202a88fa29173dd40739e608", "type": "github" }, "original": { @@ -146,11 +146,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1758359238, - "narHash": "sha256-NfOX8r+4FXxxC2N+2qlDaFsvaYEKGL5SGyqxSkTw2n4=", + "lastModified": 1758964003, + "narHash": "sha256-snZ/nOHvA1BdGcO+jzaYTAh4vhzHOQ9hivsFdrnlUjc=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "516ffa347ff2ed3ea4b5283625ca0c6b1a1e31a3", + "rev": "fc94b22fd2b6110333e03180c0e36ffd10ae2029", "type": "github" }, "original": { @@ -289,11 +289,11 @@ ] }, "locked": { - "lastModified": 1757920978, - "narHash": "sha256-Mv16aegXLulgyDunijP6SPFJNm8lSXb2w3Q0X+vZ9TY=", + "lastModified": 1758810399, + "narHash": "sha256-bpWoE1tiFX5T1tr5EudkpW9Kk02XR+6olkoSkf3nHZU=", "owner": "nix-community", "repo": "home-manager", - "rev": "11cc5449c50e0e5b785be3dfcb88245232633eb8", + "rev": "39d26c16866260eee6d0487fe9c102ba1c1bf7b2", "type": "github" }, "original": { @@ -309,11 +309,11 @@ ] }, "locked": { - "lastModified": 1758296614, - "narHash": "sha256-l60D1i0aaSqemy9dL7wP0ePMfcv/oZbeKpvUMY+q0kQ=", + "lastModified": 1758928860, + "narHash": "sha256-ZqaRdd+KoR54dNJPtd7UX4O0X+02YItnTpQVu28lSVI=", "owner": "nix-community", "repo": "home-manager", - "rev": "55b1f5b7b191572257545413b98e37abab2fdb00", + "rev": "bc2afee55bc5d3b825287829d6592b9cc1405aad", "type": "github" }, "original": { @@ -765,11 +765,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1758029758, - "narHash": "sha256-fKqsvznISxVSBo6aaiGGXMRiBG4IIuV3sSySxx80pcQ=", + "lastModified": 1758815401, + "narHash": "sha256-Nj4iA2Msx0qfHPFDc0biubSsaChuZQlJrS3aNIaQ/T8=", "owner": "PedroHLC", "repo": "nixpkgs", - "rev": "4eb5897225c3d7e78a0b9d1542197ee7c8d270a5", + "rev": "0cc09391d851ec12e1dcbb8d105a75ab6344432b", "type": "github" }, "original": { @@ -781,16 +781,16 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1751274312, - "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", + "lastModified": 1758791193, + "narHash": "sha256-F8WmEwFoHsnix7rt290R0rFXNJiMbClMZyIC/e+HYf0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", + "rev": "25e53aa156d47bad5082ff7618f5feb1f5e02d01", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-24.11", + "ref": "nixos-25.05", "repo": "nixpkgs", "type": "github" } @@ -812,11 +812,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1758277210, - "narHash": "sha256-iCGWf/LTy+aY0zFu8q12lK8KuZp7yvdhStehhyX1v8w=", + "lastModified": 1758690382, + "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8eaee110344796db060382e15d3af0a9fc396e0e", + "rev": "e643668fd71b949c53f8626614b21ff71a07379d", "type": "github" }, "original": { @@ -952,11 +952,11 @@ ] }, "locked": { - "lastModified": 1757930296, - "narHash": "sha256-Z9u5VszKs8rfEvg2AsFucWEjl7wMtAln9l1b78cfBh4=", + "lastModified": 1758767687, + "narHash": "sha256-znUulOqcL/Kkdr7CkyIi8Z1pTGXpi54Xg2FmlyJmv4A=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "09442765a05c2ca617c20ed68d9613da92a2d96b", + "rev": "b8bcc09d4f627f4e325408f6e7a85c3ac31f0eeb", "type": "github" }, "original": { @@ -970,11 +970,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1758335443, - "narHash": "sha256-2jaGMj32IckpZgBjn7kG4zyJl66T+2A1Fn2ppkHh91o=", + "lastModified": 1758940228, + "narHash": "sha256-sTS04L9LKqzP1oiVXYDwcMzfFSF0DnSJQFzZBpEgLFE=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f1ccb14649cf87e48051a6ac3a571b4a57d84ff3", + "rev": "5bfedf3fbbf5caf8e39f7fcd62238f54d82aa1e2", "type": "github" }, "original": { @@ -1022,11 +1022,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1757956156, - "narHash": "sha256-f0W7qbsCqpi6swQ5w8H+0YrAbNwsHgCFDkNRMTJjqrE=", + "lastModified": 1758905463, + "narHash": "sha256-8ANQ3MxULwolfkJEdUYlL5usISAxtysWctqqeSiJ/OE=", "owner": "nix-community", "repo": "stylix", - "rev": "0ce0103b498bb22f899ed8862d8d7f9503ed9cdb", + "rev": "4aae0ebc2b0d37d4f90ace2c8bbadffadb2e2a97", "type": "github" }, "original": { From b44aeb9150fc5ad1fe550c7b537f4ef42b3b7079 Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 1 Oct 2025 19:54:25 -0500 Subject: [PATCH 316/317] Haven't updated these readme's in a long time.. --- README.org | 84 ++++------ hosts/README.org | 22 ++- hosts/TEMPLATE/README.org | 3 + hosts/TEMPLATE/configuration.nix | 61 ++++++++ hosts/TEMPLATE/default.nix | 14 ++ hosts/TEMPLATE/hardware-configuration.nix | 8 + hosts/TEMPLATE/home.nix | 47 ++++++ hosts/duskfall/README.org | 4 +- hosts/ori/README.org | 6 +- hosts/stardust/README.org | 4 +- hosts/zenith/README.org | 4 +- install.org | 181 +++------------------- modules/system/README.org | 19 +-- modules/user/README.org | 37 +---- patches/README.org | 8 +- 15 files changed, 212 insertions(+), 290 deletions(-) create mode 100644 hosts/TEMPLATE/README.org create mode 100644 hosts/TEMPLATE/configuration.nix create mode 100644 hosts/TEMPLATE/default.nix create mode 100644 hosts/TEMPLATE/hardware-configuration.nix create mode 100644 hosts/TEMPLATE/home.nix diff --git a/README.org b/README.org index b2ecbe4..f4cdacc 100644 --- a/README.org +++ b/README.org @@ -13,28 +13,10 @@ These are my dotfiles (configuration files) for my NixOS setup(s). Here is my main setup: [[desktop.png]] -** My Themes +** Themes [[https://github.com/danth/stylix#readme][Stylix]] (and [[https://github.com/SenchoPens/base16.nix#readme][base16.nix]], of course) is amazing, allowing you to theme your entire system with base16-themes. -Using this I have [[./themes][59+ themes]] (I add more sometimes) I can switch between on-the-fly. Visit the [[./themes][themes directory]] for more info and screenshots! - -** Install -I wrote some reinstall notes for myself [[./install.org][here (install.org)]]. - -TLDR: You should™ be able to install my dotfiles to a fresh NixOS system with the following experimental script: -#+begin_src sh :noeval -nix-shell -p git --command "nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config" -#+end_src - -Disclaimer: Ultimately, I can't gaurantee this will work for anyone other than myself, so /use this at your own discretion/. Also my dotfiles are /highly/ opinionated, which you will discover immediately if you try them out. - -Potential Errors: I've only tested it working on UEFI with the default EFI mount point of =/boot=. I've added experimental legacy (BIOS) boot support, but it does rely on a quick and dirty script to find the grub device. If you are testing it using some weird boot configuration for whatever reason, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before install, or else it will complain about not being able to install the bootloader. - -Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled. - -Security Disclaimer: If you install or copy my =homelab= or =worklab= profiles, /CHANGE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/: -- [[./profiles/homelab/configuration.nix][configuration.nix]] for homelab profile -- [[./profiles/worklab/configuration.nix][configuration.nix]] for worklab profile +Using this I have [[./modules/themes][a lot of themes]] (I add more sometimes) I can switch between on-the-fly. Visit the [[./modules/themes][themes directory]] for more info and screenshots! ** Modules Separate Nix files can be imported as modules using an import block: @@ -47,58 +29,58 @@ imports = [ ./import1.nix This conveniently allows configurations to be (*cough cough) /modular/ (ba dum, tssss). -I have my modules separated into two groups: -- System-level - stored in the [[./system][system directory]] - - System-level modules are imported into configuration.nix, which is what is sourced into [[./flake.nix][my flake (flake.nix)]] -- User-level - stored in the [[./user][user directory]] (managed by home-manager) - - User-level modules are imported into home.nix, which is also sourced into [[./flake.nix][my flake (flake.nix)]] +I have my modules separated into three subdirectories: +- System-level - stored in the [[./modules/system][system directory]] +- User-level - stored in the [[./modules/user][user directory]] More detailed information on these specific modules are in the [[./system][system directory]] and [[./user][user directory]] respectively. +** Install +I wrote some reinstall notes for myself [[./install.org][here (install.org)]]. + +Check them out if you'd like to try out my config in a VM or base your config on mine. + ** Patches In some cases, since I use =nixpgs-unstable=, I must patch nixpkgs. This can be done inside of a flake via: #+BEGIN_SRC nix - nixpkgs-patched = (import nixpkgs { inherit system; }).applyPatches { - name = "nixpkgs-patched"; - src = nixpkgs; - patches = [ ./example-patch.nix ]; - }; +nixpkgs-patched = (import nixpkgs { inherit system; }).applyPatches { + name = "nixpkgs-patched"; + src = nixpkgs; + patches = [ + ./example-patch.nix + (builtins.fetchurl { + url = "https://asdf1234.patch"; + sha256 = "sha256:qwerty123456..."; + }) + ]; +}; - # configure pkgs - pkgs = import nixpkgs-patched { inherit system; }; +# configure pkgs +pkgs = import nixpkgs-patched { inherit system; }; - # configure lib - lib = nixpkgs.lib; +# configure lib +lib = nixpkgs.lib; #+END_SRC Patches can either be local or remote, so you can even import unmerged pull requests by using =fetchpatch= and the raw patch url, i.e: https://github.com/NixOS/nixpkgs/pull/example.patch. I currently curate patches local to this repo in the [[./patches][patches]] directory. -** Profiles -I separate my configurations into [[./profiles][profiles]] (essentially system templates), i.e: -- [[./profiles/personal][Personal]] - What I would run on a personal laptop/desktop -- [[./profiles/work][Work]] - What I would run on a work laptop/desktop (if they let me bring my own OS :P) -- [[./profiles/homelab][Homelab]] - What I would run on a server or homelab -- [[./profiles/wsl][WSL]] - What I would run underneath Windows Subystem for Linux - -My profile can be conveniently selected in [[./flake.nix][my flake.nix]] by setting the =profile= variable. - -More detailed information on these profiles is in the [[./profiles][profiles directory]]. +** Hosts +Configurations for all my machines are in [[./hosts][hosts]]. ** Nix Wrapper Script -Some Nix commands are confusing, really long to type out, or require me to be in the directory with my dotfiles. To solve this, I wrote a [[./system/bin/phoenix.nix][wrapper script called phoenix]], which calls various scripts in the root of this directory. +Some Nix commands are confusing, really long to type out, or require me to be in the directory with my dotfiles. To solve this, I wrote a [[./modules/system/phoenix][wrapper script called phoenix]], which calls various scripts in the root of this directory. TLDR: -- =phoenix sync= - Synchronize system and home-manager state with config files (essentially =nixos-rebuild switch= + =home-manager switch=) - - =phoenix sync system= - Only synchronize system state (essentially =nixos-rebuild switch=) - - =phoenix sync user= - Only synchronize home-manager state (essentially =home-manager switch=) +- =phoenix sync= - Synchronize system state with config +- =phoenix build= - Build all host configurations and push results to attic (requires attic config to be setup) - =phoenix update= - Update all flake inputs without synchronizing system and home-manager states -- =phoenix upgrade= - Update flake.lock and synchronize system and home-manager states (=phoenix update= + =phoenix sync=) + - =phoenix update INPUT= - Update only the specified =INPUT= (see inputs in [[./flake.nix][flake.nix]]) - =phoenix refresh= - Call synchronization posthooks (mainly to refresh stylix and some dependent daemons) - =phoenix pull= - Pull changes from upstream git and attempt to merge local changes (I use this to update systems other than my main system) -- =phoenix harden= - Ensure that all "system-level" files cannot be edited by an unprivileged user -- =phoenix soften= - Relax permissions so all dotfiles can be edited by a normal user (use temporarily for git or other operations) +- =phoenix lock= - Ensure that all "system-level" files cannot be edited by an unprivileged user +- =phoenix unlock= - Relax permissions so all dotfiles can be edited by a normal user (use temporarily for git or other operations) - =phoenix gc= - Garbage collect the system and user nix stores - =phoenix gc full= - Delete everything not currently in use - =phoenix gc 15d= - Delete everything older than 15 days diff --git a/hosts/README.org b/hosts/README.org index 5213f3b..b4a276c 100644 --- a/hosts/README.org +++ b/hosts/README.org @@ -1,15 +1,11 @@ -#+title: System Profiles +#+title: Machines -This directory contains various system profiles which can easily be set in [[../flake.nix][my flake.nix]] by setting the =profile= variable. Each profile directory contains a =configuration.nix= for system-level configuration and a =home.nix= for user-level configuration. Setting the =profile= variable in [[../flake.nix][my flake]] will automatically source the correct =configuration.nix= and =home.nix=. +This directory contains config for each of my machines. -Current profiles I have available are: -- [[./personal][Personal]] - What I would run on a personal laptop/desktop* -- [[./work][Work]] - What I would run on my work laptop/desktop* -- [[./homelab][Homelab]] - What I would run on a server or homelab* -- [[./worklab][Worklab]] - My homelab config with my work SSH keys preinstalled* -- [[./wsl][WSL]] - Windows Subsystem for Emacs (uses [[https://github.com/nix-community/NixOS-WSL][NixOS-WSL]]) -- [[./nix-on-droid][Nix on Droid]] - So that I can run Emacs on my phone (uses [[https://github.com/nix-community/nix-on-droid][nix-on-droid]]) - -*My [[./personal][personal]] and [[./work][work]] profiles are actually functionally identical (the [[./work][work]] profile is actually imported into the [[./personal][personal]] profile)! The only difference between them is that my [[./personal][personal]] profile has a few extra things like gaming and social apps. - -*My [[./homelab][homelab]] and [[./worklab][worklab]] profiles are similarly functionally identical (they both utilize the this [[./homelab/base.nix][base.nix]] file)! The only difference is that they have different preinstalled ssh keys. +In this directory you'll find: +- [[./snowfire][snowfire]] - My main machine (gaming laptop) +- [[./duskfall][duskfall]] - An old thinkpad I use occasionally +- [[./stardust][stardust]] - My wife's laptop +- [[./zenith][zenith]] - My work laptop +- [[./ori][ori]] - My homelab server host +- [[./TEMPLATE][TEMPLATE]] - Template files to use for a new host diff --git a/hosts/TEMPLATE/README.org b/hosts/TEMPLATE/README.org new file mode 100644 index 0000000..556e203 --- /dev/null +++ b/hosts/TEMPLATE/README.org @@ -0,0 +1,3 @@ +#+title: Just chillin' + +This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps! diff --git a/hosts/TEMPLATE/configuration.nix b/hosts/TEMPLATE/configuration.nix new file mode 100644 index 0000000..6656a60 --- /dev/null +++ b/hosts/TEMPLATE/configuration.nix @@ -0,0 +1,61 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + systemSettings = { + # users + users = [ "USERNAME" ]; + adminUsers = [ "USERNAME" ]; + + # hardware + cachy.enable = true; + bluetooth.enable = true; + powerprofiles.enable = true; + tlp.enable = false; + printing.enable = true; + + # software + flatpak.enable = false; + gaming.enable = false; + virtualization = { + docker.enable = false; + virtualMachines.enable = false; + }; + brave.enable = true; + + # wm + hyprland.enable = true; + + # dotfiles + dotfilesDir = "/etc/nixos"; + + # security + security = { + automount.enable = true; + blocklist.enable = true; + doas.enable = true; + firejail.enable = false; # TODO setup firejail profiles + firewall.enable = true; + gpg.enable = true; + openvpn.enable = true; + sshd.enable = false; + }; + + # style + stylix = { + enable = true; + theme = "orichalcum"; + }; + }; + + users.users.USERNAME.description = "NAME"; + home-manager.users.USERNAME.userSettings = { + name = "NAME"; + email = "EMAIL"; + }; + + ## EXTRA CONFIG GOES HERE + + }; + +} diff --git a/hosts/TEMPLATE/default.nix b/hosts/TEMPLATE/default.nix new file mode 100644 index 0000000..b29cc69 --- /dev/null +++ b/hosts/TEMPLATE/default.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./configuration.nix + ./hardware-configuration.nix + ]; + + config = { + home-manager.users = builtins.listToAttrs + (map (user: { name = user; value = + ({ imports = [ ./home.nix ../../modules/user ]; });}) config.systemSettings.users); + }; +} diff --git a/hosts/TEMPLATE/hardware-configuration.nix b/hosts/TEMPLATE/hardware-configuration.nix new file mode 100644 index 0000000..f878f7c --- /dev/null +++ b/hosts/TEMPLATE/hardware-configuration.nix @@ -0,0 +1,8 @@ +## THIS FILE MUST BE GENERATED ON A PER MACHINE BASIS +## RUN + +{ config, lib, pkgs, modulesPath, inputs, ... }: + +{ + +} diff --git a/hosts/TEMPLATE/home.nix b/hosts/TEMPLATE/home.nix new file mode 100644 index 0000000..02c76b1 --- /dev/null +++ b/hosts/TEMPLATE/home.nix @@ -0,0 +1,47 @@ +{ config, lib, pkgs, ... }: + +{ + config = { + userSettings = { + # setup + shell = { + enable = true; + apps.enable = true; + extraApps.enable = true; + }; + xdg.enable = true; + + # programs + browser = "brave"; + editor = "emacs"; + vscodium.enable = true; + yazi.enable = true; + git.enable = true; + engineering.enable = false; + art.enable = false; + flatpak.enable = false; + godot.enable = false; + keepass.enable = false; + media.enable = true; + music.enable = false; + office.enable = true; + recording.enable = false; + virtualization = { + virtualMachines.enable = false; + }; + ai.enable = false; + + # wm + hyprland.enable = true; + + # style + stylix.enable = true; + + # hardware + bluetooth.enable = true; + }; + + ## EXTRA CONFIG GOES HERE + + }; +} diff --git a/hosts/duskfall/README.org b/hosts/duskfall/README.org index 556e203..9ca6c6b 100644 --- a/hosts/duskfall/README.org +++ b/hosts/duskfall/README.org @@ -1,3 +1,3 @@ -#+title: Just chillin' +#+title: Thinkpad go brrr... -This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps! +This is my config for an old Thinkpad. It's /really/ slow, but it's nice since it has a touch screen and pen with palm rejection! I don't use it that often, and I'm considering connecting it to the TV and trying Kodi out on it. diff --git a/hosts/ori/README.org b/hosts/ori/README.org index 556e203..e508bb7 100644 --- a/hosts/ori/README.org +++ b/hosts/ori/README.org @@ -1,3 +1,7 @@ #+title: Just chillin' -This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps! +This is for my personal gaming laptop. Necessary and extra batteries included: office, engineering, development, media, recording, and gaming apps. Highly bloated system. + +Specs: +- Asus ROG Strix G15 Advantage +- Upgraded to 64GB of RAM + 1TB SSD diff --git a/hosts/stardust/README.org b/hosts/stardust/README.org index 556e203..97cbad0 100644 --- a/hosts/stardust/README.org +++ b/hosts/stardust/README.org @@ -1,3 +1,3 @@ -#+title: Just chillin' +#+title: For my wife -This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps! +This is a config for my wife's computer. She likes Plasma and she mainly uses it for her art work and some light gaming. diff --git a/hosts/zenith/README.org b/hosts/zenith/README.org index 556e203..7be7eef 100644 --- a/hosts/zenith/README.org +++ b/hosts/zenith/README.org @@ -1,3 +1,3 @@ -#+title: Just chillin' +#+title: Time to focus -This is my profile for a personal computer. It is functionally identical to my [[../work]] profile, but includes extra things like games and social apps! +This is config for my work computer. Essentially the same as [[../snowfire][snowfire]], just minus the gaming (and a few other things). diff --git a/install.org b/install.org index 771fff8..07b56c1 100644 --- a/install.org +++ b/install.org @@ -3,102 +3,14 @@ These are just some simple install notes for myself (in-case I have to reinstall unexpectedly). You could also use these to try out my config in a VM. -** Automated Install Script (Experimental) -*** Install Directly From Git -I wrote a quick automated install script at [[./install.sh][install.sh]]. It essentially just runs [[Manual Install Procedure][the manual install steps]] and additionally hardens the security of the system-level (root configuration) files using [[./harden.sh][harden.sh]]. - -I'll eventually™ add the ability to supply arguments to this script as well. - -The quickest way to install is running the install script directly from the remote git repo using =nix run=, which is essentially just one of the following: -#+BEGIN_SRC sh :noeval -# Install from gitlab -nix run gitlab:librephoenix/nixos-config - -# Or install from github -nix run github:librephoenix/nixos-config - -# Or install from codeberg -nix run git+https://codeberg.org/librephoenix/nixos-config -#+END_SRC - -This will install the dotfiles to =~/.dotfiles=, but if you'd like to install to a custom directory, just supply it as a positional argument, i.e: -#+BEGIN_SRC sh :noeval -# Install from gitlab -nix run gitlab:librephoenix/nixos-config -- /your/custom/directory -#+END_SRC - -The script will ask for sudo permissions at certain points, /but you should not run the script as root/. - -If the above =nix run= command gives you an error, odds are you either don't have =git= installed, or you haven't enabled the experimental features in your Nix config (=nix-command= and =flakes=). To get the command to install properly, you can first enter a shell with =git= available using: -#+begin_src sh :noeval -nix-shell -p git -#+end_src -and then running: -#+BEGIN_SRC sh :noeval -nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config -#+END_SRC - -And if you want a single copy-paste solution: -#+begin_src sh :noeval -nix-shell -p git --command "nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config" -#+end_src - -This /should/ still work with a custom dotfiles directory too, i.e: -#+begin_src sh :noeval -nix-shell -p git --command "nix run --experimental-features 'nix-command flakes' gitlab:librephoenix/nixos-config -- /your/custom/directory" -#+end_src - -At a certain point in the install script it will open =nano= (or whatever your $EDITOR is set to) and ask you to edit the =flake.nix=. You can edit as much or as little of the config variables as you like, and it will continue the install after you exit the editor. - -Potential Errors: I've only tested it working on UEFI with the default EFI mount point of =/boot=. I've added experimental legacy (BIOS) boot support, but it does rely on a quick and dirty script to find the grub device. If you are testing it using some weird boot configuration for whatever reason, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before install, or else it will complain about not being able to install the bootloader. - -Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled. - -Disclaimer: If you install my =homelab= or =worklab= profiles /CHANGE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/: -- [[./profiles/homelab/configuration.nix][configuration.nix]] for homelab profile -- [[./profiles/worklab/configuration.nix][configuration.nix]] for worklab profile - -*** Install From Local Git Clone -The dotfiles can be installed after cloning the repo into =~/.dotfiles= using: -#+BEGIN_SRC sh :noeval -git clone https://gitlab.com/librephoenix/nixos-config.git ~/.dotfiles -~/.dotfiles/install.sh -#+END_SRC -or with a custom directory: -#+BEGIN_SRC sh :noeval -git clone https://gitlab.com/librephoenix/nixos-config.git /your/custom/directory -/your/custom/directory/install.sh -#+END_SRC - -If you install to a custom directory, make sure to edit the =userSettings.dotfilesDir= in the [[./flake.nix][flake.nix]], or else my [[./system/bin/phoenix.nix][phoenix wrapper script]] won't work. - -At a certain point in the install script it will open =nano= (or whatever your =$EDITOR= is set to) and ask you to edit the =flake.nix=. You can edit as much or as little of the config variables as you like, and it will continue the install after you exit the editor. - -Potential Errors: I mainly only test this on UEFI, but I've added experimental legacy (BIOS) boot support. Keep in mind, it does rely on a quick and dirty script to find the grub device. If you are testing it using some weird boot configuration for whatever reason, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before install, or else it will complain about not being able to install the bootloader. - -Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled. - -Disclaimer: If you install my =homelab= or =worklab= profiles /CHANGE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/: -- [[./profiles/homelab/configuration.nix][configuration.nix]] for homelab profile -- [[./profiles/worklab/configuration.nix][configuration.nix]] for worklab profile - -*** Automatic Install Script Limitations -At this time, this only works on an existing NixOS install. It also only works if the dotfiles are cloned into =~/.dotfiles=. It also only works on UEFI, not on BIOS :( - -Future upgrade plans: -- [ ] Be able to install directly from NixOS iso -- [ ] Be able to install just home-manager config to a non-NixOS Linux distro -- [ ] Be able to detect EFI mount point for systemd-boot? -- [X] +Be able to detect UEFI or BIOS and switch config as needed+ -- [ ] ??? (open up an issue if you think there is anything else I should try to figure out) - ** Manual Install Procedure -If you instead want to install this manually to see all the steps (kind of like an Arch install before the archinstall script existed), you can follow this following procedure: +Currently, the only supported install method is installing manually. This way yuo can see all the steps (kind of like an Arch install before the archinstall script existed), you can follow this following procedure: *** Clone Repo and Modify Configuration -Start by cloning the repo: +Start by cloning the repo to =/etc/nixos=: #+BEGIN_SRC sh :noeval -git clone https://gitlab.com/librephoenix/nixos-config.git ~/.dotfiles +sudo mv /etc/nixos /etc/nixos.bkp +git clone https://gitlab.com/librephoenix/nixos-config.git /etc/nixos #+END_SRC Any custom directory should also work: @@ -106,50 +18,27 @@ Any custom directory should also work: git clone https://gitlab.com/librephoenix/nixos-config.git /your/custom/directory #+END_SRC -If you install to a custom directory, make sure to edit the =userSettings.dotfilesDir= in the beginning [[./flake.nix][flake.nix]], or else my [[./system/bin/phoenix.nix][phoenix wrapper script]] won't work. +If you install to a custom directory, make sure to edit =systemSettings.dotfilesDir= in the system configuration, or else the [[./system/bin/phoenix.nix][phoenix wrapper script]] won't work. #+BEGIN_SRC nix :noeval -... -let - ... - # ----- USER SETTINGS ----- # - dotfilesDir = "/your/custom/directory"; # username - ... +# somewhere in system-level config: +{ config, lib, pkgs, ...}: +{ + systemSettings.dotfilesDir = "/your/custom/directory"; +} #+END_SRC -To get the hardware configuration on a new system, either copy from =/etc/nixos/hardware-configuration.nix= or run: +To configure a new system, navigate to the [[./hosts][hosts]] directory and copy the [[./hosts/TEMPLATE][TEMPLATE]] directory. Name the copy whatever you want the new hostname to be (needs to match the hostname exactly). + +Next, configure the resulting =configuration.nix= and =home.nix= with the available options. Make sure to change all references to =USERNAME=, =NAME= and =EMAIL= for your desired user(s). + +Next, you must copy or generate the new system's hardware-config into your specific host's =hardware-configuration.nix=. To get the hardware configuration on a new system, either copy from =/etc/nixos.bkp/hardware-configuration.nix= or run: #+BEGIN_SRC sh :noeval -sudo nixos-generate-config --show-hardware-config > ~/.dotfiles/system/hardware-configuration.nix +sudo nixos-generate-config --show-hardware-config > /etc/nixos/hosts/YOURHOSTNAMEHERE/hardware-configuration.nix #+END_SRC -Also, if you have a differently named user account than my default (=emmet=), you /must/ update the following lines in the let binding near the top of the [[./flake.nix][flake.nix]]: -#+BEGIN_SRC nix :noeval -... -let - ... - # ----- USER SETTINGS ----- # - username = "YOURUSERNAME"; # username - name = "YOURNAME"; # name/identifier - ... -#+END_SRC - -There are many more config options there that you may also want to change as well. - -The build will fail if you are booting from BIOS instead of UEFI, unless change some of the system settings of the flake. Change =bootMode= to "bios" and set the =grubDevice= appropriately for your system (i.e. =/dev/vda= or =/dev/sda=). -#+begin_src nix :noeval -... -let - # ---- SYSTEM SETTINGS ---- # - ... - bootMode = "bios"; # uefi or bios - grubDevice = "/dev/vda"; # device identifier for grub; find this by running lsblk - ... -#+end_src - Note: If you're installing this to a VM, Hyprland won't work unless 3D acceleration is enabled. -Disclaimer: If you install my =homelab= or =worklab= profiles /CHANGE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/: -- [[./profiles/homelab/configuration.nix][configuration.nix]] for homelab profile -- [[./profiles/worklab/configuration.nix][configuration.nix]] for worklab profile +Disclaimer: If you copy my =ori= host config to setup a sever with NixOS, /MAKE SURE YOU CHANGE OR REMOVE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/ (see [[./hosts/ori/configuration.nix][configuration.nix]]). *** Rebuild and Switch System Config Once the variables are set, then switch into the system configuration by running: @@ -161,42 +50,14 @@ or for your own custom directory: sudo nixos-rebuild switch --flake /your/custom/directory#system #+END_SRC -*** Intall and Switch Home Manager Config -Home manager can be installed and the configuration activated with: +Subsequent rebuilds can now use my =phoenix= wrapper script to rebuild: #+BEGIN_SRC sh :noeval -nix run home-manager/master -- switch --flake ~/.dotfiles#user -#+END_SRC -or for your own custom directory: -#+BEGIN_SRC sh :noeval -nix run home-manager/master -- switch --flake /your/custom/directory#user +phoenix sync #+END_SRC ** FAQ -*** =home-manager switch --flake .#user= Command Fails -If it fails with something to the effect of "could not download {some image file}" then that just means that one of my themes is having trouble downloading the background image. To conserve on space in the repo, my themes download the relevant wallpapers directly from their source, but that also means that if the link is broken, =home-manager switch= fails. - -I have included a script in the [[./themes][themes directory]] named [[./themes/background-test.sh][background-test.sh]] which performs a rough test on every theme background url, reporting which are broken. - -If you're having this error, navigate to the [[./flake.nix][flake.nix]] and select any theme with a good background wallpaper link. As long as it is able to download the new wallpaper, it should be able to build. - -*** Do I have to put the configuration files in =~/.dotfiles=? -No. You can put them in literally any directory you want. I just prefer to use =~/.dotfiles= as a convention. If you change the directory, do keep in mind that the above scripts must be modified, replacing =~/.dotfiles= with whatever directory you want to install them to. Also, you may want to modify the =dotfilesDir= variable in =flake.nix=. - -*** So I cloned these dotfiles into ~/.dotfiles, and now there are system-level files owned by my user account.. HOW IS THIS SECURE?! -If you're worried about someone modifying your system-level (root configuration) files as your unpriveleged user, see [[./harden.sh][harden.sh]]. - *** I installed this to a VM and when I log in, it crashes and sends me back to the login manager (SDDM)? Enable 3D acceleration for your virtual machine. Hyprland doesn't work without it. -*** It fails installing with some weird errors about grub or a bootloader? -It will 100% fail if you test it with a non-default boot configuration. It might even give this error otherwise! If this is the case, try modifying =bootMountPath= (UEFI) or =grubDevice= (legacy BIOS) in =flake.nix= before installing again. - -*** The install seems to work, but when I login, I'm missing a lot of stuff (partial install) -This can happen if you run the autoinstall script on a system that already has a desktop environment, or if any other (non-Nix-store-symlink) config files are in the way of the config files generated by home-manager. In these cases, home-manager refuses to build anything, even if there's just one file in the way. If you try running =nix run home-manager/master -- switch --flake ~/.dotfiles#user=, it should throw an error at the end with something like: -#+begin_example -Existing file '/home/user/.gtkrc-2.0' is in the way of '/nix/store/6p3hzdbzhad8ra5j1qf4b2b3hs6as6sf-home-manager-files/.gtkrc-2.0' -Existing file '/home/user/.config/Trolltech.conf' is in the way of '/nix/store/6p3hzdbzhad8ra5j1qf4b2b3hs6as6sf-home-manager-files/.config/Trolltech.conf' -Existing file '/home/user/.config/user-dirs.conf' is in the way of '/nix/store/6p3hzdbzhad8ra5j1qf4b2b3hs6as6sf-home-manager-files/.config/user-dirs.conf' -... -#+end_example -The current solution to this is to delete or move the files mentioned so that home-manager can evaluate. Once the files are out of the way, just run =nix run home-manager/master -- switch --flake ~/.dotfiles#user= again and it should work! +*** You used to have an auto-install script! Where did it go? +My old [[https://www.youtube.com/watch?v=Dm11dcJ0vWY][auto-install script]] was kind of cool, but I found it wasn't really stable (even for me). I'll probably revisit this at some point (looking at you [[https://github.com/nix-community/nixos-anywhere][nixos-everywhere]] and [[https://github.com/nix-community/disko][disko]]). diff --git a/modules/system/README.org b/modules/system/README.org index f304994..4e557e7 100644 --- a/modules/system/README.org +++ b/modules/system/README.org @@ -9,21 +9,4 @@ imports = [ import1.nix ]; #+END_SRC -My system-level Nix modules are organized into this directory: -- [[./hardware-configuration.nix][hardware-configuration]] - Default hardware config generated for my system -- [[./bin][bin]] - My own scripts - - [[./bin/phoenix.nix][phoenix]] - My nix command wrapper -- [[./app][app]] - Necessary system-level configuration to get various apps working -- [[./hardware][hardware]] - Hardware configurations I may need to use -- [[./security][security]] - System-level security stuff -- [[./style][style]] - Stylix setup (system-wide base16 theme generation) -- [[./wm][wm]] - Necessary system-level configuration to get various window managers, wayland compositors, and/or desktop environments working - -** Variables imported from flake.nix -Variables can be imported from [[../flake.nix][flake.nix]] by setting the =specialArgs= block inside the flake (see [[../flake.nix][my flake]] for more details). This allows variables to merely be managed in one place ([[../flake.nix][flake.nix]]) rather than having to manage them in multiple locations. - -I use this to pass a few attribute sets: -- =userSettings= - Settings for the normal user (see [[../flake.nix][flake.nix]] for more details) -- =systemSettings= - Settings for the system (see [[../flake.nix][flake.nix]] for more details) -- =inputs= - Flake inputs (see [[../flake.nix][flake.nix]] for more details) -- =pkgs-stable= - Allows me to include stable versions of packages along with (my default) unstable versions of packages +Modules in this directory are used are system-level (root) configurations. diff --git a/modules/user/README.org b/modules/user/README.org index cf24b50..8f3bd00 100644 --- a/modules/user/README.org +++ b/modules/user/README.org @@ -9,39 +9,4 @@ imports = [ import1.nix ]; #+END_SRC -My user-level Nix modules are organized into this directory: -- [[./app][app]] - Apps or collections of apps bundled with my configs - - [[./app/browser][browser]] - Used to set default browser - - [[./app/dmenu-scripts][dmenu-scripts]] - - [[./app/doom-emacs][doom-emacs]] - - [[./app/flatpak][flatpak]] - Installs flatpak as a utility (flatpaks must be installed manually) - - [[./app/games][games]] - Gaming setup - - [[./app/git][git]] - - [[./app/keepass][keepass]] - - [[./app/ranger][ranger]] - - [[./app/terminal][terminal]] - Configuration for terminal emulators - - [[./app/virtualization][virtualization]] - Virtualization and compatability layers -- [[./lang][lang]] - Various bundled programming languages - - I will probably get rid of this in favor of a shell.nix for every project, once I learn how that works -- [[./pkgs][pkgs]] - "Package builds" for packages not in the Nix repositories - - [[./pkgs/pokemon-colorscripts.nix][pokemon-colorscripts]] - - [[./pkgs/rogauracore.nix][rogauracore]] - not working yet -- [[./shell][shell]] - My default bash and zsh configs - - [[./shell/sh.nix][sh]] - bash and zsh configs - - [[./shell/cli-collection.nix][cli-collection]] - Curated useful CLI utilities -- [[./style][style]] - Stylix setup (system-wide base16 theme generation) -- [[./wm][wm]] - Window manager, compositor, wayland compositor, and/or desktop environment setups - - [[./wm/hyprland][hyprland]] - - [[./wm/xmonad][xmonad]] - - [[./wm/picom][picom]] - -** Variables imported from flake.nix -Variables can be imported from [[../flake.nix][flake.nix]] by setting the =extraSpecialArgs= block inside the flake (see [[../flake.nix][my flake]] for more details). This allows variables to merely be managed in one place ([[../flake.nix][flake.nix]]) rather than having to manage them in multiple locations. - -I use this to pass a few attribute sets: -- =userSettings= - Settings for the normal user (see [[../flake.nix][flake.nix]] for more details) -- =systemSettings= - Settings for the system (see [[../flake.nix][flake.nix]] for more details) -- =inputs= - Flake inputs (see [[../flake.nix][flake.nix]] for more details) -- =pkgs= - Set to unstable for client devices and stable for server devices -- =pkgs-stable= - Allows me to include stable versions of packages along with (my default) unstable versions of packages -- =pkgs-unstable= - Allows me to force unstable versions of packages on server devices +Modules in this directory are used are user-level configurations. diff --git a/patches/README.org b/patches/README.org index 182f565..b444021 100644 --- a/patches/README.org +++ b/patches/README.org @@ -1,14 +1,12 @@ #+title: I never thought I'd have to do this, but here we are #+author: Emmet -Since I use =nixpkgs-unstable= (I am an Arch user by heart), there are some cases where certain packages will break or fail to build (usually due to my extremely customized, non-standard system). +Since I use =nixpkgs-unstable= (I am an Arch user (btw) at heart), there are some cases where certain packages will break or fail to build (usually due to my extremely customized, non-standard system). With Nix, I /could/ just rollback everything and wait to update until an upstream patch fixes things, but if it's a quick fix, I'd rather just patch it in immediately so that everything else can stay up to date. Patches end up in and out of this directory. Ideally, there shouldn't be any patches here! -** List of Patches +** List of Current Patches Here is a list of patches in this directory, along with a more detailed description of why it's necessary: - -| Patch | Reason | -|------------------------------+----------------------------------------------------------------------------------------------| +- n/a From 44dee10436fe606e14b85e54b99e4df99ab2b78e Mon Sep 17 00:00:00 2001 From: Emmet Date: Wed, 1 Oct 2025 20:25:42 -0500 Subject: [PATCH 317/317] Mention secrets repo + some todos --- install.org | 8 ++++++++ modules/system/README.org | 2 ++ modules/user/README.org | 2 ++ 3 files changed, 12 insertions(+) diff --git a/install.org b/install.org index 07b56c1..890cc7b 100644 --- a/install.org +++ b/install.org @@ -40,6 +40,11 @@ Note: If you're installing this to a VM, Hyprland won't work unless 3D accelerat Disclaimer: If you copy my =ori= host config to setup a sever with NixOS, /MAKE SURE YOU CHANGE OR REMOVE THE PUBLIC SSH KEYS UNLESS YOU WANT ME TO BE ABLE TO SSH INTO YOUR SERVER. YOU CAN CHANGE OR REMOVE THE SSH KEY IN THE RELEVANT CONFIGURATION.NIX/ (see [[./hosts/ori/configuration.nix][configuration.nix]]). +*** Clone and Setup Secrets Config Repo +Clone and setup the =/etc/nixos.secrets= directory using my template [[https://gitlab.com/librephoenix/nixos-secrets-template][repo]]. Intructions on how to set it up can be found in that repository. This will allow you to track your main config to a public repo, without exposing /all/ of your configuration options publically. + +If you'd rather not set that up, you can just delete all references to the =secrets= input in the =flake.nix= and it will stop complaining about the input not being found! + *** Rebuild and Switch System Config Once the variables are set, then switch into the system configuration by running: #+BEGIN_SRC sh :noeval @@ -59,5 +64,8 @@ phoenix sync *** I installed this to a VM and when I log in, it crashes and sends me back to the login manager (SDDM)? Enable 3D acceleration for your virtual machine. Hyprland doesn't work without it. +*** It's complaining about not finding an input called secrets? +Either setup the =/etc/nixos.secrets= directory using my template [[https://gitlab.com/librephoenix/nixos-secrets-template][repo]] or delete all references to the =secrets= input in the =flake.nix=! + *** You used to have an auto-install script! Where did it go? My old [[https://www.youtube.com/watch?v=Dm11dcJ0vWY][auto-install script]] was kind of cool, but I found it wasn't really stable (even for me). I'll probably revisit this at some point (looking at you [[https://github.com/nix-community/nixos-anywhere][nixos-everywhere]] and [[https://github.com/nix-community/disko][disko]]). diff --git a/modules/system/README.org b/modules/system/README.org index 4e557e7..82e5109 100644 --- a/modules/system/README.org +++ b/modules/system/README.org @@ -10,3 +10,5 @@ imports = [ import1.nix #+END_SRC Modules in this directory are used are system-level (root) configurations. + +# TODO add list of all options diff --git a/modules/user/README.org b/modules/user/README.org index 8f3bd00..3f0347e 100644 --- a/modules/user/README.org +++ b/modules/user/README.org @@ -10,3 +10,5 @@ imports = [ import1.nix #+END_SRC Modules in this directory are used are user-level configurations. + +# TODO add list of all options