diff options
| author | adikro <adikro@disroot.org> | 2026-03-15 22:13:15 +0100 |
|---|---|---|
| committer | adikro <adikro@disroot.org> | 2026-03-15 22:13:15 +0100 |
| commit | 18f08bf53591f3e68043730a627889957009deb6 (patch) | |
| tree | 228a31ab5489e98253e963424cd064d57dcd7a6e | |
| parent | 8eb0e90219a4de87d8d476e15329e14720f091c6 (diff) | |
browser stuff
| -rw-r--r-- | flake.lock | 409 | ||||
| -rw-r--r-- | flake.nix | 15 | ||||
| -rw-r--r-- | hm/editors/editors.nix | 2 | ||||
| -rw-r--r-- | hm/editors/nvf/nvf.nix (renamed from hm/editors/nvf.nix) | 28 | ||||
| -rw-r--r-- | hm/env/env.nix | 2 | ||||
| -rw-r--r-- | hm/env/fsel.nix | 16 | ||||
| -rw-r--r-- | hm/env/niri/binds.nix | 10 | ||||
| -rw-r--r-- | hm/env/niri/niri.nix | 15 | ||||
| -rw-r--r-- | hm/env/otter.nix | 191 | ||||
| -rw-r--r-- | hm/shell/cli.nix | 3 | ||||
| -rw-r--r-- | hm/shell/fish.nix | 21 | ||||
| -rw-r--r-- | hm/soft/browser.nix | 124 | ||||
| -rw-r--r-- | hm/soft/czkawka-v11.nix | 97 | ||||
| -rw-r--r-- | hm/soft/nixcord.nix | 10 | ||||
| -rw-r--r-- | hosts/desktop/configuration.nix | 1 | ||||
| -rw-r--r-- | hosts/desktop/home.nix | 2 | ||||
| -rw-r--r-- | os/srv/files.nix | 2 | ||||
| -rw-r--r-- | os/srv/gaming.nix | 6 | ||||
| -rw-r--r-- | os/srv/srv.nix | 1 | ||||
| -rw-r--r-- | os/srv/yggdrasil.nix | 14 |
20 files changed, 791 insertions, 178 deletions
@@ -21,6 +21,29 @@ "type": "github" } }, + "fenix": { + "inputs": { + "nixpkgs": [ + "fsel", + "naersk", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1752475459, + "narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=", + "owner": "nix-community", + "repo": "fenix", + "rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, "flake-compat": { "locked": { "lastModified": 1733328505, @@ -38,6 +61,22 @@ "flake-compat_2": { "flake": false, "locked": { + "lastModified": 1751685974, + "narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=", + "ref": "refs/heads/main", + "rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1", + "revCount": 92, + "type": "git", + "url": "https://git.lix.systems/lix-project/flake-compat.git" + }, + "original": { + "type": "git", + "url": "https://git.lix.systems/lix-project/flake-compat.git" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { "lastModified": 1767039857, "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", "owner": "edolstra", @@ -111,9 +150,48 @@ "type": "github" } }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "nvf", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1768135262, + "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { - "systems": "systems_3" + "systems": "systems" }, "locked": { "lastModified": 1731533236, @@ -129,6 +207,46 @@ "type": "github" } }, + "flake-utils_2": { + "inputs": { + "systems": "systems_6" + }, + "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" + } + }, + "fsel": { + "inputs": { + "flake-utils": "flake-utils", + "naersk": "naersk", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1773279064, + "narHash": "sha256-BLcSfp2aNm+0oDoHbvTufBRS2XwKqbIeUOXD8t58efE=", + "owner": "Mjoyufull", + "repo": "fsel", + "rev": "7b38c6223eed6e509f98e066ff89f481bd1930d7", + "type": "github" + }, + "original": { + "owner": "Mjoyufull", + "repo": "fsel", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -150,6 +268,83 @@ "type": "github" } }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "otter-launcher", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1769638001, + "narHash": "sha256-hGwdJ/+oo+IRo2TiWV/V8BWWptQihcdFV/olTONaHqg=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "bd9f031efc634be4b80c5090b9171cc3a9f8e49c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "mnw": { + "locked": { + "lastModified": 1770419553, + "narHash": "sha256-b1XqsH7AtVf2dXmq2iyRr2NC1yG7skY7Z6N2MpWHlK4=", + "owner": "Gerg-L", + "repo": "mnw", + "rev": "2aaffa8030d0b262176146adbb6b0e6374ce2957", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "mnw", + "type": "github" + } + }, + "naersk": { + "inputs": { + "fenix": "fenix", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1769799857, + "narHash": "sha256-88IFXZ7Sa1vxbz5pty0Io5qEaMQMMUPMonLa3Ls/ss4=", + "owner": "nix-community", + "repo": "naersk", + "rev": "9d4ed44d8b8cecdceb1d6fd76e74123d90ae6339", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, + "ndg": { + "inputs": { + "nixpkgs": [ + "nvf", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768214250, + "narHash": "sha256-hnBZDQWUxJV3KbtvyGW5BKLO/fAwydrxm5WHCWMQTbw=", + "owner": "feel-co", + "repo": "ndg", + "rev": "a6bd3c1ce2668d096e4fdaaa03ad7f03ba1fbca8", + "type": "github" + }, + "original": { + "owner": "feel-co", + "ref": "refs/tags/v2.6.0", + "repo": "ndg", + "type": "github" + } + }, "neovim-nightly-overlay": { "inputs": { "flake-parts": "flake-parts", @@ -159,11 +354,11 @@ ] }, "locked": { - "lastModified": 1773446705, - "narHash": "sha256-IBAHAaYfiR9fhR+y6ZUdM697dht26tvrWeIrTLwBs3E=", + "lastModified": 1773578674, + "narHash": "sha256-UaO8aE+qRQgglrJbhi9hzSeiP8oob9brLY3pKvq8mRA=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "49ff0692b00466bee56c3c72e91e4d0b8342a93b", + "rev": "0990740d36eb5674abfd899746ac5f51a96bf1c0", "type": "github" }, "original": { @@ -175,11 +370,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1773431856, - "narHash": "sha256-Oj4HMwF261bJCS/zqgmqdxoCBSeEjwghxW+1MA9Ktik=", + "lastModified": 1773532807, + "narHash": "sha256-02OCZKwq7JsocizEcvJVt1uMkQzWT6abPemKQU3y1U8=", "owner": "neovim", "repo": "neovim", - "rev": "fd1e019e90e76bb3f6236210ac6287f3b8d4d47f", + "rev": "9084483715649194de0497310ae191e35dab8e26", "type": "github" }, "original": { @@ -200,11 +395,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1773501701, - "narHash": "sha256-+0LBAEm8F5h9Nm+hdS07aoS1W4oTtW6c8lltb66oOYQ=", + "lastModified": 1773577199, + "narHash": "sha256-Z77lGBRlueA+igtScByJ0soMRnEy5T/XG9w661OCPaw=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "39ac039250a4a32bf8691405cac04864fc66a70d", + "rev": "afc45f69929e5b5ab23d903b24532cfe718de6be", "type": "github" }, "original": { @@ -271,11 +466,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1772972630, - "narHash": "sha256-mUJxsNOrBMNOUJzN0pfdVJ1r2pxeqm9gI/yIKXzVVbk=", + "lastModified": 1773533765, + "narHash": "sha256-qonGfS2lzCgCl59Zl63jF6dIRRpvW3AJooBGMaXjHiY=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "3966ce987e1a9a164205ac8259a5fe8a64528f72", + "rev": "f8e82243fd601afb9f59ad230958bd073795cbfe", "type": "github" }, "original": { @@ -287,16 +482,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1773389992, - "narHash": "sha256-wvfdLLWJ2I9oEpDd9PfMA8osfIZicoQ5MT1jIwNs9Tk=", + "lastModified": 1752077645, + "narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c06b4ae3d6599a672a6210b7021d699c351eebda", + "rev": "be9e214982e20b8310878ac2baa063a961c1bdf6", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -316,6 +511,21 @@ "type": "github" } }, + "nixpkgs-lib_2": { + "locked": { + "lastModified": 1765674936, + "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs-nixcord": { "locked": { "lastModified": 1773222311, @@ -334,11 +544,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1773375660, - "narHash": "sha256-SEzUWw2Rf5Ki3bcM26nSKgbeoqi2uYy8IHVBqOKjX3w=", + "lastModified": 1773524153, + "narHash": "sha256-Jms57zzlFf64ayKzzBWSE2SGvJmK+NGt8Gli71d9kmY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3e20095fe3c6cbb1ddcef89b26969a69a1570776", + "rev": "e9f278faa1d0c2fc835bd331d4666b59b505a410", "type": "github" }, "original": { @@ -350,6 +560,22 @@ }, "nixpkgs_2": { "locked": { + "lastModified": 1773389992, + "narHash": "sha256-wvfdLLWJ2I9oEpDd9PfMA8osfIZicoQ5MT1jIwNs9Tk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c06b4ae3d6599a672a6210b7021d699c351eebda", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { "lastModified": 1744536153, "narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", "owner": "NixOS", @@ -370,7 +596,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems" + "systems": "systems_2" }, "locked": { "lastModified": 1772402258, @@ -386,16 +612,67 @@ "type": "github" } }, + "nvf": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts_4", + "mnw": "mnw", + "ndg": "ndg", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_3" + }, + "locked": { + "lastModified": 1773579076, + "narHash": "sha256-GRuK5zh0Z68YXIoTpHQW2CFdpZRhGJRxpYh4vPOqjt4=", + "owner": "NotAShelf", + "repo": "nvf", + "rev": "baf207654ca613173e9d4b5255dba52f8c0c5577", + "type": "github" + }, + "original": { + "owner": "NotAShelf", + "repo": "nvf", + "type": "github" + } + }, + "otter-launcher": { + "inputs": { + "flake-parts": "flake-parts_5", + "home-manager": "home-manager_2", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_4" + }, + "locked": { + "lastModified": 1773508893, + "narHash": "sha256-gLLCmLv46HrBzVuRlbDz0h/vniefirl4wNWePFTkrkA=", + "owner": "kuokuo123", + "repo": "otter-launcher", + "rev": "9cd1793065a5f81bfdf09bf5159205203cb15815", + "type": "github" + }, + "original": { + "owner": "kuokuo123", + "repo": "otter-launcher", + "type": "github" + } + }, "root": { "inputs": { "disko": "disko", + "fsel": "fsel", "home-manager": "home-manager", "neovim-nightly-overlay": "neovim-nightly-overlay", "niri": "niri", "nixcord": "nixcord", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "nixvim": "nixvim", + "nvf": "nvf", + "otter-launcher": "otter-launcher", "satty": "satty", "sops-nix": "sops-nix", "spicetify-nix": "spicetify-nix", @@ -403,9 +680,26 @@ "yazi": "yazi" } }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1752428706, + "narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "591e3b7624be97e4443ea7b5542c191311aa141d", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, "rust-overlay": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1748140821, @@ -470,11 +764,11 @@ ] }, "locked": { - "lastModified": 1773096132, - "narHash": "sha256-M3zEnq9OElB7zqc+mjgPlByPm1O5t2fbUrH3t/Hm5Ag=", + "lastModified": 1773550941, + "narHash": "sha256-wa/++bL2QeMUreNFBZEWluQfOYB0MnQIeGNMuaX9sfs=", "owner": "Mic92", "repo": "sops-nix", - "rev": "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784", + "rev": "c469b6885f0dcd5c7c56bd935a0f08dbcd9e79e1", "type": "github" }, "original": { @@ -488,14 +782,14 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2" + "systems": "systems_5" }, "locked": { - "lastModified": 1773161309, - "narHash": "sha256-k2Un0blYBeoN8mB5HO4rqCKISb427IWy0fzCdCUIcio=", + "lastModified": 1773553305, + "narHash": "sha256-q8TGUGhP8JRc3qm/m8GeFQM9vgvqKpzQRQZXA99OhoU=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "61df7293cf732c7b66cce7f8b46f7017e721a6cd", + "rev": "1eda71bfb3ba85fbe1b3169e8515a3d8d9512113", "type": "github" }, "original": { @@ -549,9 +843,54 @@ "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=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "waybar": { "inputs": { - "flake-compat": "flake-compat_2", + "flake-compat": "flake-compat_3", "nixpkgs": [ "nixpkgs" ] @@ -605,18 +944,18 @@ }, "yazi": { "inputs": { - "flake-utils": "flake-utils", + "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" ], "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1773404924, - "narHash": "sha256-HczaRbfStxmt83umm0Eiie8ECdUELPAcoH/q/DdYpss=", + "lastModified": 1773559138, + "narHash": "sha256-ZOEABQupsxZoMureDvrS5zg59DENjrEM1oRcfA4ctk0=", "owner": "sxyazi", "repo": "yazi", - "rev": "fa1ee46edce52e0d3bc0c4179b9d65ca46b1efbd", + "rev": "d22c96b69ced5571bd73c38585d4c48401ee3abd", "type": "github" }, "original": { @@ -46,6 +46,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + nvf = { + url = "github:NotAShelf/nvf"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + neovim-nightly-overlay = { url = "github:nix-community/neovim-nightly-overlay"; inputs.nixpkgs.follows = "nixpkgs"; @@ -60,6 +65,16 @@ url = "github:Gerg-L/spicetify-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; + + otter-launcher = { + url = "github:kuokuo123/otter-launcher"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + fsel = { + url = "github:Mjoyufull/fsel"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = diff --git a/hm/editors/editors.nix b/hm/editors/editors.nix index 02c349b..1dac436 100644 --- a/hm/editors/editors.nix +++ b/hm/editors/editors.nix @@ -3,6 +3,6 @@ imports = [ ./helix.nix ./nixvim/nixvim.nix - # ./nvf.nix + ./nvf/nvf.nix ]; } diff --git a/hm/editors/nvf.nix b/hm/editors/nvf/nvf.nix index 6da28fe..f9ba866 100644 --- a/hm/editors/nvf.nix +++ b/hm/editors/nvf/nvf.nix @@ -1,8 +1,16 @@ -{ inputs, config, lib, pkgs, ... }: +{ + inputs, + config, + lib, + pkgs, + ... +}: let cfg = config.hm.editors.nvf; in { + imports = [ inputs.nvf.homeManagerModules.default ]; + options.hm.editors.nvf.enable = lib.mkEnableOption "enables nvf configuration framework"; config = lib.mkIf cfg.enable { programs.nvf = { @@ -13,13 +21,13 @@ in viAlias = true; vimAlias = true; - + theme = { enable = true; name = "gruvbox"; style = "dark"; }; - + statusline = { lualine = { enable = true; @@ -27,19 +35,19 @@ in }; }; - autopairs.nvim-autopairs.enable = true; + autopairs.nvim-autopairs.enable = true; lsp.enable = true; - languages = { - nix = { - enable = true; - format = { + languages = { + nix = { enable = true; - type = "alejandra"; + format = { + enable = true; + type = "alejandra"; }; }; - clang.enable = true; + clang.enable = true; }; }; }; diff --git a/hm/env/env.nix b/hm/env/env.nix index a5caec2..6222ffb 100644 --- a/hm/env/env.nix +++ b/hm/env/env.nix @@ -4,6 +4,7 @@ ./niri/niri.nix ./awww.nix + ./otter.nix ./cursor.nix ./fuzzel.nix ./screenshot.nix @@ -12,5 +13,6 @@ ./theme.nix ./waybar.nix ./mako.nix + ./fsel.nix ]; } diff --git a/hm/env/fsel.nix b/hm/env/fsel.nix new file mode 100644 index 0000000..faa7f24 --- /dev/null +++ b/hm/env/fsel.nix @@ -0,0 +1,16 @@ +{ + inputs, + config, + lib, + pkgs, + ... +}: +let + cfg = config.hm.env.fsel; +in +{ + options.hm.env.fsel.enable = lib.mkEnableOption "enables fsel"; + config = lib.mkIf cfg.enable { + home.packages = [ inputs.fsel.packages.${pkgs.stdenv.hostPlatform.system}.default ]; + }; +} diff --git a/hm/env/niri/binds.nix b/hm/env/niri/binds.nix index 27eb583..c5c1f56 100644 --- a/hm/env/niri/binds.nix +++ b/hm/env/niri/binds.nix @@ -11,6 +11,15 @@ let ssPath = "${toString config.hm.conf.xdg-dirs.storagePath}/pics/ss/$(date +%Y-%m-%d_%H-%M-%S)"; obsEnabled = config.hm.soft.obs.enable or false; obsPass = if obsEnabled then osConfig.sops.secrets."obs/websocket_password".path else ""; + otter-menu = pkgs.writeShellScriptBin "otter-menu" '' + ${pkgs.foot}/bin/footclient -a otter-launcher otter-launcher & + ${pkgs.niri}/bin/niri msg event-stream | while read -r line; do + if echo "$line" | ${pkgs.ripgrep-all}/bin/rga -aq "Window focus changed"; then + ${pkgs.procps}/bin/pkill -f "otter-launcher" + exit 0 + fi + done + ''; in { # --- System & Media --- @@ -46,6 +55,7 @@ in "Super+B".action = spawn "librewolf"; "Super+S".action = spawn "spotify"; "Super+E".action = spawn "thunar"; + "Super+Space".action = spawn "${otter-menu}/bin/otter-menu"; # --- Navigation: Columns & Workspaces --- "Mod+H".action = focus-column-or-monitor-left; diff --git a/hm/env/niri/niri.nix b/hm/env/niri/niri.nix index 2274259..8850396 100644 --- a/hm/env/niri/niri.nix +++ b/hm/env/niri/niri.nix @@ -82,6 +82,21 @@ in }; window-rules = [ { + matches = [ { app-id = "^otter-launcher$"; } ]; + open-floating = true; + + default-column-width.fixed = 700; + default-window-height.fixed = 450; + + default-floating-position = { + relative-to = "top"; + x = 0; + y = 100; + }; + + focus-ring.active.color = "#fab387"; + } + { matches = [ { app-id = "^Bitwarden$"; } { app-id = "^org\\.keepassxc\\.KeePassXC$"; } diff --git a/hm/env/otter.nix b/hm/env/otter.nix new file mode 100644 index 0000000..b7324e0 --- /dev/null +++ b/hm/env/otter.nix @@ -0,0 +1,191 @@ +{ + inputs, + config, + lib, + ... +}: +let + cfg = config.hm.env.otter; +in +{ + imports = [ inputs.otter-launcher.homeModules.otter-launcher ]; + + options.hm.env.otter.enable = lib.mkEnableOption "enables otter launcher"; + config = lib.mkIf cfg.enable { + programs.otter-launcher = { + enable = true; + # settings = { + # interface = { + # suggestion_mode = "list"; + # }; + # }; + settingsExtra = '' + [general] + default_module = "gg" # module to run when no prefix is matched + empty_module = "app" # run with an empty prompt + exec_cmd = "sh -c" # exec command of your shell + # for example: "bach -c" for bash; "zsh -c" for zsh; also accept wm commands like "hyprctl dispatch exec" + vi_mode = false # set true to use vi keybinds, false emacs keybinds + esc_to_abort = true # useful for vi users + cheatsheet_entry = "?" # when prompted, will show a list of configured modules + cheatsheet_viewer = "less -R; clear" # command to show cheatsheet; through piping stdout + clear_screen_after_execution = false + loop_mode = false # don't quit after executing a module, useful with scratchpads; stderr is hidden in loop mode + external_editor = "vi" # if set, press ctrl+x ctrl+ee (or v in vi normal mode) to edit prompt in the specified program + delay_startup = 0 # sometimes the otter runs too fast even before the terminal window is ready; this slows it down by milliseconds; useful when chafa image is skewed + #callback = "" # if set, will run after module execution; for example, calling swaymsg to adjust window size + + + # ANSI color codes are allowed. However, \x1b should be replaced with \u001B, because the rust toml crate cannot read \x as an escaped character + [interface] + # use three quotes to write longer codes + header = """ + \u001B[34;1m$USER@$(printf $HOSTNAME)\u001B[0m \u001B[31m\u001B[0m $(mpstat | awk 'FNR ==4 {print $4}') + """ + header_cmd = "" # run a command and print stdout above the header + header_cmd_trimmed_lines = 0 # remove trailing lines from header_cmd output, in case of some programs appending excessive empty lines + place_holder = "otterly awesome" # at the input field + suggestion_mode = "list" # available options: list, hint + separator = " \u001B[90mmodules ────────────────" # add a line between intput field and suggestion list; only effective in list mode + footer = "" # add a line after suggestion list + suggestion_lines = 3 # 0 to disable suggestions and tab completion + list_prefix = " " + selection_prefix = "\u001B[31;1m▌ " + prefix_padding = 3 # format prefixes to have a uniformed width + default_module_message = " \u001B[33msearch\u001B[0m the internet" # shown when the default module is in use + empty_module_message = "" # shown when the empty module is in use + customized_list_order = false # false to list modules alphabetically; true to list as per the configured order in the below [[modules]] section + indicator_with_arg_module = "" # the sign showing whether a module should run with an argument + indicator_no_arg_module = "" + # below color options affect all modules; per-module coloring can be configured using ansi codes individually + prefix_color = "\u001B[33m" + description_color = "\u001B[39m" + place_holder_color = "\u001B[30m" + hint_color = "\u001B[30m" # suggestion color in hint mode + # move the interface rightward or downward + move_interface_right = 16 + move_interface_down = 1 + + + # overlay is a floating layer that can be printed with stdout and moved around; useful for integrating chafa images + [overlay] + overlay_cmd = """ + """ + overlay_height = 0 + + + # modules are defined as followed + [[modules]] + description = "google search" + prefix = "gg" + cmd = "xdg-open https://www.google.com/search?q='{}'" + with_argument = true # if true, {} in cmd will be replaced with user input. if not explicitly set, taken as false. + url_encode = true # should be true when calling webpages; this ensures special characters in url being readable to browsers; taken as false if not explicitly set + unbind_proc = true # run cmd in a forked shell as opposed to as a child process (simply by prepending setsid -f to the configured cmd); useful for launching gui programs; taken as false if not explicitly set; try wm's exec command for unbinding if this option goes wrong (like swaymsg exec) + + # fzf is needed to run below functions + [[modules]] + description = "desktop programs" + prefix = "app" + cmd = """ + desktop_file() { + find /usr/share/applications -name "*.desktop" 2>/dev/null + find /usr/local/share/applications -name "*.desktop" 2>/dev/null + find "$HOME/.local/share/applications" -name "*.desktop" 2>/dev/null + find /var/lib/flatpak/exports/share/applications -name "*.desktop" 2>/dev/null + find "$HOME/.local/share/flatpak/exports/share/applications" -name "*.desktop" 2>/dev/null + } + selected="$(desktop_file | awk -F/ '{name=$NF; sub(/\\.desktop$/, "", name); print name}' | sort -k1,1 | cut -f2- | fzf --reverse --padding 1,3 --info-command 'echo -e " desktop apps ($FZF_POS/$FZF_TOTAL_COUNT)"' --cycle --gutter " " --pointer " ▌" --color "bg+:-1,pointer:1,info:8,separator:8,scrollbar:0" --prompt ' ' -m -d / --with-nth -1 )" + [ -z "$selected" ] && exit + echo "$selected" | while read -r line ; do setsid -f gtk-launch "$(basename $line)"; done + """ + + [[modules]] + description = "power menu (fzf)" + prefix = "po" + cmd = """ + function power { + if [[ -n $1 ]]; then + case $1 in + "logout") session=`loginctl session-status | head -n 1 | awk '{print $1}'`; loginctl terminate-session $session ;; + "suspend") systemctl suspend ;; + "hibernate") systemctl hibernate ;; + "reboot") systemctl reboot ;; + "shutdown") systemctl poweroff ;; + esac fi } + power $(echo -e 'reboot\nshutdown\nlogout\nsuspend\nhibernate' | fzf --reverse --padding 1,2 --info-command 'printf " power menu ($FZF_POS/$FZF_TOTAL_COUNT)"' --cycle --gutter " " --pointer " ▌" --color "bg+:-1,pointer:1,info:8,separator:8,scrollbar:0" --prompt ' ' | tail -1) + """ + + [[modules]] + description = "run commands" + prefix = "sh" + cmd = """ + $(printf $TERM | sed 's/xterm-//g') -e sh -c "{}" + """ + with_argument = true + unbind_proc = true + + [[modules]] + description = "search archwiki" + prefix = "aw" + cmd = "xdg-open https://wiki.archlinux.org/index.php?search='{}'" + with_argument = true + url_encode = true + unbind_proc = true + + [[modules]] + description = "search packages" + prefix = "pac" + cmd = "xdg-open https://archlinux.org/packages/?q='{}'" + with_argument = true + url_encode = true + unbind_proc = true + + [[modules]] + description = "search the AUR" + prefix = "aur" + cmd = "xdg-open https://aur.archlinux.org/packages?K='{}'" + with_argument = true + url_encode = true + unbind_proc = true + + [[modules]] + description = "cambridge dict" + prefix = "dc" + cmd = "xdg-open 'https://dictionary.cambridge.org/dictionary/english/{}'" + with_argument = true + url_encode = true + unbind_proc = true + + [[modules]] + description = "open files (fzf)" + prefix = "fo" + cmd = """ + find $HOME -type f -not -path '*/.cache/*' 2>/dev/null | fzf --reverse --padding 1,3 --info-command 'printf " files ($FZF_POS/$FZF_TOTAL_COUNT)"' --cycle --gutter ' ' --pointer ' ▌' --color 'bg+:-1,pointer:1,info:8,separator:8,scrollbar:0' --prompt ' ' | setsid -f xargs -r -I [] xdg-open '[]' + """ + + [[modules]] + description = "open dirs (yazi)" + prefix = "yz" + cmd = """ + find $HOME -type d -not -path '*/.cache/*' 2>/dev/null | fzf --reverse --padding 1,3 --info-command 'printf " directories ($FZF_POS/$FZF_TOTAL_COUNT)"' --cycle --gutter ' ' --pointer ' ▌' --color 'bg+:-1,pointer:1,info:8,separator:8,scrollbar:0' --prompt ' ' | xargs -r -I [] setsid -f "$(echo $TERM | sed 's/xterm-//g')" -e yazi '[]' + """ + + [[modules]] + description = "ChatGPT prompt" + prefix = "gpt" + with_argument = true + unbind_proc = true + cmd = """ + function chat { + encoded="$(jq -sRr @uri)" + exec xdg-open "https://chat.openai.com/?prompt=$encoded" + } + chat <<'EOF' + {} + EOF + """ + ''; + }; + }; +} diff --git a/hm/shell/cli.nix b/hm/shell/cli.nix index a9e8397..7011d4d 100644 --- a/hm/shell/cli.nix +++ b/hm/shell/cli.nix @@ -178,7 +178,8 @@ in }; }; }; - programs.pls = { + # TODO: set up lsd + programs.lsd = { enable = true; enableFishIntegration = true; }; diff --git a/hm/shell/fish.nix b/hm/shell/fish.nix index 20b9a95..172d192 100644 --- a/hm/shell/fish.nix +++ b/hm/shell/fish.nix @@ -13,27 +13,6 @@ in programs.fish = { enable = true; - functions = { - rga-fzf = { - body = '' - set -l RG_PREFIX "rga --files-with-matches --smart-case" - set -l file ( - FZF_DEFAULT_COMMAND="$RG_PREFIX '$argv[1]'" \ - fzf --sort \ - --preview='test -n {}; and rga --pretty --context 5 {q} {}' \ - --phony -q "$argv[1]" \ - --bind "change:reload:$RG_PREFIX {q}" \ - --preview-window="70%:wrap" - ) - - if test -n "$file" - echo "Opening $file..." - xdg-open "$file" - end - ''; - }; - }; - interactiveShellInit = '' set fish_greeting fastfetch diff --git a/hm/soft/browser.nix b/hm/soft/browser.nix index dd8f129..fd57809 100644 --- a/hm/soft/browser.nix +++ b/hm/soft/browser.nix @@ -16,10 +16,130 @@ in (lib.mkIf cfg.librewolf.enable { programs.librewolf = { enable = true; - settings."ui.key.menuAccessKeyFocuses" = false; + settings = { + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + }; + + profiles = { + main = { + id = 0; + name = "main"; + isDefault = true; + search = { + force = true; + engines = { + "SearXNG" = { + urls = [ { template = "https://sxng.violets-purgatory.dev/search?q={searchTerms}"; } ]; + definedAliases = [ "@s" ]; + }; + "NixOS Packages" = { + urls = [ { template = "https://search.nixos.org/packages?channel=unstable&query={searchTerms}"; } ]; + icon = ""; + definedAliases = [ "@np" ]; + }; + "NixOS Options" = { + urls = [ { template = "https://search.nixos.org/options?channel=unstable&query={searchTerms}"; } ]; + icon = ""; + definedAliases = [ "@no" ]; + }; + "Home Manager Options" = { + urls = [ + { template = "https://home-manager-options.extranix.com/?query={searchTerms}&release=master"; } + ]; + definedAliases = [ "@hm" ]; + }; + }; + }; + settings = { + "identity.fxaccounts.enabled" = true; + + # --- Privacy & Fingerprinting --- + "privacy.resistFingerprinting" = true; + "privacy.fingerprintingProtection" = true; + "privacy.query_stripping.enabled" = true; + "privacy.query_stripping.enabled.pbmode" = true; + "privacy.trackingprotection.enabled" = true; + "privacy.trackingprotection.socialtracking.enabled" = true; + "privacy.trackingprotection.emailtracking.enabled" = true; + "privacy.bounceTrackingProtection.mode" = 1; + "privacy.annotate_channels.strict_list.enabled" = true; + "privacy.clearOnShutdown_v2.formdata" = true; + + # --- Data Collection & Form Security --- + "dom.forms.autocomplete.formautofill" = false; + "signon.management.page.breach-alerts.enabled" = false; + "browser.translations.enable" = false; + "browser.region.update.enabled" = false; + + # --- Search & URL Bar --- + "browser.urlbar.shortcuts.bookmarks" = false; + "browser.urlbar.shortcuts.history" = false; + "browser.urlbar.shortcuts.tabs" = false; + "browser.urlbar.shortcuts.actions" = false; + "browser.urlbar.showSearchTerms.enabled" = false; + + # --- Networking & Performance --- + "network.proxy.type" = 0; + "network.prefetch-next" = false; + "network.predictor.enabled" = false; + "network.http.speculative-parallel-limit" = 0; + "network.early-hints.preconnect.max_connections" = 0; + "network.connectivity-service.enabled" = false; + "network.captive-portal-service.enabled" = false; + "security.tls.enable_0rtt_data" = false; + + # --- Interface & De-clutter --- + "browser.startup.page" = 3; + "browser.startup.homepage" = "chrome://browser/content/blanktab.html"; + "browser.newtabpage.enabled" = false; + "browser.newtabpage.activity-stream.showSearch" = false; + "browser.newtabpage.activity-stream.showSponsoredCheckboxes" = false; + "browser.bookmarks.restore_default_bookmarks" = false; + "media.hardwaremediakeys.enabled" = false; + "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; + "layout.spellcheckDefault" = 0; + + # --- Safe Browsing (Privacy Trade-off) --- + "browser.safebrowsing.downloads.remote.enabled" = false; + "browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false; + "browser.safebrowsing.downloads.remote.block_uncommon" = false; + }; + userChrome = '' + #TabsToolbar { visibility: collapse !important; } + #sidebar-header { display: none !important; } + #toolbar-menubar { display: none !important; } + ''; + }; + privacy = { + id = 1; + name = "privacy"; + settings = { + "media.peerconnection.enabled" = false; + "network.proxy.type" = 1; + + "network.proxy.http" = "127.0.0.1"; + "network.proxy.http_port" = 4444; + + "network.proxy.ssl" = "127.0.0.1"; + "network.proxy.ssl_port" = 4444; + + "network.proxy.no_proxies_on" = "localhost, 127.0.0.1"; + + "network.http.proxy.pipelining" = true; + "network.proxy.share_proxy_settings" = true; + + "network.prefetch-next" = false; + "network.dns.disablePrefetch" = true; + }; + userChrome = '' + #TabsToolbar { visibility: collapse !important; } + #sidebar-header { display: none !important; } + #toolbar-menubar { display: none !important; } + ''; + }; + }; }; }) - (lib.mkIf cfg.brave.enable { home.packages = [ pkgs.brave ]; }) diff --git a/hm/soft/czkawka-v11.nix b/hm/soft/czkawka-v11.nix deleted file mode 100644 index 781da99..0000000 --- a/hm/soft/czkawka-v11.nix +++ /dev/null @@ -1,97 +0,0 @@ -{ - lib, - atk, - cairo, - callPackage, - fetchFromGitHub, - gdk-pixbuf, - glib, - gobject-introspection, - gtk4, - pango, - pkg-config, - rustPlatform, - stdenv, - testers, - wrapGAppsHook4, - xvfb-run, - versionCheckHook, -}: - -let - self = rustPlatform.buildRustPackage { - pname = "czkawka"; - version = "11.0.1"; - - src = fetchFromGitHub { - owner = "qarmin"; - repo = "czkawka"; - tag = self.version; - hash = "sha256-ke6N3vuKPGolfh6XpAg3/9dtwd09eX53fN2klUwwNwQ="; - }; - - cargoHash = "sha256-fx2ZH4I2WYCdMgNoKQuBBEJrPjmgTRPeVM2L+TWYn54="; - - nativeBuildInputs = [ - gobject-introspection - pkg-config - wrapGAppsHook4 - ]; - - buildInputs = [ - atk - cairo - gdk-pixbuf - glib - gtk4 - pango - ]; - - nativeCheckInputs = [ xvfb-run ]; - - strictDeps = true; - - doCheck = stdenv.hostPlatform.isLinux && (stdenv.hostPlatform == stdenv.buildPlatform); - - checkPhase = '' - runHook preCheck - xvfb-run cargo test - runHook postCheck - ''; - - postInstall = '' - install -Dm444 -t $out/share/applications data/com.github.qarmin.czkawka.desktop - install -Dm444 -t $out/share/icons/hicolor/scalable/apps data/icons/com.github.qarmin.czkawka.svg - install -Dm444 -t $out/share/icons/hicolor/scalable/apps data/icons/com.github.qarmin.czkawka-symbolic.svg - install -Dm444 -t $out/share/metainfo data/com.github.qarmin.czkawka.metainfo.xml - ''; - - nativeInstallCheckInputs = [ versionCheckHook ]; - versionCheckProgram = "${placeholder "out"}/bin/czkawka_cli"; - doInstallCheck = true; - - passthru = { - tests.version = testers.testVersion { - package = self; - command = "czkawka_cli --version"; - }; - # Ensure you have a wrapper.nix in the same folder if using this - wrapper = callPackage ./wrapper.nix { - czkawka = self; - }; - }; - - meta = { - homepage = "https://github.com/qarmin/czkawka"; - description = "Simple, fast and easy to use app to remove unnecessary files from your computer"; - changelog = "https://github.com/qarmin/czkawka/raw/${self.version}/Changelog.md"; - license = with lib.licenses; [ mit ]; - mainProgram = "czkawka_gui"; - maintainers = with lib.maintainers; [ - yanganto - _0x4A6F - ]; - }; - }; -in -self diff --git a/hm/soft/nixcord.nix b/hm/soft/nixcord.nix index a6b4217..bd43501 100644 --- a/hm/soft/nixcord.nix +++ b/hm/soft/nixcord.nix @@ -20,7 +20,7 @@ in equibop ]; programs.nixcord = { - enable = true; + # enable = true; discord = { enable = true; autoscroll.enable = true; @@ -28,10 +28,10 @@ in vencord.enable = false; equicord.enable = true; }; - # equibop = { - # enable = true; - # autoscroll.enable = true; - # }; + equibop = { + enable = true; + autoscroll.enable = true; + }; config = { themeLinks = [ "https://raw.codeberg.page/AllPurposeMat/Disblock-Origin/DisblockOrigin.theme.css" ]; frameless = true; diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix index 94672aa..ae4d569 100644 --- a/hosts/desktop/configuration.nix +++ b/hosts/desktop/configuration.nix @@ -61,6 +61,7 @@ users.enable = true; }; srv = { + yggdrasil.enable = true; i2p.enable = true; files = { enable = true; diff --git a/hosts/desktop/home.nix b/hosts/desktop/home.nix index a637d12..c17502d 100644 --- a/hosts/desktop/home.nix +++ b/hosts/desktop/home.nix @@ -23,7 +23,9 @@ }; editors.nixvim.enable = true; env = { + fsel.enable = true; mako.enable = true; + otter.enable = true; niri.enable = true; cursor = { size = 48; diff --git a/os/srv/files.nix b/os/srv/files.nix index 719642c..22117d0 100644 --- a/os/srv/files.nix +++ b/os/srv/files.nix @@ -33,7 +33,7 @@ in }; environment.systemPackages = with pkgs; [ file-roller - gdu + dua pxz pigz ]; diff --git a/os/srv/gaming.nix b/os/srv/gaming.nix index 00e6228..acfd754 100644 --- a/os/srv/gaming.nix +++ b/os/srv/gaming.nix @@ -70,12 +70,8 @@ in localNetworkGameTransfers.openFirewall = true; dedicatedServer.openFirewall = true; remotePlay.openFirewall = false; - # extest.enable = true; + extest.enable = true; protontricks.enable = true; - - extraCompatPackages = with pkgs; [ - proton-ge-bin - ]; }; environment.systemPackages = with pkgs; [ steamtinkerlaunch ]; }) diff --git a/os/srv/srv.nix b/os/srv/srv.nix index 4edd742..a496a33 100644 --- a/os/srv/srv.nix +++ b/os/srv/srv.nix @@ -14,5 +14,6 @@ ./monero.nix ./vpn.nix ./i2p.nix + ./yggdrasil.nix ]; } diff --git a/os/srv/yggdrasil.nix b/os/srv/yggdrasil.nix new file mode 100644 index 0000000..91bf6f0 --- /dev/null +++ b/os/srv/yggdrasil.nix @@ -0,0 +1,14 @@ +{ + config, + lib, + ... +}: +let + cfg = config.os.srv.yggdrasil; +in +{ + options.os.srv.yggdrasil.enable = lib.mkEnableOption "enables yggdrasild"; + + config = lib.mkIf cfg.enable { + }; +} |
