Compare commits

..

20 Commits

Author SHA1 Message Date
Sweetbread c49f782e11 Impreza: add wallpaper 2026-04-24 22:43:33 +03:00
Sweetbread fd9ee227a6 nvidia: fix backlight 2026-04-21 17:48:52 +03:00
Sweetbread 55cb613dfe fixup! vpn: change engine 2026-04-08 21:48:12 +03:00
Sweetbread 5709bf861a fixup! waybar for mee<3 2026-04-08 16:29:08 +03:00
Sweetbread 296312e960 fixup! Update system 2026-04-08 00:56:10 +03:00
Chest 03f0969ad3 waybar for mee<3 2026-04-08 00:52:08 +03:00
Chest efe001f4da vpn for gpt 2026-04-07 22:40:31 +03:00
Sweetbread 9d30ab07fa vpn: change engine 2026-04-03 22:45:28 +03:00
Sweetbread b0c9f8dabf fixup! wip: cava 2026-04-03 22:44:41 +03:00
Sweetbread d4b24ba000 Update system 2026-04-03 04:39:26 +03:00
Sweetbread f78513db44 wip: cava 2026-04-03 04:39:25 +03:00
Sweetbread aa3fb4b2ce starship: fix os icon 2026-04-03 04:39:25 +03:00
Sweetbread ec6558a6ee hyprland: add zoom 2026-04-03 04:39:25 +03:00
Sweetbread 1a89460348 tty: fix Cyrillic 2026-04-03 04:39:25 +03:00
Sweetbread 79574a4238 ssh: keepalive 2026-04-03 04:39:25 +03:00
Sweetbread 7fc241affc Replace AGS with waybar 2026-04-03 04:39:25 +03:00
Sweetbread 37fc953d3a Update system 2026-04-03 04:39:25 +03:00
Sweetbread f189ff1d40 Style hyprland 2026-03-17 19:22:08 +03:00
Sweetbread 258a155c00 Make VPN list via flake
Wow, I didn't know I can do this...
2026-03-17 19:22:08 +03:00
Sweetbread efc3a7fbc8 Update system 2026-03-17 19:22:08 +03:00
33 changed files with 442 additions and 983 deletions
Generated
+138 -104
View File
@@ -7,11 +7,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1780372639, "lastModified": 1774186997,
"narHash": "sha256-VFzXYHlIGwO4h4ovtnpZj9sX/Qu6+dlI00sXjHdwi2w=", "narHash": "sha256-hyNVlhAqmwcBPl7XRkxbGcMt1BfCOdvuEfBDUf0k8Oo=",
"owner": "ezKEa", "owner": "ezKEa",
"repo": "aagl-gtk-on-nix", "repo": "aagl-gtk-on-nix",
"rev": "1ee1e8864a1fcfcc21a5fb5af4bd328b3c829f42", "rev": "546e95f7ec74892a31f883a10b1723c35f2c2edd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -23,7 +23,7 @@
"ags": { "ags": {
"inputs": { "inputs": {
"astal": "astal", "astal": "astal",
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1744557573, "lastModified": 1744557573,
@@ -132,11 +132,11 @@
"base16-helix": { "base16-helix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1776754714, "lastModified": 1760703920,
"narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=", "narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-helix", "repo": "base16-helix",
"rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581", "rev": "d646af9b7d14bff08824538164af99d0c521b185",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -165,11 +165,11 @@
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1779670703, "lastModified": 1764873433,
"narHash": "sha256-UdfMivNMwCCqQsYDg5pSz8X2IOaOrIZLIIy+Bg3CO2o=", "narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=",
"owner": "rafaelmardojai", "owner": "rafaelmardojai",
"repo": "firefox-gnome-theme", "repo": "firefox-gnome-theme",
"rev": "942159e73e40bf785816f7f1f5feed9ef3d7c8f9", "rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -218,11 +218,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1778716662, "lastModified": 1767609335,
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", "rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -290,18 +290,20 @@
"gnome-shell": { "gnome-shell": {
"flake": false, "flake": false,
"locked": { "locked": {
"host": "gitlab.gnome.org",
"lastModified": 1767737596, "lastModified": 1767737596,
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=", "narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
"owner": "GNOME", "owner": "GNOME",
"repo": "gnome-shell", "repo": "gnome-shell",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49", "rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "github" "type": "gitlab"
}, },
"original": { "original": {
"host": "gitlab.gnome.org",
"owner": "GNOME", "owner": "GNOME",
"ref": "gnome-49",
"repo": "gnome-shell", "repo": "gnome-shell",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49", "type": "gitlab"
"type": "github"
} }
}, },
"home-manager": { "home-manager": {
@@ -311,11 +313,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1780679734, "lastModified": 1774647770,
"narHash": "sha256-KmRNvpNOb7QEORa06bVgjW9kITcx0VhsI7w0vhmZyD8=", "narHash": "sha256-UNNi14XiqRWWjO8ykbFwA5wRwx7EscsC+GItOVpuGjc=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "b2b7db486e06e098711dc291bb25db82850e1d16", "rev": "02371c05a04a2876cf92e2d67a259e8f87399068",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -393,7 +395,7 @@
"hyprutils": "hyprutils", "hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner", "hyprwayland-scanner": "hyprwayland-scanner",
"hyprwire": "hyprwire", "hyprwire": "hyprwire",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_4",
"pre-commit-hooks": "pre-commit-hooks", "pre-commit-hooks": "pre-commit-hooks",
"systems": "systems", "systems": "systems",
"xdph": "xdph" "xdph": "xdph"
@@ -476,11 +478,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1779209205, "lastModified": 1771865848,
"narHash": "sha256-asc7NpeB8vD66gvZeYcQkaWOs2X6Jgd29vBtP17vjxo=", "narHash": "sha256-xwNa+1D8WPsDnJtUofDrtyDCZKZotbUymzV/R5s+M0I=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-plugins", "repo": "hyprland-plugins",
"rev": "1cb37fad68dff5f5840010c314fed5809b4ee66f", "rev": "b85a56b9531013c79f2f3846fd6ee2ff014b8960",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -676,11 +678,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1779560665, "lastModified": 1770841267,
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=", "narHash": "sha256-9xejG0KoqsoKEGp2kVbXRlEYtFFcDTHjidiuX8hGO44=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", "rev": "ec7c70d12ce2fc37cb92aff673dcdca89d187bae",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -692,37 +694,53 @@
}, },
"nixpkgs-pinned": { "nixpkgs-pinned": {
"locked": { "locked": {
"lastModified": 1779971959, "lastModified": 1764517877,
"narHash": "sha256-R5nauXyqyfRUFiZycFFZdkF7wl6eaUpPLst35+2nJQY=", "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ec942ba042dad5ef097e2ef3a3effc034241f011", "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "ec942ba042dad5ef097e2ef3a3effc034241f011", "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c",
"type": "github" "type": "github"
} }
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1780453794, "lastModified": 1774388614,
"narHash": "sha256-bXMRa9VTsHSPXL4Cw8R6JJLQeY3Y/IP4+YJCYVmQ7FY=", "narHash": "sha256-tFwzTI0DdDzovdE9+Ras6CUss0yn8P9XV4Ja6RjA+nU=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "6b316287bae2ee04c9b93c8c858d930fd07d7338", "rev": "1073dad219cb244572b74da2b20c7fe39cb3fa9e",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-26.05", "ref": "nixos-25.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": {
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1743583204, "lastModified": 1743583204,
"narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=",
@@ -738,7 +756,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1772542754, "lastModified": 1772542754,
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=", "narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=",
@@ -754,13 +772,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1780243769, "lastModified": 1774386573,
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=", "narHash": "sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "331800de5053fcebacf6813adb5db9c9dca22a0c", "rev": "46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -770,13 +788,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_5": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1775888245, "lastModified": 1773840656,
"narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=", "narHash": "sha256-9tpvMGFteZnd3gRQZFlRCohVpqooygFuy9yjuyRL2C0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "13043924aaa7375ce482ebe2494338e058282925", "rev": "9cf7092bdd603554bd8b63c216e8943cf9b12512",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -786,13 +804,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_6": { "nixpkgs_7": {
"locked": { "locked": {
"lastModified": 1780243769, "lastModified": 1767767207,
"narHash": "sha256-x5UQuRsH3MqI0U9afaXSNqzTPSeZlRLvFAav2Ux1pNw=", "narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "331800de5053fcebacf6813adb5db9c9dca22a0c", "rev": "5912c1772a44e31bf1c63c0390b90501e5026886",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -802,13 +820,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_7": { "nixpkgs_8": {
"locked": { "locked": {
"lastModified": 1779877693, "lastModified": 1772419343,
"narHash": "sha256-NOF9NAREhxr50bbBfVcVOq+ArCMSoe8dP79Pk2uyARk=", "narHash": "sha256-QU3Cd5DJH7dHyMnGEFfPcZDaCAsJQ6tUD+JuUsYqnKU=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "4100e830e085863741bc69b156ec4ccd53ab5be0", "rev": "93178f6a00c22fcdee1c6f5f9ab92f2072072ea9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -830,11 +848,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1780281641, "lastModified": 1767810917,
"narHash": "sha256-M/+hUKoKbHXpV0xGVfELbN1Ds1aoe3pL5p5/t46YhVo=", "narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "30f9ae2f04174de63ba8bcf3580ca90843b28a01", "rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -873,28 +891,42 @@
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprland": "hyprland", "hyprland": "hyprland",
"hyprland-plugins": "hyprland-plugins", "hyprland-plugins": "hyprland-plugins",
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_5",
"nixpkgs-pinned": "nixpkgs-pinned", "nixpkgs-pinned": "nixpkgs-pinned",
"nixpkgs-stable": "nixpkgs-stable", "nixpkgs-stable": "nixpkgs-stable",
"russia-blocked-geoip": "russia-blocked-geoip",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"stylix": "stylix", "stylix": "stylix",
"yazi": "yazi", "yazi": "yazi"
"yazi-plugins": "yazi-plugins" }
},
"russia-blocked-geoip": {
"flake": false,
"locked": {
"lastModified": 1774691120,
"narHash": "sha256-iy2Uvqrr/7nOLznDNdyV5T5aee7Y+3nMNmoGIjpeUFE=",
"owner": "runetfreedom",
"repo": "russia-blocked-geoip",
"rev": "433641f6807cdaa56c731125b5a367da512987e4",
"type": "github"
},
"original": {
"owner": "runetfreedom",
"ref": "release",
"repo": "russia-blocked-geoip",
"type": "github"
} }
}, },
"rust-overlay": { "rust-overlay": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": "nixpkgs_2"
"aagl",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1780197589, "lastModified": 1770952264,
"narHash": "sha256-FVCr2Ij/jKf59a4LW481eeOF6rJRreOBrVgW/aUBTrw=", "narHash": "sha256-CjymNrJZWBtpavyuTkfPVPaZkwzIzGaf0E/3WgcwM14=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "21632e942d89bf1cce4e5a63d7e58a215a0cbfcc", "rev": "ec6a3d5cdf14bb5a1dd03652bd3f6351004d2188",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -911,11 +943,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1779851998, "lastModified": 1772420823,
"narHash": "sha256-UkkMh3bX9QW4Luqkm98nUaOqKWrU6i65mUnph3WeSSw=", "narHash": "sha256-q3oVwz1Rx41D1D+F6vg41kpOkk3Zi3KwnkHEZp7DCGs=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "6cddd512fa2bf7231f098d3a2f92f6e4cff71e0a", "rev": "458eea8d905c609e9d889423e6b8a1c7bc2f792c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -926,14 +958,14 @@
}, },
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_6"
}, },
"locked": { "locked": {
"lastModified": 1780547341, "lastModified": 1774303811,
"narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=", "narHash": "sha256-fhG4JAcLgjKwt+XHbjs8brpWnyKUfU4LikLm3s0Q/ic=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a", "rev": "614e256310e0a4f8a9ccae3fa80c11844fba7042",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -951,20 +983,21 @@
"firefox-gnome-theme": "firefox-gnome-theme", "firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"gnome-shell": "gnome-shell", "gnome-shell": "gnome-shell",
"nixpkgs": "nixpkgs_6", "nixpkgs": "nixpkgs_7",
"nur": "nur", "nur": "nur",
"systems": "systems_2", "systems": "systems_2",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty", "tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes", "tinted-schemes": "tinted-schemes",
"tinted-tmux": "tinted-tmux", "tinted-tmux": "tinted-tmux",
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1780684162, "lastModified": 1774124764,
"narHash": "sha256-7HslPhFlg9tD5t+E8c5nL9v85TehwSWvwSmk+tarBnI=", "narHash": "sha256-Poz9WTjiRlqZIf197CrMMJfTifZhrZpbHFv0eU1Nhtg=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "e14dbcb3e8ed94de5e85ed9ad133b6017480f86c", "rev": "e31c79f571c5595a155f84b9d77ce53a84745494",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1018,6 +1051,23 @@
"type": "github" "type": "github"
} }
}, },
"tinted-foot": {
"flake": false,
"locked": {
"lastModified": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
}
},
"tinted-kitty": { "tinted-kitty": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -1037,11 +1087,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1777806186, "lastModified": 1767710407,
"narHash": "sha256-PDF0/wObw4nIsSBeXVYLsloXOiphXCgIdsrNcVXguKs=", "narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "0c94645546f4f3ddac77a1a5fce54eb95bf50795", "rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1053,11 +1103,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1778379944, "lastModified": 1767489635,
"narHash": "sha256-wPDFzMGSlARlw0Sfsn48Q2+jPSfk6N0Ng6BC/d+7Q24=", "narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "fe0203a198690e71a5ff11e08812a4673de3678d", "rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1069,11 +1119,11 @@
"tinted-zed": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1778378178, "lastModified": 1767488740,
"narHash": "sha256-OXPXRIQgGwV77HjYRryOHguh4ALX96jkg+tseLkGgHA=", "narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-zed", "repo": "base16-zed",
"rev": "9cd816033ff969415b190722cddf134e78a5665f", "rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1126,15 +1176,15 @@
"yazi": { "yazi": {
"inputs": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_7", "nixpkgs": "nixpkgs_8",
"rust-overlay": "rust-overlay_2" "rust-overlay": "rust-overlay_2"
}, },
"locked": { "locked": {
"lastModified": 1780290961, "lastModified": 1774567340,
"narHash": "sha256-XPSfzLmyGeGMU5o1gaRp8XVVFFLxri93TXpzTr38Ti8=", "narHash": "sha256-skKD1hvAvilKkK406RgNl6X/YJgkSsoZmtHmdfeoyWI=",
"owner": "sxyazi", "owner": "sxyazi",
"repo": "yazi", "repo": "yazi",
"rev": "8e80798984864799cd72b3625b21edc33b1ba1e5", "rev": "935eb6b2989f8a7ce219a2a71a539365c8dccfbb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1142,22 +1192,6 @@
"repo": "yazi", "repo": "yazi",
"type": "github" "type": "github"
} }
},
"yazi-plugins": {
"flake": false,
"locked": {
"lastModified": 1780203849,
"narHash": "sha256-bqGN6JxbU+/o7TlM/Cm9Qj/s1McA4pB5QWArGZPcme4=",
"owner": "yazi-rs",
"repo": "plugins",
"rev": "598cdb671401574ac27aeee257e2f3b0c80610a1",
"type": "github"
},
"original": {
"owner": "yazi-rs",
"repo": "plugins",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",
+7 -7
View File
@@ -21,17 +21,12 @@
inputs = { inputs = {
aagl.url = "github:ezKEa/aagl-gtk-on-nix"; aagl.url = "github:ezKEa/aagl-gtk-on-nix";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05"; nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.11";
nixpkgs-pinned.url = "github:nixos/nixpkgs/ec942ba042dad5ef097e2ef3a3effc034241f011"; nixpkgs-pinned.url = "github:nixos/nixpkgs/2d293cbfa5a793b4c50d17c05ef9e385b90edf6c";
sops-nix.url = "github:Mic92/sops-nix"; sops-nix.url = "github:Mic92/sops-nix";
stylix.url = "github:danth/stylix"; stylix.url = "github:danth/stylix";
ags.url = "github:Aylur/ags/3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6"; ags.url = "github:Aylur/ags/3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6";
yazi.url = "github:sxyazi/yazi"; yazi.url = "github:sxyazi/yazi";
yazi-plugins = {
url = "github:yazi-rs/plugins";
flake = false;
};
hyprland.url = "github:hyprwm/Hyprland/v0.54.2-b"; hyprland.url = "github:hyprwm/Hyprland/v0.54.2-b";
hyprland-plugins = { hyprland-plugins = {
@@ -43,6 +38,11 @@
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
russia-blocked-geoip = {
url = "github:runetfreedom/russia-blocked-geoip/release";
flake = false;
};
}; };
outputs = { self, nixpkgs, nixpkgs-stable, nixpkgs-pinned, home-manager, ... }@inputs: let outputs = { self, nixpkgs, nixpkgs-stable, nixpkgs-pinned, home-manager, ... }@inputs: let
+1 -1
View File
@@ -24,7 +24,7 @@
fileSystems."/mnt/D" = { fileSystems."/mnt/D" = {
device = "/dev/disk/by-label/Data"; device = "/dev/disk/by-label/Data";
fsType = "ntfs3"; fsType = "ntfs";
options = ["umask=0022" "gid=100" "uid=1000" "nofail" ]; options = ["umask=0022" "gid=100" "uid=1000" "nofail" ];
}; };
+5
View File
@@ -39,6 +39,11 @@
''$mainMod, F2, exec, ${lib.getExe monitor-switcher} mirror'' ''$mainMod, F2, exec, ${lib.getExe monitor-switcher} mirror''
''$mainMod, F3, exec, ${lib.getExe monitor-switcher}'' ''$mainMod, F3, exec, ${lib.getExe monitor-switcher}''
]; ];
workspace = [
"2, layout:scrolling"
"4, layout:monocle"
];
}; };
}; };
} }
+2 -31
View File
@@ -1,4 +1,4 @@
{ pkgs, ... }: { {
imports = [ imports = [
./host/bluetooth.nix ./host/bluetooth.nix
./host/bootloader.nix ./host/bootloader.nix
@@ -17,36 +17,7 @@
./host/yggdrasil.nix ./host/yggdrasil.nix
]; ];
programs = { programs.hyprland.enable = true;
dconf.enable = true;
hyprland.enable = true;
};
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
extraPortals = with pkgs; [
xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk
xdg-desktop-portal-termfilechooser
];
config = {
common = {
default = [ "hyprland" "gtk" ];
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
};
hyprland = {
default = [ "hyprland" "gtk" ];
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
};
};
};
services = { services = {
udisks2.enable = true; udisks2.enable = true;
fstrim.enable = true; fstrim.enable = true;
+3 -10
View File
@@ -1,15 +1,8 @@
{ lib, ... }: { {
environment.variables = { environment.variables = {
EDITOR = "hx"; EDITOR = "hx";
RANGER_LOAD_DEFAULT_RC = "FALSE"; RANGER_LOAD_DEFAULT_RC = "FALSE";
# GTK/Electron apps do not consistently use the portal picker unless this QT_QPA_PLATFORMTHEME = "qt5ct";
# variable is present in the graphical session environment. GSETTINGS_BACKEND = "keyfile";
GTK_USE_PORTAL = "1";
# Qt/Telegram-like apps otherwise keep using their own picker. This makes
# them ask xdg-desktop-portal for file/folder selection.
QT_QPA_PLATFORMTHEME = lib.mkForce "xdgdesktopportal";
TDESKTOP_USE_GTK_FILE_DIALOG = "1";
}; };
} }
+1 -1
View File
@@ -9,7 +9,7 @@ lib.mkIf config.programs.gamemode.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
mangohud mangohud
protonup-ng protonup-ng
pkgs-stable.bottles bottles
pkgs-stable.heroic pkgs-stable.heroic
prismlauncher prismlauncher
]; ];
+21 -5
View File
@@ -1,8 +1,24 @@
{ { inputs, pkgs, config, ... }: {
programs.clash-verge = { systemd.services.v2raya = {
enable = true; enable = true;
serviceMode = true; description = "v2rayA gui client";
tunMode = true; after = [ "network.target" ];
autoStart = true; serviceConfig = {
Restart = "always";
ExecStart = "${pkgs.v2raya}/bin/v2rayA";
};
path = with pkgs; [ iptables bash iproute2 ];
wantedBy = [ "multi-user.target" ];
environment = {
V2RAYA_LOG_FILE = "/var/log/v2raya/v2raya.log";
V2RAYA_V2RAY_BIN = pkgs.lib.getExe pkgs.xray;
V2RAY_LOCATION_ASSET = "/etc/v2raya";
XRAY_LOCATION_ASSET = "/etc/v2raya";
};
};
environment.etc = {
"v2raya/ru_geoip.dat".source = "${inputs.russia-blocked-geoip}/geoip.dat";
"v2raya/bolt.db".source = config.sops.secrets.vpn_bolt.path;
}; };
} }
+40
View File
@@ -0,0 +1,40 @@
{ pkgs, inputs, ... }:
{
# Важно: портал должен быть собран под тот же Hyprland, что и сам Hyprland
# (есть отдельная опция именно для этого).
programs.hyprland = {
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
};
xdg.portal = {
enable = true;
# Делает так, что xdg-open идёт через портал (часто полезно для sandbox/FHS/wrappers).
# Опция есть в NixOS как xdg.portal.xdgOpenUsePortal :contentReference[oaicite:2]{index=2}
xdgOpenUsePortal = true;
# Два бэкенда: Hyprland (композитор-специфичное) + GTK (интеграция/диалоги/OpenURI)
extraPortals = [
inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland
pkgs.xdg-desktop-portal-gtk
];
# Роутинг интерфейсов по portals.conf(5):
# xdg-desktop-portal выбирает конфиг по XDG_CURRENT_DESKTOP (с lower-case) :contentReference[oaicite:3]{index=3}
config = {
common = {
default = [ "gtk" ];
"org.freedesktop.impl.portal.FileChooser" = [ "gtk" ];
"org.freedesktop.impl.portal.ScreenCast" = [ "hyprland" ];
"org.freedesktop.impl.portal.Screenshot" = [ "hyprland" ];
"org.freedesktop.impl.portal.GlobalShortcuts" = [ "hyprland" ];
};
# Если XDG_CURRENT_DESKTOP=Hyprland присутствует — предпочитаем Hyprland,
# но оставляем gtk как fallback для интерфейсов, которых нет у hyprland-портала.
hyprland.default = [ "hyprland" "gtk" ];
};
};
}
+1 -1
View File
@@ -4,7 +4,7 @@
persistentKeys = true; persistentKeys = true;
settings = { settings = {
Peers = [ Peers = [
"tls://ip4.01.ekb.ru.dioni.su:9003" "tcp://lair.moe:5001"
]; ];
}; };
}; };
+1 -4
View File
@@ -1,6 +1,7 @@
{ config, lib, ... }: { { config, lib, ... }: {
imports = [ imports = [
./user/btop.nix ./user/btop.nix
./user/fuzzel.nix
./user/ghostty.nix ./user/ghostty.nix
./user/helix.nix ./user/helix.nix
./user/hyprland.nix ./user/hyprland.nix
@@ -8,12 +9,8 @@
./user/mako.nix ./user/mako.nix
./user/neofetch.nix ./user/neofetch.nix
./user/qt.nix ./user/qt.nix
./user/quickshell.nix
./user/stylix.nix
./user/sops.nix ./user/sops.nix
./user/ssh.nix ./user/ssh.nix
./user/walker.nix
./user/wob.nix
./user/yazi.nix ./user/yazi.nix
./user/zsh.nix ./user/zsh.nix
+26
View File
@@ -0,0 +1,26 @@
{ config, inputs, pkgs, username, ... }: {
imports = [ inputs.ags.homeManagerModules.default ];
programs.ags = {
enable = true;
configDir = null;
extraPackages = with inputs.ags.packages.${pkgs.system}; [
battery
mpris
hyprland
network
tray
wireplumber
];
};
home.packages = with pkgs; [
pulsemixer
];
wayland.windowManager.hyprland.settings.exec-once = [ "ags run" ];
xdg.configFile."ags".source = (pkgs.callPackage ./packages/drvs/ags.nix { inherit username; colors = config.lib.stylix.colors; });
}
+24
View File
@@ -0,0 +1,24 @@
{
programs.fuzzel = {
enable = true;
settings = {
main = {
width = 40;
line-height = 25;
fields = "name,generic,comment,categories,filename,keywords";
prompt = ''" "'';
show-actions = "no";
filter-desktop = "yes";
match-counter = "yes";
};
border = {
radius = "20";
};
dmenu = {
exit-immediately-if-empty = "yes";
};
};
};
}
+1 -13
View File
@@ -1,23 +1,11 @@
{ config, pkgs, ... }: let {
ghosttyWithGL = (config.lib.nixGL.wrap pkgs.ghostty);
shaders = pkgs.fetchFromGitHub {
owner = "sahaj-b";
repo = "ghostty-cursor-shaders";
rev = "06d4e90fb5410e9c4d0b3131584060adddf89406";
hash = "sha256-G/UIr1bKnxn1AcHl/4FL/jou6b7M2VeREslYVELxdmw=";
};
in {
programs.ghostty = { programs.ghostty = {
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
package = ghosttyWithGL;
settings = { settings = {
confirm-close-surface = false; confirm-close-surface = false;
copy-on-select = false; copy-on-select = false;
title-report = true; title-report = true;
custom-shader = "${shaders}/cursor_warp.glsl";
}; };
}; };
} }
+7 -25
View File
@@ -15,18 +15,16 @@ in {
wl-clipboard wl-clipboard
wl-clip-persist wl-clip-persist
xclip xclip
awww
]; ];
wayland.windowManager.hyprland = let wayland.windowManager.hyprland = let
colors = config.lib.stylix.colors; colors = config.lib.stylix.colors;
in { in {
enable = true; enable = true;
configType = "hyprlang";
xwayland.enable = true; xwayland.enable = true;
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; package = inputs.hyprland.packages.${pkgs.system}.hyprland;
plugins = with inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}; [ plugins = with inputs.hyprland-plugins.packages.${pkgs.system}; [
# hyprbars # Version mismatch # hyprbars # Version mismatch
]; ];
@@ -41,11 +39,6 @@ in {
env = [ env = [
"XDG_SESSION_TYPE,wayland" "XDG_SESSION_TYPE,wayland"
"QT_QPA_PLATFORM,wayland" "QT_QPA_PLATFORM,wayland"
"QT_QPA_PLATFORMTHEME,xdgdesktopportal"
"GTK_USE_PORTAL,1"
"TDESKTOP_USE_GTK_FILE_DIALOG,1"
"NIXOS_OZONE_WL,1"
"ELECTRON_OZONE_PLATFORM_HINT,auto"
"XDG_CURRENT_DESKTOP,Hyprland" "XDG_CURRENT_DESKTOP,Hyprland"
"XDG_SESSION_DESKTOP,Hyprland" "XDG_SESSION_DESKTOP,Hyprland"
@@ -120,9 +113,7 @@ in {
exec-once = lib.mkBefore [ exec-once = lib.mkBefore [
"systemctl --user start plasma-polkit-agent" "systemctl --user start plasma-polkit-agent"
"${lib.getExe' pkgs.dbus "dbus-update-activation-environment"} --systemd --all" "${lib.getExe' pkgs.swww "swww-daemon"}"
"systemctl --user import-environment XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE WAYLAND_DISPLAY DISPLAY GTK_USE_PORTAL QT_QPA_PLATFORMTHEME TDESKTOP_USE_GTK_FILE_DIALOG NIXOS_OZONE_WL ELECTRON_OZONE_PLATFORM_HINT"
"awww-daemon"
"wl-clip-persist --clipboard both" "wl-clip-persist --clipboard both"
"clipse -listen" "clipse -listen"
"${lib.getExe' pkgs.udiskie "udiskie"}" "${lib.getExe' pkgs.udiskie "udiskie"}"
@@ -136,6 +127,7 @@ in {
"$mainMod, M, exit," "$mainMod, M, exit,"
"$mainMod, E, exec, ghostty -e sh -c yazi" "$mainMod, E, exec, ghostty -e sh -c yazi"
"$mainMod, F, togglefloating," "$mainMod, F, togglefloating,"
"$mainMod, D, exec, fuzzel"
"$mainMod, P, pseudo, # dwindle" "$mainMod, P, pseudo, # dwindle"
"$mainMod, J, layoutmsg, togglesplit" "$mainMod, J, layoutmsg, togglesplit"
"$mainMod, K, layoutmsg, swapsplit" "$mainMod, K, layoutmsg, swapsplit"
@@ -234,21 +226,11 @@ in {
extraPortals = [ extraPortals = [
pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-gtk
pkgs.xdg-desktop-portal-termfilechooser
]; ];
config = { config.common = {
common = { default = [ "hyprland" "gtk" ];
default = [ "hyprland" "gtk" ]; "org.freedesktop.impl.portal.FileChooser" = [ "gtk" ];
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
};
hyprland = {
default = [ "hyprland" "gtk" ];
"org.freedesktop.impl.portal.FileChooser" = [ "termfilechooser" "gtk" ];
"org.freedesktop.impl.portal.Settings" = [ "gtk" ];
};
}; };
}; };
} }
+20 -12
View File
@@ -1,13 +1,21 @@
{ config, lib, ... }: let { config, pkgs, ... }:
colors = config.lib.stylix.colors.withHashtag; let
accent = colors.${config.stylix.accent}; colors = config.lib.stylix.colors;
in { in {
services.mako = { home.packages = [ pkgs.mako ];
enable = true; xdg.configFile."mako/config".text = ''
background-color=#${colors.base00}
text-color=#${colors.base05}
border-color=#${colors.base0B}
border-radius=10
margin=16
progress-color=over #${colors.base0A}
default-timeout=5000
settings = { [urgency=high]
border-color = lib.mkForce accent; border-color=#${colors.base09}
default-timeout = 5000;
}; [urgency=low]
}; border-color=#${colors.base04}
} '';
}
+3 -4
View File
@@ -1,14 +1,13 @@
{ pkgs, pkgs-stable, ... }: { { pkgs, pkgs-pinned, inputs, ... }: {
home.packages = with pkgs; [ home.packages = with pkgs; [
ayugram-desktop pkgs-pinned.ayugram-desktop
vesktop vesktop
obs-studio obs-studio
mpv mpv
imhex imhex
obsidian obsidian
pkgs-stable.qbittorrent qbittorrent
thunderbird thunderbird
libreoffice libreoffice
pear-desktop
]; ];
} }
+6 -2
View File
@@ -1,11 +1,15 @@
{ stdenv, colors, accent ? colors.base0B, ... }: { stdenv, lib, config, colors, username, ... }:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "AGS theme"; name = "AGS theme";
src = ./ags; src = ./ags;
dontUnpack = true; dontUnpack = true;
patchPhase = '' patchPhase = let
accent = if username == "chest"
then colors.base0E
else colors.base0B;
in ''
echo \$bg: \#${colors.base00}\; > colors.scss echo \$bg: \#${colors.base00}\; > colors.scss
echo \$surface0: \#${colors.base02}\; >> colors.scss echo \$surface0: \#${colors.base02}\; >> colors.scss
echo \$fg: \#${colors.base05}\; >> colors.scss echo \$fg: \#${colors.base05}\; >> colors.scss
+1 -11
View File
@@ -1,14 +1,4 @@
{ lib, ... }: { {
# Keep qtct/Kvantum for styling, but tell qtct to delegate standard file
# dialogs to xdg-desktop-portal. This is what makes AyuGram/Telegram-like Qt
# apps use the Yazi picker instead of Qt's built-in dialog.
stylix.targets.qt.standardDialogs = "xdgdesktopportal";
home.sessionVariables = {
QT_QPA_PLATFORMTHEME = lib.mkForce "xdgdesktopportal";
TDESKTOP_USE_GTK_FILE_DIALOG = "1";
};
qt = { qt = {
enable = true; enable = true;
platformTheme.name = "qtct"; platformTheme.name = "qtct";
-182
View File
@@ -1,182 +0,0 @@
{ pkgs, config, ... }: let
c = config.lib.stylix.colors.withHashtag;
font = config.stylix.fonts.sansSerif.name;
in {
programs.quickshell = {
enable = true;
activeConfig = "control-center";
configs = {
control-center = pkgs.writeTextDir "shell.qml" ''
import Quickshell
import Quickshell.Wayland
import Quickshell.Hyprland
import QtQuick
import QtQuick.Layouts
PanelWindow {
id: root
anchors {
top: true
right: true
}
implicitWidth: 360
implicitHeight: wrapper.implicitHeight
color: "transparent"
margins {
top: -12
right: 0
}
exclusionMode: ExclusionMode.Normal
exclusiveZone: 0
WlrLayershell.namespace: "qs-control-center"
WlrLayershell.layer: WlrLayer.Overlay
WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand
Item {
id: wrapper
anchors.fill: parent
readonly property int outerMargin: 12
readonly property int innerMargin: 18
readonly property int buttonHeight: 48
readonly property int spacingSize: 14
implicitWidth: 360
implicitHeight: panel.implicitHeight + outerMargin * 2
Rectangle {
id: panel
x: wrapper.outerMargin
y: wrapper.outerMargin
width: parent.width - wrapper.outerMargin * 2
height: implicitHeight
implicitHeight: content.implicitHeight + wrapper.innerMargin * 2
radius: 20
color: "${c.base00}"
border.color: "${c.base03}"
border.width: 1
ColumnLayout {
id: content
x: wrapper.innerMargin
y: wrapper.innerMargin
width: parent.width - wrapper.innerMargin * 2
spacing: wrapper.spacingSize
Text {
text: "Control Center"
color: "${c.base05}"
font.family: "${font}"
font.pixelSize: 22
font.bold: true
}
Rectangle {
Layout.fillWidth: true
height: wrapper.buttonHeight
radius: 12
color: audioMouse.containsMouse ? "${c.base02}" : "${c.base01}"
border.color: "${c.base03}"
border.width: 1
Text {
anchors.centerIn: parent
text: "Audio settings"
color: "${c.base05}"
font.family: "${font}"
font.pixelSize: 15
}
MouseArea {
id: audioMouse
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: Hyprland.dispatch("exec pavucontrol")
}
}
Rectangle {
Layout.fillWidth: true
height: wrapper.buttonHeight
radius: 12
color: networkMouse.containsMouse ? "${c.base02}" : "${c.base01}"
border.color: "${c.base03}"
border.width: 1
Text {
anchors.centerIn: parent
text: "Network settings"
color: "${c.base05}"
font.family: "${font}"
font.pixelSize: 15
}
MouseArea {
id: networkMouse
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: Hyprland.dispatch("exec nm-connection-editor")
}
}
Rectangle {
Layout.fillWidth: true
height: wrapper.buttonHeight
radius: 12
color: bluetoothMouse.containsMouse ? "${c.base02}" : "${c.base01}"
border.color: "${c.base03}"
border.width: 1
Text {
anchors.centerIn: parent
text: "Bluetooth"
color: "${c.base05}"
font.family: "${font}"
font.pixelSize: 15
}
MouseArea {
id: bluetoothMouse
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: Hyprland.dispatch("exec blueman-manager")
}
}
Rectangle {
Layout.fillWidth: true
height: 1
color: "${c.base03}"
}
Text {
text: "Quickshell + Hyprland"
color: "${c.base04}"
font.family: "${font}"
font.pixelSize: 13
}
}
}
}
}
'';
};
};
}
+1 -1
View File
@@ -2,7 +2,7 @@
programs.ssh = { programs.ssh = {
enable = true; enable = true;
enableDefaultConfig = false; enableDefaultConfig = false;
settings = { matchBlocks = {
"*" = { "*" = {
serverAliveInterval = 30; serverAliveInterval = 30;
serverAliveCountMax = 5; serverAliveCountMax = 5;
-40
View File
@@ -1,40 +0,0 @@
{ config, lib, ... }: let
inherit (lib) mkOption types;
base16Names = [
"base00"
"base01"
"base02"
"base03"
"base04"
"base05"
"base06"
"base07"
"base08"
"base09"
"base0A"
"base0B"
"base0C"
"base0D"
"base0E"
"base0F"
];
in {
options.stylix.accent = mkOption {
type = types.enum base16Names;
default = "base0B";
description = ''
Base16 colour used as the user accent.
Use it as:
config.lib.stylix.colors.${config.stylix.accent}
config.lib.stylix.colors.withHashtag.${config.stylix.accent}
This module deliberately does not extend config.lib.stylix.colors: Stylix
exports that value as a generated base16 attrset/functor, and replacing or
partially extending it can break Stylix targets which expect metadata such
as `scheme` to be present.
'';
};
}
-14
View File
@@ -1,14 +0,0 @@
{
services = {
walker = {
enable = true;
systemd.enable = true;
};
elephant.enable = true;
};
wayland.windowManager.hyprland.settings.bind = [
"$mainMod, D, exec, walker"
];
}
-68
View File
@@ -1,68 +0,0 @@
{ config, pkgs, lib, ... }: let
c = config.lib.stylix.colors;
wobSocket = ''"''${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/wob.sock"'';
volumeStep = pkgs.writeShellScriptBin "volume-step" /*bash*/ ''
volume="$(${lib.getExe' pkgs.wireplumber "wpctl"} get-volume @DEFAULT_AUDIO_SINK@)"
percent="$(printf '%s\n' "$volume" | ${pkgs.gawk}/bin/awk '{print int($2 * 100)}')"
if printf '%s\n' "$volume" | ${pkgs.gnugrep}/bin/grep -q MUTED; then
printf '%s muted\n' "$percent" > ${wobSocket}
else
printf '%s volume\n' "$percent" > ${wobSocket}
fi
'';
brightnessStep = pkgs.writeShellScriptBin "brightness-step" /*bash*/ ''
percent="$(${lib.getExe pkgs.brightnessctl} -m | ${lib.getExe' pkgs.coreutils "cut"} -d, -f4 | ${lib.getExe' pkgs.coreutils "tr"} -d '%')"
printf '%s brightness\n' "$percent" > ${wobSocket}
'';
in {
systemd.user = {
services.wob.Install.WantedBy = lib.mkForce [ ];
sockets.wob.Install.WantedBy = lib.mkForce [ "sockets.target" ];
};
services.wob = {
enable = true;
systemd = true;
settings = {
"" = {
timeout = 2000;
max = 100;
width = 280;
height = 32;
border_offset = 0;
border_size = 2;
bar_padding = 4;
anchor = "top center";
margin = "0 0 0 0";
overflow_mode = "nowrap";
orientation = "horizontal";
};
"style.volume" = { bar_color = c.base0D; };
"style.brightness" = { bar_color = c.base0A; };
"style.muted" = { bar_color = c.base04; };
};
};
wayland.windowManager.hyprland.settings = {
bindel = [
", XF86AudioRaiseVolume, exec, ${lib.getExe volumeStep} up"
", XF86AudioLowerVolume, exec, ${lib.getExe volumeStep} down"
", XF86MonBrightnessUp, exec, ${lib.getExe brightnessStep} up"
", XF86MonBrightnessDown, exec, ${lib.getExe brightnessStep} down"
];
bind = [
", XF86AudioMute, exec, ${lib.getExe volumeStep} mute"
];
};
}
+100 -308
View File
@@ -1,319 +1,111 @@
{ pkgs, lib, inputs, ... }: let { pkgs, lib, inputs, ... }: {
hostSystem = pkgs.stdenv.hostPlatform.system; home.packages = with pkgs; [
( ouch.override { enableUnfree = true; } )
];
yaziPkg = inputs.yazi.packages.${hostSystem}.default.override { wayland.windowManager.hyprland.settings.windowrule = [
_7zz = pkgs._7zz-rar; "match:class dragon-drop, move cursor_x-window_w/2 cursor_y-window_h/2"
}; ];
yaziOpen = pkgs.writeShellScriptBin "yazi-open" '' programs.yazi = {
set -efu package = inputs.yazi.packages
.${pkgs.stdenv.hostPlatform.system}.default
.override { _7zz = pkgs._7zz-rar; };
enable = true;
enableZshIntegration = true;
shellWrapperName = "y";
target="''${1:-$HOME}" settings = {
mgr = {
show_hidden = true;
};
preview = {
max_width = 1000;
max_height = 1000;
};
plugin = {
preloaders = [
{ name = "*.crdownload"; run = "noop"; }
];
case "$target" in prepend_previewers = [
file://*) { mime = "application/xz"; run = "ouch"; }
target="$(${lib.getExe pkgs.python3} -c 'import sys, urllib.parse; print(urllib.parse.unquote(urllib.parse.urlparse(sys.argv[1]).path))' "$target")" { mime = "application/zip"; run = "ouch"; }
;; { mime = "application/rar"; run = "ouch"; }
esac { mime = "application/gzip"; run = "ouch"; }
{ mime = "application/7z-compressed"; run = "ouch"; }
];
if [ -f "$target" ]; then prepend_fetchers = [
target="$(dirname "$target")" { id = "git"; mime = "*"; run = "git"; }
fi ];
};
};
if [ ! -e "$target" ]; then plugins = with pkgs.yaziPlugins; {
target="$HOME" inherit
fi chmod
ouch
full-border
starship
mount
git
toggle-pane
;
};
exec ${lib.getExe pkgs.ghostty} --title="Yazi" -e ${lib.getExe yaziPkg} "$target" initLua = ''
''; require("git"):setup()
require("full-border"):setup()
require("starship"):setup()
yaziFileChooser = pkgs.writeShellScriptBin "yazi-file-chooser" '' Status:children_add(function()
set -efu local h = cx.active.current.hovered
if not h or ya.target_family() ~= "unix" then
return ""
end
directory="''${2:-0}" return ui.Line {
save="''${3:-0}" ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
path="''${4:-}" ":",
out="''${5:?missing termfilechooser output path}" ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
" ",
}
end, 500, Status.RIGHT)
'';
state_dir="''${XDG_STATE_HOME:-$HOME/.local/state}/xdg-desktop-portal-termfilechooser" keymap = {
last_selected_path="$state_dir/last-selected" mgr.prepend_keymap = [
${lib.getExe' pkgs.coreutils "mkdir"} -p "$state_dir" {
on = "T";
if [ -s "$last_selected_path" ]; then run = "plugin toggle-pane max-preview";
IFS= read -r last_selected < "$last_selected_path" || true desc = "Maximize or restore the preview pane";
if [ -d "$last_selected" ]; then }
if [ "$save" = "1" ] && [ -n "$path" ]; then {
path="$last_selected/''${path##*/}" on = "Y";
else run = ''shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list'';
path="$last_selected" desc = "Copy files into system clipboard";
fi }
fi {
fi on = ["c" "m"];
run = "plugin chmod";
if [ -z "$path" ]; then desc = "Chmod on selected files";
path="$HOME" }
fi {
on = ["M"];
created_placeholder=0 run = "plugin mount";
if [ "$save" = "1" ] && [ ! -e "$path" ]; then desc = "Open mount menu";
placeholder_dir="''${path%/*}" }
if [ "$placeholder_dir" != "$path" ]; then {
${lib.getExe' pkgs.coreutils "mkdir"} -p "$placeholder_dir" on = [ "<C-n>" ];
fi run = "shell '${lib.getExe pkgs.dragon-drop} -x -A -i -T %s'";
}
{ {
printf '%s\n' 'This file was created by xdg-desktop-portal-termfilechooser.' on = [ "g" "<S-d>" ];
printf '%s\n' 'Move/rename it in Yazi, then open/select it to choose the save path.' run = ''cd /mnt/D'';
} > "$path" desc = "Goto D drive";
created_placeholder=1 }
fi ];
};
${lib.getExe pkgs.ghostty} --title="Yazi File Picker" -e ${lib.getExe yaziPkg} --chooser-file="$out" --cwd-file="$last_selected_path" "$path" };
if [ "$directory" = "1" ] && [ ! -s "$out" ] && [ -s "$last_selected_path" ]; then
IFS= read -r cwd < "$last_selected_path" || true
if [ -n "''${cwd:-}" ] && [ -d "$cwd" ]; then
printf '%s\n' "$cwd" > "$out"
fi
fi
if [ "$created_placeholder" = "1" ] && [ ! -s "$out" ]; then
${lib.getExe' pkgs.coreutils "rm"} -f "$path"
fi
'';
fileManager1 = pkgs.writeShellScriptBin "yazi-filemanager1" ''
exec ${pkgs.python3.withPackages (ps: [ ps.dbus-next ])}/bin/python ${pkgs.writeText "yazi-filemanager1.py" ''
import asyncio
import os
import subprocess
import urllib.parse
from dbus_next.aio import MessageBus
from dbus_next.constants import BusType
from dbus_next.service import ServiceInterface, method
YAZI_OPEN = ${builtins.toJSON (lib.getExe yaziOpen)}
def uri_to_path(uri: str) -> str | None:
parsed = urllib.parse.urlparse(uri)
if parsed.scheme != "file":
return None
return urllib.parse.unquote(parsed.path)
def open_paths(uris: list[str], reveal_items: bool = False) -> None:
for uri in uris:
path = uri_to_path(uri)
if not path:
continue
if reveal_items and os.path.isfile(path):
path = os.path.dirname(path)
subprocess.Popen(
[YAZI_OPEN, path],
start_new_session=True,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
class FileManager1(ServiceInterface):
def __init__(self) -> None:
super().__init__("org.freedesktop.FileManager1")
@method()
def ShowFolders(self, uris: "as", startup_id: "s") -> "":
open_paths(uris)
@method()
def ShowItems(self, uris: "as", startup_id: "s") -> "":
open_paths(uris, reveal_items=True)
@method()
def ShowItemProperties(self, uris: "as", startup_id: "s") -> "":
open_paths(uris, reveal_items=True)
async def main() -> None:
bus = await MessageBus(bus_type=BusType.SESSION).connect()
bus.export("/org/freedesktop/FileManager1", FileManager1())
await bus.request_name("org.freedesktop.FileManager1")
await asyncio.Event().wait()
asyncio.run(main())
''}
'';
in {
home.packages = with pkgs; [
( ouch.override { enableUnfree = true; } )
yaziOpen
];
home.sessionVariables = {
GTK_USE_PORTAL = "1";
};
xdg.configFile."xdg-desktop-portal-termfilechooser/config".text = ''
[filechooser]
cmd=${lib.getExe yaziFileChooser}
default_dir=$HOME
open_mode=suggested
save_mode=last
'';
xdg.desktopEntries.yazi = {
name = "Yazi";
genericName = "File Manager";
exec = "${lib.getExe yaziOpen} %U";
terminal = false;
mimeType = [ "inode/directory" ];
categories = [ "System" "FileTools" "FileManager" ];
startupNotify = false;
};
xdg.mimeApps = {
enable = true;
defaultApplications = {
"inode/directory" = "yazi.desktop";
"application/x-gnome-saved-search" = "yazi.desktop";
};
};
xdg.dataFile."dbus-1/services/org.freedesktop.FileManager1.service".text = ''
[D-BUS Service]
Name=org.freedesktop.FileManager1
Exec=${lib.getExe fileManager1}
'';
wayland.windowManager.hyprland.settings.windowrule = [
"match:class dragon-drop, move cursor_x-window_w/2 cursor_y-window_h/2"
"match:title Yazi File Picker, float 1"
"match:title Yazi File Picker, size 1200 800"
];
programs.yazi = {
package = yaziPkg;
enable = true;
enableZshIntegration = true;
shellWrapperName = "y";
settings = {
mgr = {
show_hidden = true;
};
preview = {
max_width = 1000;
max_height = 1000;
};
plugin = {
preloaders = [
{ url = "*.crdownload"; run = "noop"; }
];
prepend_previewers = [
{ mime = "application/xz"; run = "ouch"; }
{ mime = "application/zip"; run = "ouch"; }
{ mime = "application/rar"; run = "ouch"; }
{ mime = "application/gzip"; run = "ouch"; }
{ mime = "application/7z-compressed"; run = "ouch"; }
];
prepend_fetchers = [
{ group = "git"; url = "*"; run = "git"; }
];
};
};
plugins = let
yaziPlugin = name: pkgs.stdenvNoCC.mkDerivation {
pname = "${name}.yazi";
version = "unstable";
src = inputs.yazi-plugins;
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r ${name}.yazi/* $out/
rm -f $out/LICENSE
cp LICENSE $out/LICENSE
runHook postInstall
'';
};
in with pkgs.yaziPlugins; {
inherit
chmod
ouch
mount
toggle-pane
;
full-border = {
package = yaziPlugin "full-border";
setup = true;
};
starship = {
package = starship;
setup = true;
};
git = {
package = git;
setup = true;
};
};
initLua = ''
Status:children_add(function()
local h = cx.active.current.hovered
if not h or ya.target_family() ~= "unix" then
return ""
end
return ui.Line {
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
":",
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
" ",
}
end, 500, Status.RIGHT)
'';
keymap = {
mgr.prepend_keymap = [
{
on = "T";
run = "plugin toggle-pane max-preview";
desc = "Maximize or restore the preview pane";
}
{
on = "Y";
run = ''shell -- for path in %s; do echo "file://$path"; done | wl-copy -t text/uri-list'';
desc = "Copy files into system clipboard";
}
{
on = ["c" "m"];
run = "plugin chmod";
desc = "Chmod on selected files";
}
{
on = ["M"];
run = "plugin mount";
desc = "Open mount menu";
}
{
on = [ "<C-n>" ];
run = "shell '${lib.getExe pkgs.dragon-drop} -x -A -i -T %s'";
}
{
on = [ "g" "<S-d>" ];
run = ''cd /mnt/D'';
desc = "Goto D drive";
}
];
};
};
} }
+2 -2
View File
@@ -1,14 +1,13 @@
{ pkgs, lib, config, inputs, ... }: { { pkgs, lib, config, inputs, ... }: {
wayland.windowManager.hyprland = let wayland.windowManager.hyprland = let
colors = config.lib.stylix.colors; colors = config.lib.stylix.colors;
accent = colors.${config.stylix.accent};
in { in {
settings = { settings = {
general = { general = {
gaps_in = 5; gaps_in = 5;
gaps_out = 5; gaps_out = 5;
border_size = 2; border_size = 2;
"col.active_border" = "rgba(${accent}ee) rgba(${colors.base0C}ee) 45deg"; "col.active_border" = "rgba(${colors.base0E}ee) rgba(${colors.base0C}ee) 45deg";
"col.inactive_border" = "rgba(${colors.base05}aa)"; "col.inactive_border" = "rgba(${colors.base05}aa)";
layout = "dwindle"; layout = "dwindle";
@@ -48,6 +47,7 @@
}; };
dwindle = { dwindle = {
pseudotile = true;
smart_split = true; smart_split = true;
}; };
-3
View File
@@ -80,8 +80,6 @@
in { in {
stylix = { stylix = {
enable = true; enable = true;
overlays.enable = false;
targets = { targets = {
hyprland.enable = false; hyprland.enable = false;
waybar.enable = false; waybar.enable = false;
@@ -89,7 +87,6 @@ in {
}; };
base16Scheme = "${pkgs.base16-schemes}/share/themes/eris.yaml"; base16Scheme = "${pkgs.base16-schemes}/share/themes/eris.yaml";
accent = "base0E";
polarity = "dark"; polarity = "dark";
image = pkgs.fetchurl { image = pkgs.fetchurl {
+1 -1
View File
@@ -175,7 +175,7 @@
style = let style = let
colors = config.lib.stylix.colors.withHashtag; colors = config.lib.stylix.colors.withHashtag;
accent = colors.${config.stylix.accent}; accent = colors.base0E;
scssFile = pkgs.writeText "waybar.scss" /*scss*/ '' scssFile = pkgs.writeText "waybar.scss" /*scss*/ ''
window#waybar { window#waybar {
background: transparent; background: transparent;
+1 -1
View File
@@ -57,7 +57,7 @@
services.greetd = let services.greetd = let
tuigreet = lib.getExe pkgs.tuigreet; tuigreet = lib.getExe pkgs.tuigreet;
session = lib.getExe' inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.default "start-hyprland"; session = lib.getExe' inputs.hyprland.packages.${pkgs.system}.default "start-hyprland";
in { in {
enable = true; enable = true;
settings = { settings = {
+1 -4
View File
@@ -5,10 +5,7 @@
programs.hyprlock.enable = true; programs.hyprlock.enable = true;
home.packages = with pkgs; [ home.packages = with pkgs; [
android-studio android-studio
(vivaldi.override { vivaldi
proprietaryCodecs = true;
enableWidevine = true;
})
weechat weechat
]; ];
+18 -94
View File
@@ -1,82 +1,17 @@
{ pkgs, lib, config, osConfig, inputs, ... }: { { pkgs, lib, config, osConfig, inputs, ... }: {
wayland.windowManager.hyprland = let wayland.windowManager.hyprland = let
colors = config.lib.stylix.colors; colors = config.lib.stylix.colors;
accent = colors.${config.stylix.accent};
wallpaper_changer = pkgs.writers.writePython3Bin "wallpaper_changer" { wallpaper_changer = pkgs.writers.writePython3Bin "wallpaper_changer" {
libraries = [ pkgs.python3Packages.requests ]; libraries = [ pkgs.python3Packages.requests ];
flakeIgnore = [ "E111" "E121" "E241" "E501" "E701" "E731" ]; flakeIgnore = [ "E501" "E111" "E701" "E241" "E731" ];
} /*py*/ '' } /*py*/ ''
import requests as requests import requests as requests
from random import choice from random import choice
from os import listdir, makedirs, remove, replace, system from os import system, mkdir, listdir
from os.path import exists from os.path import exists
from subprocess import run
notify_id = None
def notify(text, progress=None, expire_time=5000):
global notify_id
command = [
"${pkgs.libnotify}/bin/notify-send",
"--app-name", "wallpaper_changer",
"--print-id",
"--expire-time", str(expire_time),
]
if notify_id:
command.extend(["--replace-id", str(notify_id)])
if progress is not None:
command.extend(["--hint", f"int:value:{progress}"])
command.extend(["Wallpaper", text])
result = run(command, capture_output=True, text=True, check=False)
output = result.stdout.strip()
if output.isdigit():
notify_id = output
def download_with_progress(link, destination):
temporary = f"{destination}.part"
downloaded = 0
last_progress = -1
response = None
try:
response = requests.get(link, stream=True)
response.raise_for_status()
total = int(response.headers.get("content-length", 0))
with open(temporary, "wb") as file:
for chunk in response.iter_content(chunk_size=256 * 1024):
if not chunk:
continue
file.write(chunk)
downloaded += len(chunk)
if total <= 0:
continue
progress = min(100, downloaded * 100 // total)
if progress == 100 or progress >= last_progress + 2:
notify(f"Downloading... {progress}%", progress, 0)
last_progress = progress
replace(temporary, destination)
except Exception:
if exists(temporary):
remove(temporary)
raise
finally:
if response is not None:
response.close()
notify = lambda s: system(f"notify-desktop Wallpaper '{s}'")
folder = "${config.home.homeDirectory}/Wallpapers" folder = "${config.home.homeDirectory}/Wallpapers"
url = "https://wallhaven.cc/api/v1/collections/sweetbread/${ url = "https://wallhaven.cc/api/v1/collections/sweetbread/${
if osConfig.networking.hostName == "Rias" then "1764377" if osConfig.networking.hostName == "Rias" then "1764377"
@@ -85,13 +20,10 @@
with open("${config.sops.secrets."tokens/apis/wallhaven".path}") as f: with open("${config.sops.secrets."tokens/apis/wallhaven".path}") as f:
token = f.read() token = f.read()
filename = None notify("Updating wallpaper!")
notify("Updating wallpaper...", 0)
try: try:
response = requests.get(url, params={'apikey': token}) json = requests.get(url, params={'apikey': token}).json()
response.raise_for_status()
json = response.json()
wallpaper = choice(json['data']) wallpaper = choice(json['data'])
link = wallpaper['path'] link = wallpaper['path']
@@ -102,27 +34,22 @@
else: ext = "png" else: ext = "png"
filename = f"{id}.{ext}" filename = f"{id}.{ext}"
destination = f"{folder}/{filename}"
if not exists(destination): if not exists(f"{folder}/{filename}"):
makedirs(folder, exist_ok=True) if not exists(folder):
notify("Downloading... 0%", 0, 0) mkdir(f"{folder}")
download_with_progress(link, destination)
notify("Downloaded", 100)
else:
notify("Using cached wallpaper", 100)
except requests.exceptions.RequestException: notify("Downloading...")
with open(f"{folder}/{filename}", 'wb') as f:
r = requests.get(link)
f.write(r.content)
except requests.exceptions.ConnectionError:
notify("Offline mode") notify("Offline mode")
try: filename = choice(listdir(folder))
filename = choice(listdir(folder))
except (FileNotFoundError, IndexError):
notify("Offline mode and wallpaper cache is empty")
finally: finally:
if filename is not None: system(f"${lib.getExe pkgs.swww} img {folder}/{filename} --transition-type center")
notify("Applying wallpaper", 100)
system(f"awww img {folder}/{filename} --transition-type center")
''; '';
in { in {
settings = { settings = {
@@ -130,7 +57,7 @@
gaps_in = 2; gaps_in = 2;
gaps_out = 10; gaps_out = 10;
border_size = 3; border_size = 3;
"col.active_border" = lib.mkForce "rgba(${colors.base0C}aa) rgba(${accent}aa) 45deg"; "col.active_border" = lib.mkForce "rgba(${colors.base0C}aa) rgba(${colors.base0B}aa) 45deg";
layout = "dwindle"; layout = "dwindle";
}; };
@@ -164,6 +91,7 @@
}; };
dwindle = { dwindle = {
pseudotile = true;
smart_split = true; smart_split = true;
}; };
@@ -179,10 +107,6 @@
"${lib.getExe wallpaper_changer}" "${lib.getExe wallpaper_changer}"
]; ];
workspace = [
"2, layout:scrolling"
];
bind = [ bind = [
" , Print, exec, ${lib.getExe pkgs.hyprshot} -z -o ~/Screenshots -m active -m output" " , Print, exec, ${lib.getExe pkgs.hyprshot} -z -o ~/Screenshots -m active -m output"
"CTRL, Print, exec, ${lib.getExe pkgs.hyprshot} -z -o ~/Screenshots -m region" "CTRL, Print, exec, ${lib.getExe pkgs.hyprshot} -z -o ~/Screenshots -m region"
+2 -22
View File
@@ -79,25 +79,10 @@
cp Kurumi $out/share/icons -r cp Kurumi $out/share/icons -r
''; '';
}; };
pixeloid = pkgs.stdenvNoCC.mkDerivation {
name = "Pixeloid";
dontUnpack = true;
src = pkgs.fetchurl {
url = "https://lair.moe/static/font/Pixeloid/otf/Sans.otf";
hash = "sha256-GTf2BnhH0Pzc3Bbevmd+mA6t8lZFMUxX9wkSqWicuSc=";
};
installPhase = ''
install -Dm644 "$src" "$out/share/fonts/opentype/Sans.otf"
'';
};
in { in {
# {
stylix = { stylix = {
enable = true; enable = true;
overlays.enable = false;
targets = { targets = {
hyprpaper.enable = lib.mkForce false; hyprpaper.enable = lib.mkForce false;
waybar.enable = false; waybar.enable = false;
@@ -105,7 +90,6 @@ in {
}; };
base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml"; base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml";
accent = "base0B";
polarity = "dark"; polarity = "dark";
image = pkgs.fetchurl { image = pkgs.fetchurl {
@@ -136,11 +120,6 @@ in {
package = (pkgs.google-fonts.override { fonts = [ "Gabriela" ]; }); package = (pkgs.google-fonts.override { fonts = [ "Gabriela" ]; });
}; };
sansSerif = {
name = "Pixeloid Sans";
package = pixeloid;
};
emoji = { emoji = {
package = pkgs.noto-fonts-monochrome-emoji; package = pkgs.noto-fonts-monochrome-emoji;
name = "Noto Emoji"; name = "Noto Emoji";
@@ -164,6 +143,7 @@ in {
gtk = { gtk = {
gtk4 = { gtk4 = {
theme = null;
extraConfig = { extraConfig = {
gtk-application-prefer-dark-theme = true; gtk-application-prefer-dark-theme = true;
}; };
+8 -12
View File
@@ -1,12 +1,10 @@
{ osConfig, config, pkgs, lib, ... }: { { osConfig, config, pkgs, lib, ... }: {
home.packages = with pkgs; [ home.packages = with pkgs; [
font-awesome
nerd-fonts.symbols-only
playerctl playerctl
cava cava
pulsemixer pulsemixer
monocraft
font-awesome
nerd-fonts.symbols-only
]; ];
programs.waybar = { programs.waybar = {
@@ -51,7 +49,7 @@
}; };
pulseaudio = { pulseaudio = {
format = "{icon} {volume}%"; format = "{icon} {volume}%";
format-icons = { format-icons = {
headphone = ""; headphone = "";
hands-free = ""; hands-free = "";
@@ -155,14 +153,12 @@
style = let style = let
colors = config.lib.stylix.colors.withHashtag; colors = config.lib.stylix.colors.withHashtag;
accent = colors.${config.stylix.accent};
radius = "6px"; radius = "6px";
scssFile = pkgs.writeText "waybar.scss" /*scss*/ '' scssFile = pkgs.writeText "waybar.scss" /*scss*/ ''
window#waybar { window#waybar {
background: transparent; background: transparent;
color: ${colors.base05}; color: ${colors.base05};
border-radius: ${radius}; border-radius: ${radius};
font-family: "Symbols Nerd Font Mono", "Monocraft", "Font Awesome 7 Free";
font-weight: bold; font-weight: bold;
font-size: .85em; font-size: .85em;
@@ -200,13 +196,13 @@
&:hover { background: ${colors.base01}; } &:hover { background: ${colors.base01}; }
&.active { &.active {
background: ${accent}; background: ${colors.base0B};
color: ${colors.base00}; color: ${colors.base00};
&:hover { &:hover {
border-color: ${accent}; border-color: ${colors.base0B};
background: ${colors.base01}; background: ${colors.base01};
color: ${accent}; color: ${colors.base0B};
} }
} }
} }
@@ -260,7 +256,7 @@
#battery { #battery {
&.plugged { color: ${colors.base0D}; } &.plugged { color: ${colors.base0D}; }
&.charging { color: ${accent}; } &.charging { color: ${colors.base0B}; }
&:not(.charging) { &:not(.charging) {
&.warning { &.warning {
color: ${colors.base00}; color: ${colors.base00};
@@ -278,7 +274,7 @@
} }
&.full { &.full {
color: ${colors.base00}; color: ${colors.base00};
background: ${accent}; background: ${colors.base0B};
} }
} }