Compare commits
408 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 17cb857271 | |||
| 86742306cb | |||
| 47f2d1bd2a | |||
| 92d6e19fa8 | |||
| a8f6af8fc9 | |||
| e914ffd552 | |||
| a308923512 | |||
| c148be1a99 | |||
| ced387584e | |||
| ac840fb5e9 | |||
| 71d1da366d | |||
| e0b9f8b91a | |||
| c510e43618 | |||
| fb2ae2d470 | |||
| 035b8522ff | |||
| 4ccfeb12fe | |||
| 67adb36f6b | |||
| 8b6d867659 | |||
| 84ee68cb1f | |||
| 2d7fcc8801 | |||
| ec2293db2e | |||
| b6974cb4a2 | |||
| 3dfb455a1c | |||
| 636cac904e | |||
| 12da637cf8 | |||
| a39ffa9cc7 | |||
| 36399861f0 | |||
| ac892bcff7 | |||
| 9579fafceb | |||
| 3dcc23facb | |||
| 009a7145b8 | |||
| 226b61bf21 | |||
| 4586dd1d9c | |||
| 291f442a45 | |||
| 45010d5f0a | |||
| e1cf3ad59d | |||
| bc268218a5 | |||
| 9a05a5546f | |||
| cb224894b8 | |||
| 29453240ed | |||
| c3526e6eac | |||
| e0ca2aa3bf | |||
| 8aa7f53eca | |||
| 9b4c4991c4 | |||
| f040c4b610 | |||
| fac71ff78d | |||
| 1aa0ab9044 | |||
| 0f17915e8c | |||
| 171564d6dc | |||
| 4920a65aa2 | |||
| fc71417bc7 | |||
| 1aa742d2b2 | |||
| d0339032fa | |||
| 4f7a30197a | |||
| 2dcdd0b29a | |||
| 638b2e54dc | |||
| c11b7205bd | |||
| caada5a969 | |||
| ceb17c3a34 | |||
| e619754e92 | |||
| 068a46a9bf | |||
| 2cbe32f561 | |||
| e90d182cde | |||
| 2bede8d2bc | |||
| 1bb5ea283f | |||
| 173f9a08ca | |||
| 61e3f29db2 | |||
| 9a44776d59 | |||
| c83ad31922 | |||
| 990b154250 | |||
| 4cb03bcbbb | |||
| 5f6dbaac10 | |||
| 9a24848f21 | |||
| 10e9e6e426 | |||
| e11b3547d4 | |||
| d80c5c1074 | |||
| 954407bfa0 | |||
| e5a5189158 | |||
| fa0e502472 | |||
| 562d1f30e4 | |||
| b86499aec5 | |||
| 1fdfb9f62a | |||
| 2b6a99b191 | |||
| 454673329f | |||
| a4e661d6ad | |||
| dc38c2d88a | |||
| c267da0953 | |||
| c5e76b1a44 | |||
| 335d41cf19 | |||
| 4360edef9e | |||
| fde813460a | |||
| 7a6e450c8f | |||
| 59656b7dc8 | |||
| f18f33c9c3 | |||
| 10c6f094f6 | |||
| a6fdaf9a27 | |||
| 1b8e5032f9 | |||
| aaef1dccb2 | |||
| 21a61f528b | |||
| 7ab78044b7 | |||
| 28e9c06ea8 | |||
| 960ac31702 | |||
| f6b1976809 | |||
| f6156cad67 | |||
| 88b4ff68a6 | |||
| a4e2cf06e9 | |||
| 67fa3f06ed | |||
| 20930ea6c2 | |||
| deb4749489 | |||
| 96b228aadc | |||
| 2dc8180d1b | |||
| dd1213c5b7 | |||
| 47bd23b3dd | |||
| 25bba64185 | |||
| ffdb003aa2 | |||
| d3c0b74ab5 | |||
| c9b98978fa | |||
| 7cec25fdb9 | |||
| 446cfea7dd | |||
| 3fd62d4525 | |||
| 69253992df | |||
| 35845cac3a | |||
| 33c6170c15 | |||
| dd36c2711a | |||
| e9c69c2cc1 | |||
| 30fbcec7f5 | |||
| c0f21fa798 | |||
| cb61d6ad3d | |||
| 7588100a62 | |||
| 5ce6b68252 | |||
| 5a6cdb3171 | |||
| dcf30faa51 | |||
| 3096697e35 | |||
| cdce0628ab | |||
| 1c82b5eafe | |||
| 216011d9f6 | |||
| 73a837925b | |||
| 47258d9e4d | |||
| 8ae075d84c | |||
| 6e4fe781ab | |||
| dfbdf1cd87 | |||
| f947721819 | |||
| c3fdb180ff | |||
| e1b503b43b | |||
| a46fa6344d | |||
| 2ab60c6047 | |||
| 2a3c6ae6a9 | |||
| 0181c007fe | |||
| 83cdb81173 | |||
| 2580cf8aa5 | |||
| de8e083e92 | |||
| 49460feb44 | |||
| 4768918d0d | |||
| a534ad610f | |||
| 4015222d6a | |||
| b23774d0a2 | |||
| 58c1860ecf | |||
| 302c5e11b2 | |||
| 757d9e523d | |||
| 673d824c26 | |||
| 8355d35aaf | |||
| 1601f4b622 | |||
| ee5165b068 | |||
| 76138fc342 | |||
| 2f1b33d070 | |||
| bde12c7a04 | |||
| 658d489fd5 | |||
| 95f95e208d | |||
| b5eb134f69 | |||
| 6264269817 | |||
| 8151c56cc4 | |||
| 3a75206afb | |||
| b5a542a37c | |||
| bd2465d356 | |||
| e5bc8801a4 | |||
| c97a5887df | |||
| ec55ac55b2 | |||
| 65f04a69ae | |||
| ad40c37d1e | |||
| 4f3fe9be8b | |||
| 6f3c0e8f6c | |||
| 481fb8c6c4 | |||
| 94f5d8ba01 | |||
| ea18baa039 | |||
| 1653fe3eb2 | |||
| 162321eb28 | |||
| d947870a55 | |||
| 6550d6e871 | |||
| 352f2d923b | |||
| e10deb6ae5 | |||
| 90123ac18d | |||
| 1bd3096d53 | |||
| ca68b1de73 | |||
| f8386beb6c | |||
| b9f125e76a | |||
| 3717ecc642 | |||
| 377cd79704 | |||
| fea33ada52 | |||
| a4cf2833bc | |||
| 8491971427 | |||
| b4f4b67a8b | |||
| f59110c87e | |||
| 3dd4f2783e | |||
| d8657c7eeb | |||
| 3c4ed456cf | |||
| 551302a00e | |||
| 9aaffe2677 | |||
| 11cee2638a | |||
| e35dc3d28e | |||
| b686cf7751 | |||
| 7fd7cfac70 | |||
| 2023828364 | |||
| 2d8ba9f7ea | |||
| bc70242a99 | |||
| 0eabcc4fc1 | |||
| 1e301b958e | |||
| 4a4f66c08e | |||
| e33dbea82e | |||
| 50813851cb | |||
| b3c502fdf3 | |||
| 3587a7042d | |||
| cfc2f01e57 | |||
| ebef97f84b | |||
| 3740928c70 | |||
| 435742f29c | |||
| 0ebe999f92 | |||
| 005c744cb6 | |||
| a2b4b0d8ea | |||
| e8c6cb073f | |||
| 17b01cbf1c | |||
| 6d5cd6d78e | |||
| c48d1543a4 | |||
| ac41162a6e | |||
| 74f26f5997 | |||
| 0a1acae08a | |||
| 54f2f1e8f9 | |||
| a25d41100a | |||
| 381830a767 | |||
| d1c11014de | |||
| b41a820dcc | |||
| 38ba3a2fdb | |||
| 998f4905b0 | |||
| 9cc45e426d | |||
| 7053adc718 | |||
| 8d6af2f936 | |||
| f4788f863e | |||
| 2ba8639dfd | |||
| a609216012 | |||
| b6911bc045 | |||
| 09fbbec45e | |||
| b697c89aae | |||
| 0e0b8a40c7 | |||
| 555fea04b4 | |||
| fee08ad3d2 | |||
| b3e0e3e76f | |||
| 4dee2bf44f | |||
| f23d023551 | |||
| 61ac2f71d5 | |||
| ca9e487111 | |||
| f8e327d46d | |||
| 835a7fdad3 | |||
| 6034a9797c | |||
| c204eed76e | |||
| 0abf1447af | |||
| 73ece504c9 | |||
| 30f2178b6f | |||
| 5b0a8b3c49 | |||
| da0db9551c | |||
| f1b1dcdd9e | |||
| b3bcc0f058 | |||
| 2b1bc85514 | |||
| 6517af5889 | |||
| 43f8d827f6 | |||
| f7d3c7a7c4 | |||
| 7f7cbe74f7 | |||
| e3c5d8c166 | |||
| 8957622879 | |||
| 657fde7545 | |||
| f757369821 | |||
| e623b83d68 | |||
| 2b8d4a1dce | |||
| e6103c3153 | |||
| 6b0a342cdd | |||
| 280a2da2db | |||
| 363d470386 | |||
| f715f08831 | |||
| c4e0681c33 | |||
| a3121c0ce0 | |||
| 6af25e5453 | |||
| fd8da098ed | |||
| e83c8ded35 | |||
| 229b0041a6 | |||
| 128e6a04c2 | |||
| a92159168c | |||
| 1fb2d40aa8 | |||
| 7ec496be3d | |||
| 35a794a648 | |||
| b8dfddd2e8 | |||
| 4a49aba2ba | |||
| d1bffc3952 | |||
| 8b2e901680 | |||
| a5db5cc54d | |||
| efede58a6d | |||
| 7df80623d5 | |||
| 028df1fd35 | |||
| 12e64d34e6 | |||
| ba7174224c | |||
| c794974b20 | |||
| d9fdab315c | |||
| b3d37d7b20 | |||
| 88076292de | |||
| 25c0a328e6 | |||
| ab855f18ea | |||
| b7659157fa | |||
| 608df0bd38 | |||
| 1871ca6ef6 | |||
| d7eed2ecf6 | |||
| 789e6786cc | |||
| 8e9bfe9522 | |||
| 0c99dfefbb | |||
| c16cedf981 | |||
| 4f0c6d3e46 | |||
| 752a6ad1de | |||
| 802c2aa6bf | |||
| 2a6b5bc2c7 | |||
| e986b99ce7 | |||
| c17dabdbd8 | |||
| 0ab12aabff | |||
| 30ecca57ba | |||
| cd734937c0 | |||
| 477b592b06 | |||
| fda9681b84 | |||
| 694042f027 | |||
| 7e77b1acd4 | |||
| 6b765f1b54 | |||
| 97d65f2f7e | |||
| 9186f2cc28 | |||
| 6ae2221007 | |||
| e862ce8f9b | |||
| 6dbe009076 | |||
| 598abbf308 | |||
| 17ccf2ba8c | |||
| ca5b15b377 | |||
| a11926ee85 | |||
| f19b7ab674 | |||
| 306e540a67 | |||
| 5185edce48 | |||
| b3f9882c7e | |||
| ee7b59c521 | |||
| 113a15cd69 | |||
| 2ea4f6631c | |||
| e21cf63216 | |||
| f31387ab12 | |||
| 4ec339c53b | |||
| eb70a6dd52 | |||
| a9aef32984 | |||
| 58d575ebeb | |||
| be57946347 | |||
| 63c2f887db | |||
| 36222bdb63 | |||
| de69800662 | |||
| f2a1604009 | |||
| dfec0bc5da | |||
| 45ce1678d1 | |||
| 5022c31815 | |||
| 2534d83bdd | |||
| 3e7917aee3 | |||
| 530a7c9777 | |||
| a3b195da1f | |||
| fa1a376d85 | |||
| 25d034d7dc | |||
| a0572f8a95 | |||
| 6e32ac5ceb | |||
| 5278908420 | |||
| 6044c4e063 | |||
| d0532495e0 | |||
| 3339960062 | |||
| 77854b1c69 | |||
| b1ca82da64 | |||
| 72bc56a934 | |||
| aac77be6ec | |||
| 6404fbd36d | |||
| f442452a2e | |||
| 35f515e828 | |||
| 3215644a87 | |||
| 05198ddeab | |||
| 67402c3e54 | |||
| 78abaed26f | |||
| 64a56ea346 | |||
| 453bc1f249 | |||
| 7fc61d7d27 | |||
| d9edf3f389 | |||
| 4a29a676b5 | |||
| 6a61e05ae7 | |||
| ce1301af38 | |||
| dd3caf07d2 | |||
| c62421cfb6 | |||
| d4026e1559 | |||
| 53346c17ea | |||
| 52356a4a87 | |||
| c603389ebc | |||
| 2d8e528b6f | |||
| 87dea595d3 | |||
| 9629dd0ba0 | |||
| 9a722c915a | |||
| 65e7e86739 | |||
| 1b0dcd2863 | |||
| c1e4ef47f3 |
@@ -1 +0,0 @@
|
|||||||
hosts/desktop/hardware-configuration.nix
|
|
||||||
|
|||||||
@@ -1,58 +1,63 @@
|
|||||||
# Sakamoto NixOS
|
# Nix Sakamoto
|
||||||
|
A rewrite of the original Sakamoto NixOS configuration.
|
||||||
Sakamoto NixOS is built with various profiles intended for reproducibility.
|
|
||||||
|
|
||||||
## Available Hosts
|
|
||||||
|
|
||||||
- MacBook M series
|
|
||||||
- Linux
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
Installing Sakamoto Nix configuration may vary on your current operating system.
|
||||||
|
|
||||||
1. Install [Nix](https://nixos.org/download/).
|
| Hosts | Description |
|
||||||
|
|----------|--------------|
|
||||||
|
| hakase | gaming desktop (linux) |
|
||||||
|
| sakamoto | \[unavailable] server that uses containers (linux) |
|
||||||
|
| nano | \[unavailable] windows configuration |
|
||||||
|
| macos | macos configuration |
|
||||||
|
|
||||||
2. Ensure Nix is installed properly by running the following (this also gives you `nano` for editing later):
|
**Note: Replace `${Hosts}` with one of the options from the table above.**
|
||||||
|
|
||||||
|
### Linux Installation
|
||||||
|
|
||||||
|
1. Install [Nix](https://nixos.org).
|
||||||
|
2. Clone this directory.
|
||||||
```sh
|
```sh
|
||||||
nix-shell -p nano
|
$ git clone https://git.sakamoto.dev/kenji/nixos.git ~/.config/nixos
|
||||||
|
```
|
||||||
|
3. Create a hardware-configuration.conf
|
||||||
|
```sh
|
||||||
|
$ sudo nixos-generate-config --dir ~/.config/nixos/hosts/${Hosts}/
|
||||||
|
```
|
||||||
|
4. ⚠️ Modify `config.nix` that suits your configuration. **Be sure to edit `config.nix`! Most especially `myConfig.essentials.Username`. Otherwise, your OS could break!!!**
|
||||||
|
5. Rebuild.
|
||||||
|
```sh
|
||||||
|
$ sudo nixos-rebuild switch --flake ~/.config/nixos/hosts/#${Hosts}
|
||||||
|
```
|
||||||
|
6. Install unstable channel (fixes `pkgs.fish` misconfiguration).
|
||||||
|
```sh
|
||||||
|
$ nix-channel --add https://nixos.org/channels/nixos-unstable nixos nix-channel --update
|
||||||
|
```
|
||||||
|
7. (Optional) You can install `proton-ge` by running the following command:
|
||||||
|
```sh
|
||||||
|
protonup
|
||||||
|
```
|
||||||
|
8. (Optional) Add Decky Loader for Steam via this command:
|
||||||
|
```sh
|
||||||
|
touch ~/.steam/steam/.cef-enable-remote-debugging
|
||||||
|
|
||||||
|
```
|
||||||
|
### MacOS (Darwin) Installation
|
||||||
|
1. Install [Nix](https://nixos.org).
|
||||||
|
2. Clone this directory.
|
||||||
|
```sh
|
||||||
|
$ git clone https://git.sakamoto.dev/kenji/nixos.git ~/.config/nixos
|
||||||
|
```
|
||||||
|
3. ⚠️ Modify `config.nix` that suits your configuration. **Be sure to edit `config.nix`! Most especially `myConfig.essentials.Username`. Otherwise, configuration would not work!!!**
|
||||||
|
4. Rebuild.
|
||||||
|
```sh
|
||||||
|
$ sudo nix run nix-darwin --extra-experimental-features "nix-command flakes" -- switch --flake ~/.config/nixos#macos
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Clone the git repository:
|
## Problems:
|
||||||
|
* XDG defaults (file manager default is terminal)
|
||||||
```sh
|
* File Manager must be TUI
|
||||||
git clone https://git.sakamoto.dev/kenji/nixos.git ~/.config/nixos && cd ~/.config/nixos/
|
* Bluetooth and WiFi should open at TUI
|
||||||
```
|
* Steam and Heroic incompatible
|
||||||
|
* Broken switchwall.sh
|
||||||
4. Copy `info.default.nix` and rename it to `info.local.nix`:
|
* Box fonts
|
||||||
|
|
||||||
```sh
|
|
||||||
cp ~/.config/nixos/info.default.nix ~/.config/nixos/info.local.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
🚨 **CRITICAL STEP:** Edit `info.local.nix`:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
nano ~/.config/nixos/info.local.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
Modify it to fit your system — especially your **username**.
|
|
||||||
If you accidentally leave the default `biscuit`, that user will be created.
|
|
||||||
**Login password for `biscuit` is `Your-generic-password`.**
|
|
||||||
|
|
||||||
5. Execute the following command based on your host:
|
|
||||||
|
|
||||||
- **MacBook M series:**
|
|
||||||
|
|
||||||
```sh
|
|
||||||
sudo nix run nix-darwin --extra-experimental-features "nix-command flakes" -- switch --flake ~/.config/nixos#macos
|
|
||||||
```
|
|
||||||
|
|
||||||
- **Linux:**
|
|
||||||
|
|
||||||
```sh
|
|
||||||
sudo nixos-rebuild --flake ~/.config/nixos#desktop --impure
|
|
||||||
sudo nix run home-manager -- init --switch
|
|
||||||
home-manager switch --flake ~/.config/nixos#desktop --impure
|
|
||||||
nix-channel --add https://nixos.org/channels/nixos-unstable nixos nix-channel --update
|
|
||||||
reboot
|
|
||||||
```
|
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 42 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 2.6 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 246 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 14 MiB |
+69
-73
@@ -1,37 +1,82 @@
|
|||||||
{
|
{
|
||||||
myConfig = {
|
myConfig = {
|
||||||
general = {
|
macos = {
|
||||||
Hostname = "hakase";
|
Username = "lsoriano";
|
||||||
|
};
|
||||||
|
essentials = {
|
||||||
|
# !!! replace it with your own, else system might malfunction.
|
||||||
Username = "kenji";
|
Username = "kenji";
|
||||||
|
};
|
||||||
|
general = {
|
||||||
|
Terminal = {
|
||||||
|
font = "JetBrainsMono Nerd Font";
|
||||||
|
size = "18";
|
||||||
|
shell = "fish"; # or zsh
|
||||||
|
aliases = {};
|
||||||
|
};
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nixos = {
|
||||||
|
Hostname = "hakase";
|
||||||
Timezone = "America/Chicago";
|
Timezone = "America/Chicago";
|
||||||
|
enableSteamOS = false;
|
||||||
|
|
||||||
allowUnfree = true; # allows installation of commercial apps.
|
Boot = {
|
||||||
|
mode = "systemd"; # systemd or grub
|
||||||
terminal = {
|
|
||||||
Font = "JetBrainsMono Nerd Font"; # e.g., JetBrainsMono Nerd Font
|
|
||||||
Size = "18";
|
|
||||||
Shell = "fish";
|
|
||||||
Aliases = {
|
|
||||||
ls = "ls --color=auto";
|
|
||||||
update = ''
|
|
||||||
sh -c '
|
|
||||||
if [ "$(uname)" = "Darwin" ]; then
|
|
||||||
sudo darwin-rebuild switch --flake ~/.config/nixos#macos
|
|
||||||
else
|
|
||||||
sudo nixos-rebuild switch --flake ~/.config/nixos#desktop && home-manager switch --flake ~/.config/nixos#desktop
|
|
||||||
fi
|
|
||||||
'
|
|
||||||
'';
|
|
||||||
agu = "pkill gjs & ags run ~/.config/nixos/packages/ags/biscuit/app.ts & disown (jobs -p) &";
|
|
||||||
};
|
};
|
||||||
|
Apps = {
|
||||||
|
packages = pkgs:
|
||||||
|
with pkgs; [
|
||||||
|
adwaita-icon-theme
|
||||||
|
jellyfin-media-player
|
||||||
|
delfin
|
||||||
|
goverlay
|
||||||
|
geekbench_6
|
||||||
|
gparted
|
||||||
|
ntfs3g
|
||||||
|
feishin
|
||||||
|
discord
|
||||||
|
xfce.thunar
|
||||||
|
];
|
||||||
};
|
};
|
||||||
gitProfile = {
|
Hyprland = {
|
||||||
User = "kenji";
|
monitors = [
|
||||||
Email = "kenji@sakamoto.dev";
|
# "DP-2, highres@165,0x1080,1,vrr,1"
|
||||||
|
# "DP-2, highres@180,0x1080,1,cm,hdr, sdrbrightness, 1.5, sdrsaturation, 0.98"
|
||||||
|
"DP-2, highres@180,0x1080,1,bitdepth,10,cm,hdr,sdrbrightness,1.4,sdrsaturation,0.98"
|
||||||
|
"DP-1, highres@highrr,760x0,1"
|
||||||
|
"HDMI-A-1, 1920x1080@120, 20000x20000,1"
|
||||||
|
# "HDMI-A-1, disabled"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
Git = {
|
||||||
|
user = "kenji";
|
||||||
|
email = "kenji@hakase";
|
||||||
defaultBranch = "master";
|
defaultBranch = "master";
|
||||||
};
|
};
|
||||||
ssh = {
|
};
|
||||||
|
optionals = {
|
||||||
|
Builds = {
|
||||||
|
trustedUsers = [
|
||||||
|
"@groups"
|
||||||
|
];
|
||||||
|
buildMachines = [
|
||||||
|
{
|
||||||
|
hostName = "";
|
||||||
|
sshUser = "";
|
||||||
|
sshKey = "";
|
||||||
|
system = "";
|
||||||
|
supportedFeatures = ["apple-virt" "big-parallel" "kvm" "nixos-test"];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
Ssh = {
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
|
Host macair
|
||||||
|
User biscuit
|
||||||
|
HostName 192.168.68.81
|
||||||
|
|
||||||
Host gitea.sakamoto.dev
|
Host gitea.sakamoto.dev
|
||||||
User kenji
|
User kenji
|
||||||
ProxyCommand cloudflared access ssh --hostname %h
|
ProxyCommand cloudflared access ssh --hostname %h
|
||||||
@@ -39,54 +84,5 @@
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
builds = {
|
|
||||||
builder = {
|
|
||||||
trustedUsers = [
|
|
||||||
"@groups"
|
|
||||||
"biscuit"
|
|
||||||
];
|
|
||||||
buildMachines = [
|
|
||||||
{
|
|
||||||
hostName = "192.168.68.81";
|
|
||||||
sshUser = "biscuit";
|
|
||||||
sshKey = "/home/biscuit/.ssh/id_rsa.pub";
|
|
||||||
system = "x86_64-linux";
|
|
||||||
supportedFeatures = ["big-parallel" "kvm" "nixos-test"];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
linux = {
|
|
||||||
system = "x86_64";
|
|
||||||
gaming = true;
|
|
||||||
|
|
||||||
vpn = {
|
|
||||||
Enable = false;
|
|
||||||
secretFile = builtins.toPath ./secrets/.vpn.yaml;
|
|
||||||
};
|
|
||||||
|
|
||||||
touchpadSupport = false;
|
|
||||||
logitech-hardware.enable = true;
|
|
||||||
|
|
||||||
# Custom Applications
|
|
||||||
apps = {
|
|
||||||
gaming = true;
|
|
||||||
apps = pkgs:
|
|
||||||
with pkgs; [
|
|
||||||
jellyfin-media-player
|
|
||||||
];
|
|
||||||
};
|
|
||||||
hyprconf = {
|
|
||||||
Monitor = [
|
|
||||||
# hyprctl monitors all
|
|
||||||
# monitor, resolution@refreshrate, position (e.g., 0x0 is middle, 0x1080 is top), scale
|
|
||||||
"DP-1,highres@165,0x1080,auto"
|
|
||||||
"DP-2,highres@highrr,0x0,auto"
|
|
||||||
"HDMI-A-1, preferred, 20000x20000,1"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Generated
+1407
-219
File diff suppressed because it is too large
Load Diff
@@ -1,36 +1,57 @@
|
|||||||
{
|
{
|
||||||
description = "Sakamoto's NixOS Configuration";
|
description = "A rewrite of the original Sakamoto NixOS config.";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
home-manager.url = "github:nix-community/home-manager";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
home-manager.inputs.nixpkgs.follows = "nixpkgs"; # `follows` ensure it follows nixpkgs versiona. Avoids breaking updates.
|
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||||
darwin.url = "github:lnl7/nix-darwin";
|
|
||||||
darwin.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
|
|
||||||
ags.url = "github:aylur/ags";
|
jovian = {
|
||||||
ags.inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:Jovian-Experiments/Jovian-NixOS";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
hyprland.url = "github:hyprwm/Hyprland";
|
matugen = {
|
||||||
hyprland.inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:/InioX/Matugen";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
# ref = "refs/tags/matugen-v0.10.0";
|
||||||
|
};
|
||||||
|
|
||||||
unlisted-fonts.url = "git+https://git.sakamoto.dev/kenji/nix-fonts.git";
|
erosanix = {
|
||||||
unlisted-fonts.inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:emmanuelrosa/erosanix";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
nixovim.url = "git+https://git.sakamoto.dev/kenji/nixovim.git";
|
hyprland = {
|
||||||
nixovim.inputs.nixpkgs.follows = "nixpkgs";
|
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
matugen.url = "github:/InioX/Matugen";
|
home-manager = {
|
||||||
matugen.inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
nix-gaming.url = "github:fufexan/nix-gaming";
|
darwin = {
|
||||||
nix-gaming.inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:lnl7/nix-darwin";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
sops-nix.url = "github:Mic92/sops-nix";
|
nixovim = {
|
||||||
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
url = "git+https://git.sakamoto.dev/kenji/nixovim.git";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
quickshell.url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
illogical-impulse = {
|
||||||
quickshell.inputs.nixpkgs.follows = "nixpkgs";
|
url = "git+https://git.sakamoto.dev/kenji/illogical-impulse.git";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
omarchy-nix = {
|
||||||
|
url = "git+https://git.sakamoto.dev/kenji/omarchy-nix.git";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
inputs.home-manager.follows = "home-manager";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs = {
|
||||||
@@ -38,78 +59,85 @@
|
|||||||
nixpkgs,
|
nixpkgs,
|
||||||
home-manager,
|
home-manager,
|
||||||
darwin,
|
darwin,
|
||||||
ags,
|
chaotic,
|
||||||
hyprland,
|
jovian,
|
||||||
unlisted-fonts,
|
|
||||||
nixovim,
|
nixovim,
|
||||||
|
illogical-impulse,
|
||||||
|
erosanix,
|
||||||
|
omarchy-nix,
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
} @ inputs: let
|
||||||
config = import ./config.nix;
|
config = import ./config.nix;
|
||||||
lib = nixpkgs.lib;
|
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
# pkgs = nixpkgs.legacyPackages.${system}; # alternative, without overlays. Unused.
|
|
||||||
args =
|
args =
|
||||||
{
|
{
|
||||||
inherit inputs system;
|
inherit inputs system;
|
||||||
}
|
}
|
||||||
// config;
|
// config;
|
||||||
in {
|
in {
|
||||||
# nixosConfiguration for linux system
|
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
desktop = lib.nixosSystem {
|
hakase = nixpkgs.lib.nixosSystem {
|
||||||
inherit system;
|
|
||||||
specialArgs = args;
|
specialArgs = args;
|
||||||
modules = [
|
modules = [
|
||||||
./hosts/desktop/configuration.nix
|
chaotic.nixosModules.default
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
jovian.nixosModules.default
|
||||||
|
erosanix.nixosModules.protonvpn
|
||||||
|
./hosts/hakase/configuration.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
hakase-omarchy = nixpkgs.lib.nixosSystem {
|
||||||
homeConfigurations = {
|
specialArgs = args;
|
||||||
desktop = home-manager.lib.homeManagerConfiguration {
|
modules = [
|
||||||
pkgs = import nixpkgs {
|
chaotic.nixosModules.default
|
||||||
inherit system;
|
omarchy-nix.nixosModules.default
|
||||||
overlays = [
|
home-manager.nixosModules.home-manager
|
||||||
# (final: prev: {
|
./hosts/hakase-omarchy/configuration.nix
|
||||||
# ags_1 = prev.ags_1.overrideAttrs (old: {
|
];
|
||||||
# buildInputs = old.buildInputs ++ [pkgs.libdbusmenu-gtk3];
|
};
|
||||||
# });
|
vanilla = nixpkgs.lib.nixosSystem {
|
||||||
# })
|
specialArgs = args;
|
||||||
|
modules = [
|
||||||
|
./hosts/vanilla/configuration.nix
|
||||||
|
# nixovim.packages.${system}.full
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
extraSpecialArgs = args;
|
|
||||||
modules = [./home/desktop.nix];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
gaming = home-manager.lib.homeManagerConfiguration {
|
homeConfigurations = {
|
||||||
|
hakase = home-manager.lib.homeManagerConfiguration {
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
inherit system;
|
config.allowUnfree = true;
|
||||||
overlays = [];
|
|
||||||
};
|
|
||||||
extraSpecialArgs = args;
|
extraSpecialArgs = args;
|
||||||
modules = [./home/gaming.nix];
|
|
||||||
};
|
};
|
||||||
headless = home-manager.lib.homeManagerConfiguration {
|
modules = [
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
./home/hakase.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
hakase-omarchy = home-manager.lib.homeManagerConfiguration {
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
inherit system;
|
config.allowUnfree = true;
|
||||||
overlays = [];
|
|
||||||
};
|
|
||||||
extraSpecialArgs = args;
|
extraSpecialArgs = args;
|
||||||
modules = [./home/headless.nix];
|
};
|
||||||
|
modules = [
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
./home/hakase-omarchy.nix
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
# darwinConfiguration for macOS M series
|
|
||||||
darwinConfigurations = {
|
darwinConfigurations = {
|
||||||
macos = darwin.lib.darwinSystem {
|
macos = darwin.lib.darwinSystem {
|
||||||
system = "aarch64-darwin";
|
system = "aarch64-darwin";
|
||||||
specialArgs = args;
|
specialArgs =
|
||||||
modules = [
|
|
||||||
./hosts/macos/darwin.nix
|
|
||||||
home-manager.darwinModules.home-manager
|
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
inherit inputs;
|
||||||
home-manager.useUserPackages = true;
|
system = "aarch64-darwin";
|
||||||
home-manager.extraSpecialArgs = args;
|
|
||||||
}
|
}
|
||||||
|
// config;
|
||||||
|
modules = [
|
||||||
|
home-manager.darwinModules.home-manager
|
||||||
|
./hosts/macos/darwin.nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,11 +5,11 @@
|
|||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
../modules/terminal.nix
|
../modules/home/terminal.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
home.packages = [];
|
home.packages = [];
|
||||||
home.stateVersion = "23.05";
|
home.stateVersion = "25.11";
|
||||||
}
|
}
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
myConfig,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
../modules/terminal.nix
|
|
||||||
../modules/desktop.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
|
|
||||||
home = {
|
|
||||||
username = "${myConfig.general.Username}";
|
|
||||||
homeDirectory = "/home/${myConfig.general.Username}";
|
|
||||||
packages = [];
|
|
||||||
sessionVariables = {};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.startServices = "sd-switch";
|
|
||||||
home.stateVersion = "23.05";
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
# ... your other imports
|
||||||
|
inputs.omarchy-nix.homeManagerModules.default # Assuming you have a system module too
|
||||||
|
];
|
||||||
|
|
||||||
|
# ADD THIS BLOCK
|
||||||
|
|
||||||
|
home.stateVersion = "25.05";
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
info = import ../config.nix;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
# inputs.chaotic.homeManagerModules.default
|
||||||
|
../modules/home/desktop.nix
|
||||||
|
../modules/home/terminal.nix
|
||||||
|
../modules/home/apps.nix
|
||||||
|
];
|
||||||
|
# nix.package = pkgs.nix;
|
||||||
|
home.packages = info.myConfig.nixos.Apps.packages pkgs;
|
||||||
|
home.stateVersion = "25.05";
|
||||||
|
}
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
myConfig,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
inputs.sops-nix.nixosModules.sops
|
|
||||||
./hardware-configuration.nix
|
|
||||||
../../modules/linuxDev.nix
|
|
||||||
../../modules/system.nix
|
|
||||||
../../modules/de.nix
|
|
||||||
]
|
|
||||||
++ lib.optionals (myConfig.linux.apps.gaming == true) [
|
|
||||||
../../modules/gaming.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = [];
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
nix.settings = {
|
|
||||||
trusted-users = myConfig.builds.builder.trustedUsers;
|
|
||||||
experimental-features = ["nix-command" "flakes"];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.ssh.extraConfig = myConfig.general.ssh.extraConfig;
|
|
||||||
|
|
||||||
nix.distributedBuilds = true;
|
|
||||||
nix.settings.builders-use-substitutes = true;
|
|
||||||
|
|
||||||
# nix.buildMachines = builder.buildMachines;
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,156 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
specialArgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
../../modules/default/boot.nix
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
system.stateVersion = "25.05";
|
||||||
|
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
time.timeZone = "${myConfig.nixos.Timezone}";
|
||||||
|
nixpkgs.config.allowUnfree = myConfig.general.allowUnfree;
|
||||||
|
|
||||||
|
console = {
|
||||||
|
earlySetup = false;
|
||||||
|
font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
|
||||||
|
packages = with pkgs; [terminus_font];
|
||||||
|
useXkbConfig = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
# defaultUserShell = pkgs.${myConfig.general.Terminal.shell};
|
||||||
|
users = {
|
||||||
|
${myConfig.essentials.Username} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = ["wheel" "networkmanager" "input" "video"];
|
||||||
|
initialHashedPassword = "$y$j9T$NHFtSwF4NJtEmgMjy4Xdg.$9WQltjEx3eEfZ7GbpGLW8lBhJtiXPOeIawrxdmx0.vB";
|
||||||
|
useDefaultShell = true;
|
||||||
|
packages = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
omarchy = {
|
||||||
|
full_name = "${myConfig.essentials.Username}"; # Or variable
|
||||||
|
email_address = "${myConfig.nixos.Git.email}";
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
backupFileExtension = "backup";
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
extraSpecialArgs = specialArgs;
|
||||||
|
users.${myConfig.essentials.Username} = import ../../home/hakase-omarchy.nix;
|
||||||
|
};
|
||||||
|
networking = {
|
||||||
|
useDHCP = false;
|
||||||
|
wireless = {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
networkmanager.enable = true;
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [22 80 531];
|
||||||
|
allowedUDPPorts = [53 531 5353];
|
||||||
|
};
|
||||||
|
proxy = {
|
||||||
|
default = null;
|
||||||
|
noProxy = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd = {
|
||||||
|
# network.enable = true;
|
||||||
|
# extraConfig = "DefaultTimeoutStopSec=5s";
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
settings = {
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#
|
||||||
|
# hardware = {
|
||||||
|
# enableAllFirmware = true;
|
||||||
|
# logitech.wireless.enable = true;
|
||||||
|
#
|
||||||
|
# bluetooth = {
|
||||||
|
# enable = true;
|
||||||
|
# powerOnBoot = true;
|
||||||
|
# settings = {
|
||||||
|
# General = {
|
||||||
|
# # AutoEnable = true;
|
||||||
|
# Experimental = true;
|
||||||
|
# MultiProfile = "multiple";
|
||||||
|
# FastConnectable = true;
|
||||||
|
# # ControllerMode = "bredr";
|
||||||
|
# };
|
||||||
|
# Policy = {
|
||||||
|
# AutoEnable = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# graphics = {
|
||||||
|
# enable = true;
|
||||||
|
# enable32Bit = true;
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# xone.enable = true;
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
|
||||||
|
# security.rtkit.enable = true;
|
||||||
|
|
||||||
|
# programs = {
|
||||||
|
# bash.interactiveShellInit = ''
|
||||||
|
# if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]; then
|
||||||
|
# shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||||
|
# exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||||
|
# fi
|
||||||
|
# '';
|
||||||
|
# zsh.enable = true;
|
||||||
|
# fish.enable = true;
|
||||||
|
#
|
||||||
|
# appimage = {
|
||||||
|
# enable = true;
|
||||||
|
# binfmt = true;
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# ssh.extraConfig = myConfig.optionals.Ssh.extraConfig;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# jovian.steamos.enableMesaPatches = true;
|
||||||
|
#
|
||||||
|
# services = {
|
||||||
|
# displayManager.sessionPackages = [
|
||||||
|
# inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland
|
||||||
|
# ];
|
||||||
|
#
|
||||||
|
# getty.autologinUser = lib.mkOverride 10 "${myConfig.essentials.Username}";
|
||||||
|
#
|
||||||
|
# flatpak.enable = true;
|
||||||
|
# seatd.enable = true;
|
||||||
|
# upower.enable = true;
|
||||||
|
# scx.enable = true;
|
||||||
|
# libinput.enable = true;
|
||||||
|
# blueman.enable = true;
|
||||||
|
# printing.enable = true;
|
||||||
|
# openssh.enable = true;
|
||||||
|
#
|
||||||
|
# pipewire = {
|
||||||
|
# enable = true;
|
||||||
|
# alsa = {
|
||||||
|
# enable = true;
|
||||||
|
# support32Bit = true;
|
||||||
|
# };
|
||||||
|
# pulse.enable = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/mapper/luks-9091013c-0763-40a6-8316-d44d52df3530";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.luks.devices."luks-9091013c-0763-40a6-8316-d44d52df3530".device = "/dev/disk/by-uuid/9091013c-0763-40a6-8316-d44d52df3530";
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/B332-BF84";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -0,0 +1,174 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
specialArgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
./hardware-configuration.nix
|
||||||
|
../../modules/default/apps.nix
|
||||||
|
../../modules/default/desktop.nix
|
||||||
|
../../modules/default/remote.nix
|
||||||
|
../../modules/default/gaming.nix
|
||||||
|
../../modules/default/udev.nix
|
||||||
|
../../modules/default/boot.nix
|
||||||
|
../../modules/default/dev.nix
|
||||||
|
../../modules/default/security.nix
|
||||||
|
]
|
||||||
|
++ lib.optionals (myConfig.nixos.enableSteamOS == false) [
|
||||||
|
../../modules/default/login.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
system.stateVersion = "25.05";
|
||||||
|
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
time.timeZone = "${myConfig.nixos.Timezone}";
|
||||||
|
|
||||||
|
console = {
|
||||||
|
earlySetup = false;
|
||||||
|
font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
|
||||||
|
packages = with pkgs; [terminus_font];
|
||||||
|
useXkbConfig = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
defaultUserShell = pkgs.${myConfig.general.Terminal.shell};
|
||||||
|
users = {
|
||||||
|
${myConfig.essentials.Username} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = ["wheel" "networkmanager" "input" "video"];
|
||||||
|
initialHashedPassword = "$y$j9T$NHFtSwF4NJtEmgMjy4Xdg.$9WQltjEx3eEfZ7GbpGLW8lBhJtiXPOeIawrxdmx0.vB";
|
||||||
|
useDefaultShell = true;
|
||||||
|
packages = [];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
backupFileExtension = "backup";
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
useUserPackages = true;
|
||||||
|
extraSpecialArgs = specialArgs;
|
||||||
|
users.${myConfig.essentials.Username} = import ../../home/hakase.nix;
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config.allowUnfree = myConfig.general.allowUnfree;
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
distributedBuilds = true;
|
||||||
|
settings = {
|
||||||
|
builders-use-substitutes = true;
|
||||||
|
trusted-users = myConfig.optionals.Builds.trustedUsers;
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
enableAllFirmware = true;
|
||||||
|
logitech.wireless.enable = true;
|
||||||
|
|
||||||
|
bluetooth = {
|
||||||
|
enable = true;
|
||||||
|
powerOnBoot = true;
|
||||||
|
settings = {
|
||||||
|
General = {
|
||||||
|
Enable = "Source,Sink,Media,Socket";
|
||||||
|
# AutoEnable = true;
|
||||||
|
Experimental = true;
|
||||||
|
MultiProfile = "multiple";
|
||||||
|
FastConnectable = true;
|
||||||
|
# ControllerMode = "bredr";
|
||||||
|
};
|
||||||
|
Policy = {
|
||||||
|
AutoEnable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
graphics = {
|
||||||
|
enable = true;
|
||||||
|
enable32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xone.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
useDHCP = false;
|
||||||
|
wireless = {
|
||||||
|
enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
networkmanager.enable = true;
|
||||||
|
firewall = {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = [22 80];
|
||||||
|
allowedUDPPorts = [53];
|
||||||
|
};
|
||||||
|
proxy = {
|
||||||
|
default = null;
|
||||||
|
noProxy = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd = {
|
||||||
|
# network.enable = true;
|
||||||
|
# extraConfig = "DefaultTimeoutStopSec=5s";
|
||||||
|
};
|
||||||
|
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
bash.interactiveShellInit = ''
|
||||||
|
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]; then
|
||||||
|
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||||
|
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
zsh.enable = true;
|
||||||
|
fish.enable = true;
|
||||||
|
|
||||||
|
appimage = {
|
||||||
|
enable = true;
|
||||||
|
binfmt = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
ssh.extraConfig = myConfig.optionals.Ssh.extraConfig;
|
||||||
|
};
|
||||||
|
|
||||||
|
# jovian.steamos.enableMesaPatches = true;
|
||||||
|
|
||||||
|
services = {
|
||||||
|
displayManager.sessionPackages = [
|
||||||
|
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland
|
||||||
|
];
|
||||||
|
|
||||||
|
getty.autologinUser = lib.mkOverride 10 "${myConfig.essentials.Username}";
|
||||||
|
|
||||||
|
flatpak.enable = true;
|
||||||
|
seatd.enable = true;
|
||||||
|
upower.enable = true;
|
||||||
|
scx.enable = true;
|
||||||
|
libinput.enable = true;
|
||||||
|
blueman.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
openssh.enable = true;
|
||||||
|
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa = {
|
||||||
|
enable = true;
|
||||||
|
support32Bit = true;
|
||||||
|
};
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/mapper/luks-f8bd85aa-b08e-472a-b7f6-5e190b9b9714";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.initrd.luks.devices."luks-f8bd85aa-b08e-472a-b7f6-5e190b9b9714".device = "/dev/disk/by-uuid/f8bd85aa-b08e-472a-b7f6-5e190b9b9714";
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/72BA-AF9B";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
+12
-21
@@ -2,42 +2,33 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
myConfig,
|
myConfig,
|
||||||
inputs,
|
inputs,
|
||||||
|
system,
|
||||||
|
specialArgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
../../modules/macosDev.nix
|
../../modules/default/darwin.nix
|
||||||
inputs.sops-nix.darwinModules.sops
|
|
||||||
];
|
|
||||||
# List packages installed in system profile. To search by name, run:
|
|
||||||
# $ nix-env -qaP | grep wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
];
|
];
|
||||||
|
environment.systemPackages = [];
|
||||||
|
|
||||||
# Auto upgrade nix package and the daemon service.
|
|
||||||
# services.nix-daemon.enable = true;
|
|
||||||
# services.karabiner-elements.enable = true;
|
|
||||||
# nix.package = pkgs.nix;
|
|
||||||
|
|
||||||
# Necessary for using flakes on this system.
|
|
||||||
nix.settings.experimental-features = "nix-command flakes";
|
nix.settings.experimental-features = "nix-command flakes";
|
||||||
nix.settings.trusted-users = myConfig.builds.builder.trustedUsers;
|
# nix.settings.trusted-users = myConfig.optionals.Builds.trustedUsers;
|
||||||
|
|
||||||
# Create /etc/zshrc that loads the nix-darwin environment.
|
|
||||||
programs.zsh.enable = true; # default shell on catalina
|
programs.zsh.enable = true; # default shell on catalina
|
||||||
programs.fish.enable = true;
|
programs.fish.enable = true;
|
||||||
|
|
||||||
# $ darwin-rebuild changelog
|
|
||||||
system.stateVersion = 5;
|
system.stateVersion = 5;
|
||||||
|
|
||||||
# The platform the configuration will be used on.
|
|
||||||
nixpkgs.hostPlatform = "aarch64-darwin";
|
nixpkgs.hostPlatform = "aarch64-darwin";
|
||||||
security.pam.services.sudo_local.touchIdAuth = true;
|
security.pam.services.sudo_local.touchIdAuth = true;
|
||||||
|
|
||||||
users.users.${myConfig.general.Username} = {
|
users.users.${myConfig.macos.Username} = {
|
||||||
name = "${myConfig.general.Username}";
|
name = "${myConfig.macos.Username}";
|
||||||
home = "/Users/${myConfig.general.Username}";
|
home = "/Users/${myConfig.macos.Username}";
|
||||||
# shell = pkgs.${myConfig.general.terminal.Shell}; # no support for nix-darwin, but can be changed via chsh.
|
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.${myConfig.general.Username} = import ../../home/macos.nix;
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = specialArgs;
|
||||||
|
home-manager.users.${myConfig.macos.Username} = import ../../home/darwin.nix;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,133 @@
|
|||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page, on
|
||||||
|
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
# networking.hostName = "nixos"; # Define your hostname.
|
||||||
|
# Pick only one of the below networking options.
|
||||||
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
|
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||||||
|
|
||||||
|
# Set your time zone.
|
||||||
|
time.timeZone = "${myConfig.nixos.Timezone}";
|
||||||
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
# Select internationalisation properties.
|
||||||
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
|
console = {
|
||||||
|
earlySetup = false;
|
||||||
|
font = "${pkgs.terminus_font}/share/consolefonts/ter-132n.psf.gz";
|
||||||
|
packages = with pkgs; [terminus_font];
|
||||||
|
useXkbConfig = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
# services.xserver.enable = true;
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
# services.xserver.xkb.layout = "us";
|
||||||
|
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
# services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable sound.
|
||||||
|
# services.pulseaudio.enable = true;
|
||||||
|
# OR
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
services = {
|
||||||
|
blueman.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
# services.libinput.enable = true;
|
||||||
|
|
||||||
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.users.${myConfig.essentials.Username} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = ["wheel"]; # Enable ‘sudo’ for the user.
|
||||||
|
packages = with pkgs; [
|
||||||
|
tree
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# programs.firefox.enable = true;
|
||||||
|
|
||||||
|
# List packages installed in system profile.
|
||||||
|
# You can use https://search.nixos.org/ to find more packages (and options).
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
inputs.nixovim.packages.${system}.full
|
||||||
|
# linux-firmware
|
||||||
|
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
wget
|
||||||
|
];
|
||||||
|
|
||||||
|
hardware.firmware = [
|
||||||
|
pkgs.linux-firmware
|
||||||
|
];
|
||||||
|
# Some programs need SUID wrappers, can be configured further or are
|
||||||
|
# started in user sessions.
|
||||||
|
# programs.mtr.enable = true;
|
||||||
|
# programs.gnupg.agent = {
|
||||||
|
# enable = true;
|
||||||
|
# enableSSHSupport = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
# accidentally delete configuration.nix.
|
||||||
|
# system.copySystemConfiguration = true;
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||||
|
# to actually do that.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "25.11"; # Did you read the comment?
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-uuid/9f701bae-3392-4927-b27d-a905dd67edab";
|
||||||
|
fsType = "btrfs";
|
||||||
|
options = [ "subvol=@" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-uuid/894C-F998";
|
||||||
|
fsType = "vfat";
|
||||||
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" =
|
||||||
|
{ device = "/dev/disk/by-uuid/780aa81f-c4d6-478b-9c51-2d60362fdb07";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[ { device = "/dev/disk/by-uuid/b02ef55c-4caf-4a24-a6a2-fb8001eafe22"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp11s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wlp10s0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
}
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
../system/font.nix
|
|
||||||
../system/browser.nix
|
|
||||||
../system/wayland.nix
|
|
||||||
../system/graphics.nix
|
|
||||||
../system/security.nix
|
|
||||||
|
|
||||||
# FIXME
|
|
||||||
../system/amd.nix
|
|
||||||
]
|
|
||||||
++ lib.optionals (myConfig.linux.gaming == true) [
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
usbutils
|
||||||
|
pciutils
|
||||||
|
pavucontrol
|
||||||
|
wget
|
||||||
|
dualsensectl
|
||||||
|
protontricks
|
||||||
|
wl-clipboard
|
||||||
|
tldr
|
||||||
|
anki
|
||||||
|
lact
|
||||||
|
lm_sensors
|
||||||
|
grim
|
||||||
|
];
|
||||||
|
imports = [
|
||||||
|
../../packages/virtualbox/default.nix
|
||||||
|
# ../../packages/lact/default.nix
|
||||||
|
];
|
||||||
|
hardware.amdgpu.overdrive.enable = true;
|
||||||
|
services.lact.enable = true;
|
||||||
|
# services = {
|
||||||
|
# protonvpn = {
|
||||||
|
# enable = true;
|
||||||
|
# autostart = true;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
myConfig,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
boot = {
|
||||||
|
loader = {
|
||||||
|
timeout = 0;
|
||||||
|
efi = {
|
||||||
|
canTouchEfiVariables = true;
|
||||||
|
efiSysMountPoint = "/boot";
|
||||||
|
};
|
||||||
|
|
||||||
|
limine = lib.mkIf (myConfig.nixos.Boot.mode == "limine") {
|
||||||
|
enable = true;
|
||||||
|
maxGenerations = 5;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd-boot = lib.mkIf (myConfig.nixos.Boot.mode == "systemd") {
|
||||||
|
enable = true;
|
||||||
|
# xbootldrMountPoint = "/boot";
|
||||||
|
|
||||||
|
edk2-uefi-shell.enable = true;
|
||||||
|
edk2-uefi-shell.sortKey = "z_edk2";
|
||||||
|
};
|
||||||
|
|
||||||
|
# grub ain't that great for advanced setups such as using a secure boot.
|
||||||
|
grub = lib.mkIf (myConfig.nixos.Boot.mode == "grub") {
|
||||||
|
enable = true;
|
||||||
|
efiSupport = true;
|
||||||
|
device = "nodev";
|
||||||
|
useOSProber = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
plymouth = {
|
||||||
|
enable = false;
|
||||||
|
theme = "seal";
|
||||||
|
themePackages = with pkgs; [
|
||||||
|
(adi1090x-plymouth-themes.override {
|
||||||
|
selected_themes = ["seal"];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# blacklistedKernelModules = ["tpm_crb" "tpm_tis" "tpm"];
|
||||||
|
|
||||||
|
kernelPackages = pkgs.linuxPackages_cachyos;
|
||||||
|
kernelParams = [
|
||||||
|
# "quiet"
|
||||||
|
# "splash"
|
||||||
|
"boot.shell_on_fail"
|
||||||
|
"udev.log_priority=3"
|
||||||
|
"rd.systemd.show_status=auto"
|
||||||
|
"kvm.enable_virt_at_load=0"
|
||||||
|
];
|
||||||
|
|
||||||
|
initrd = {
|
||||||
|
systemd.enable = true;
|
||||||
|
kernelModules = [];
|
||||||
|
verbose = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
consoleLogLevel = 0;
|
||||||
|
};
|
||||||
|
hardware.amdgpu.initrd.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../packages/python/default.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
myConfig,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
# ../../packages/quickshell/default.nix
|
||||||
|
../../packages/hyprland/default.nix
|
||||||
|
../../packages/sunshine/default.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,12 +1,8 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
../../packages/python/default.nix
|
||||||
|
];
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
git
|
|
||||||
p7zip
|
p7zip
|
||||||
tldr
|
|
||||||
jq
|
|
||||||
btop
|
|
||||||
rar
|
|
||||||
|
|
||||||
cloudflared
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
../../packages/steam/default.nix
|
||||||
|
]
|
||||||
|
++ lib.optionals (myConfig.nixos.enableSteamOS == true)
|
||||||
|
[
|
||||||
|
../../packages/steam/jovian.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# file: configuration.nix
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
sources = import ./nix/sources.nix;
|
||||||
|
lanzaboote = import sources.lanzaboote;
|
||||||
|
in {
|
||||||
|
imports = [lanzaboote.nixosModules.lanzaboote];
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
# For debugging and troubleshooting Secure Boot.
|
||||||
|
pkgs.sbctl
|
||||||
|
];
|
||||||
|
|
||||||
|
# Lanzaboote currently replaces the systemd-boot module.
|
||||||
|
# This setting is usually set to true in configuration.nix
|
||||||
|
# generated at installation time. So we force it to false
|
||||||
|
# for now.
|
||||||
|
boot.loader.systemd-boot.enable = lib.mkForce false;
|
||||||
|
|
||||||
|
boot.lanzaboote = {
|
||||||
|
enable = true;
|
||||||
|
pkiBundle = "/var/lib/sbctl";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings.default_session = {
|
||||||
|
user = lib.mkOverride 10 "${myConfig.essentials.Username}";
|
||||||
|
command = lib.mkOverride 10 "Hyprland";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ../../packages/moondeck-buddy/appimage.nix
|
||||||
|
../../packages/sunshine/default.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
# ./lanzaboote.nix
|
||||||
|
];
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
niv
|
||||||
|
sbctl
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
# services.udev.extraRules = ''
|
||||||
|
# SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="0616", ATTR{power/wakeup}="enabled"
|
||||||
|
#
|
||||||
|
# '';
|
||||||
|
services.udev.packages = with pkgs; [
|
||||||
|
game-devices-udev-rules
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
myConfig,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
../packages/hyprland/default.nix
|
|
||||||
../packages/hypridle/default.nix
|
|
||||||
../packages/hyprlock/default.nix
|
|
||||||
../packages/rofi/default.nix
|
|
||||||
../packages/matugen/default.nix
|
|
||||||
../packages/swww/default.nix
|
|
||||||
../packages/quickshell/default.nix
|
|
||||||
../packages/ags/default.nix
|
|
||||||
]
|
|
||||||
++ lib.optionals (myConfig.linux.gaming == true) [
|
|
||||||
../packages/mangohud/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
../system/stream.nix
|
|
||||||
../system/gaming.nix
|
|
||||||
../system/appimage.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
imports = [
|
||||||
|
../../packages/firefox/home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
heroic
|
||||||
|
# fcitx5
|
||||||
|
# fcitx5-mozc-ut
|
||||||
|
# kdePackages.fcitx5-configtool
|
||||||
|
solaar
|
||||||
|
parted
|
||||||
|
edk2-uefi-shell
|
||||||
|
libreoffice
|
||||||
|
];
|
||||||
|
services.easyeffects = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
inputs.illogical-impulse.homeManagerModules.default
|
||||||
|
../../packages/fonts/home.nix
|
||||||
|
];
|
||||||
|
programs.illogical-impulse.enable = true;
|
||||||
|
programs.illogical-impulse.settings = {
|
||||||
|
hyprland.useNixForConf = false;
|
||||||
|
simpleStarship.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# wayland.windowManager.hyprland = {
|
||||||
|
# settings = {
|
||||||
|
# monitor = lib.mkForce [
|
||||||
|
# "DP-1, highres@180,0x1080,1,bitdepth,10,cm,hdr,sdrbrightness,1.4,sdrsaturation,0.98"
|
||||||
|
# "DP-2, highres@highrr,760x0,1"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# programs.illogical-impulse.settings.simpleStarship.enable = true;
|
||||||
|
home.packages = [
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ../../packages/moondeck-buddy/appimage.nix
|
||||||
|
../../packages/sunshine/default.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../packages/fish/home.nix
|
||||||
|
../../packages/kitty/home.nix
|
||||||
|
../../packages/neovim/home.nix
|
||||||
|
# ../../packages/starship/home.nix
|
||||||
|
../../packages/fastfetch/home.nix
|
||||||
|
../../packages/zsh/home.nix
|
||||||
|
../../packages/zoxide/home.nix
|
||||||
|
../../packages/fonts/home.nix
|
||||||
|
|
||||||
|
../../packages/git/home.nix
|
||||||
|
|
||||||
|
../../packages/btop/home.nix
|
||||||
|
../../packages/eza/home.nix
|
||||||
|
|
||||||
|
../../packages/cloudflared/home.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
../system/dev/tools.nix
|
|
||||||
../system/dev/python.nix
|
|
||||||
../system/dev/linux.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
../system/dev/tools.nix
|
|
||||||
../system/dev/python.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
../system/users.nix
|
|
||||||
../system/hardware.nix
|
|
||||||
../system/locale.nix
|
|
||||||
../system/network.nix
|
|
||||||
../system/programs.nix
|
|
||||||
../system/services.nix
|
|
||||||
../system/tty.nix
|
|
||||||
../system/firewall.nix
|
|
||||||
../system/boot.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
../packages/git/default.nix
|
|
||||||
../packages/fish/default.nix
|
|
||||||
../packages/kitty/default.nix
|
|
||||||
../packages/neovim/default.nix
|
|
||||||
../packages/starship/default.nix
|
|
||||||
../packages/fastfetch/default.nix
|
|
||||||
../packages/zsh/default.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"lanzaboote": {
|
||||||
|
"branch": "master",
|
||||||
|
"description": "Secure Boot for NixOS [maintainers=@blitz @raitobezarius @nikstur]",
|
||||||
|
"homepage": "",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "lanzaboote",
|
||||||
|
"rev": "v0.4.2",
|
||||||
|
"sha256": "0xc1wawnb0297h5khxblmf9pd1fry950xkcm7mwlck19s2906h80",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/nix-community/lanzaboote/archive/v0.4.2.tar.gz",
|
||||||
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz",
|
||||||
|
"version": "0.4.2"
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"branch": "nixos-unstable",
|
||||||
|
"description": "Nix Packages collection",
|
||||||
|
"homepage": null,
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "6c43a3495a11e261e5f41e5d7eda2d71dae1b2fe",
|
||||||
|
"sha256": "16f329z831bq7l3wn1dfvbkh95l2gcggdwn6rk3cisdmv2aa3189",
|
||||||
|
"type": "tarball",
|
||||||
|
"url": "https://github.com/NixOS/nixpkgs/archive/6c43a3495a11e261e5f41e5d7eda2d71dae1b2fe.tar.gz",
|
||||||
|
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
|
||||||
|
}
|
||||||
|
}
|
||||||
+198
@@ -0,0 +1,198 @@
|
|||||||
|
# This file has been generated by Niv.
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
#
|
||||||
|
# The fetchers. fetch_<type> fetches specs of type <type>.
|
||||||
|
#
|
||||||
|
|
||||||
|
fetch_file = pkgs: name: spec:
|
||||||
|
let
|
||||||
|
name' = sanitizeName name + "-src";
|
||||||
|
in
|
||||||
|
if spec.builtin or true then
|
||||||
|
builtins_fetchurl { inherit (spec) url sha256; name = name'; }
|
||||||
|
else
|
||||||
|
pkgs.fetchurl { inherit (spec) url sha256; name = name'; };
|
||||||
|
|
||||||
|
fetch_tarball = pkgs: name: spec:
|
||||||
|
let
|
||||||
|
name' = sanitizeName name + "-src";
|
||||||
|
in
|
||||||
|
if spec.builtin or true then
|
||||||
|
builtins_fetchTarball { name = name'; inherit (spec) url sha256; }
|
||||||
|
else
|
||||||
|
pkgs.fetchzip { name = name'; inherit (spec) url sha256; };
|
||||||
|
|
||||||
|
fetch_git = name: spec:
|
||||||
|
let
|
||||||
|
ref =
|
||||||
|
spec.ref or (
|
||||||
|
if spec ? branch then "refs/heads/${spec.branch}" else
|
||||||
|
if spec ? tag then "refs/tags/${spec.tag}" else
|
||||||
|
abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!"
|
||||||
|
);
|
||||||
|
submodules = spec.submodules or false;
|
||||||
|
submoduleArg =
|
||||||
|
let
|
||||||
|
nixSupportsSubmodules = builtins.compareVersions builtins.nixVersion "2.4" >= 0;
|
||||||
|
emptyArgWithWarning =
|
||||||
|
if submodules
|
||||||
|
then
|
||||||
|
builtins.trace
|
||||||
|
(
|
||||||
|
"The niv input \"${name}\" uses submodules "
|
||||||
|
+ "but your nix's (${builtins.nixVersion}) builtins.fetchGit "
|
||||||
|
+ "does not support them"
|
||||||
|
)
|
||||||
|
{ }
|
||||||
|
else { };
|
||||||
|
in
|
||||||
|
if nixSupportsSubmodules
|
||||||
|
then { inherit submodules; }
|
||||||
|
else emptyArgWithWarning;
|
||||||
|
in
|
||||||
|
builtins.fetchGit
|
||||||
|
({ url = spec.repo; inherit (spec) rev; inherit ref; } // submoduleArg);
|
||||||
|
|
||||||
|
fetch_local = spec: spec.path;
|
||||||
|
|
||||||
|
fetch_builtin-tarball = name: throw
|
||||||
|
''[${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`.
|
||||||
|
$ niv modify ${name} -a type=tarball -a builtin=true'';
|
||||||
|
|
||||||
|
fetch_builtin-url = name: throw
|
||||||
|
''[${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`.
|
||||||
|
$ niv modify ${name} -a type=file -a builtin=true'';
|
||||||
|
|
||||||
|
#
|
||||||
|
# Various helpers
|
||||||
|
#
|
||||||
|
|
||||||
|
# https://github.com/NixOS/nixpkgs/pull/83241/files#diff-c6f540a4f3bfa4b0e8b6bafd4cd54e8bR695
|
||||||
|
sanitizeName = name:
|
||||||
|
(
|
||||||
|
concatMapStrings (s: if builtins.isList s then "-" else s)
|
||||||
|
(
|
||||||
|
builtins.split "[^[:alnum:]+._?=-]+"
|
||||||
|
((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
# The set of packages used when specs are fetched using non-builtins.
|
||||||
|
mkPkgs = sources: system:
|
||||||
|
let
|
||||||
|
sourcesNixpkgs =
|
||||||
|
import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) { inherit system; };
|
||||||
|
hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
|
||||||
|
hasThisAsNixpkgsPath = <nixpkgs> == ./.;
|
||||||
|
in
|
||||||
|
if builtins.hasAttr "nixpkgs" sources
|
||||||
|
then sourcesNixpkgs
|
||||||
|
else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then
|
||||||
|
import <nixpkgs> { }
|
||||||
|
else
|
||||||
|
abort
|
||||||
|
''
|
||||||
|
Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
|
||||||
|
add a package called "nixpkgs" to your sources.json.
|
||||||
|
'';
|
||||||
|
|
||||||
|
# The actual fetching function.
|
||||||
|
fetch = pkgs: name: spec:
|
||||||
|
|
||||||
|
if ! builtins.hasAttr "type" spec then
|
||||||
|
abort "ERROR: niv spec ${name} does not have a 'type' attribute"
|
||||||
|
else if spec.type == "file" then fetch_file pkgs name spec
|
||||||
|
else if spec.type == "tarball" then fetch_tarball pkgs name spec
|
||||||
|
else if spec.type == "git" then fetch_git name spec
|
||||||
|
else if spec.type == "local" then fetch_local spec
|
||||||
|
else if spec.type == "builtin-tarball" then fetch_builtin-tarball name
|
||||||
|
else if spec.type == "builtin-url" then fetch_builtin-url name
|
||||||
|
else
|
||||||
|
abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
|
||||||
|
|
||||||
|
# If the environment variable NIV_OVERRIDE_${name} is set, then use
|
||||||
|
# the path directly as opposed to the fetched source.
|
||||||
|
replace = name: drv:
|
||||||
|
let
|
||||||
|
saneName = stringAsChars (c: if (builtins.match "[a-zA-Z0-9]" c) == null then "_" else c) name;
|
||||||
|
ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}";
|
||||||
|
in
|
||||||
|
if ersatz == "" then drv else
|
||||||
|
# this turns the string into an actual Nix path (for both absolute and
|
||||||
|
# relative paths)
|
||||||
|
if builtins.substring 0 1 ersatz == "/" then /. + ersatz else /. + builtins.getEnv "PWD" + "/${ersatz}";
|
||||||
|
|
||||||
|
# Ports of functions for older nix versions
|
||||||
|
|
||||||
|
# a Nix version of mapAttrs if the built-in doesn't exist
|
||||||
|
mapAttrs = builtins.mapAttrs or (
|
||||||
|
f: set: with builtins;
|
||||||
|
listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set))
|
||||||
|
);
|
||||||
|
|
||||||
|
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295
|
||||||
|
range = first: last: if first > last then [ ] else builtins.genList (n: first + n) (last - first + 1);
|
||||||
|
|
||||||
|
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257
|
||||||
|
stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1));
|
||||||
|
|
||||||
|
# https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269
|
||||||
|
stringAsChars = f: s: concatStrings (map f (stringToCharacters s));
|
||||||
|
concatMapStrings = f: list: concatStrings (map f list);
|
||||||
|
concatStrings = builtins.concatStringsSep "";
|
||||||
|
|
||||||
|
# https://github.com/NixOS/nixpkgs/blob/8a9f58a375c401b96da862d969f66429def1d118/lib/attrsets.nix#L331
|
||||||
|
optionalAttrs = cond: as: if cond then as else { };
|
||||||
|
|
||||||
|
# fetchTarball version that is compatible between all the versions of Nix
|
||||||
|
builtins_fetchTarball = { url, name ? null, sha256 }@attrs:
|
||||||
|
let
|
||||||
|
inherit (builtins) lessThan nixVersion fetchTarball;
|
||||||
|
in
|
||||||
|
if lessThan nixVersion "1.12" then
|
||||||
|
fetchTarball ({ inherit url; } // (optionalAttrs (name != null) { inherit name; }))
|
||||||
|
else
|
||||||
|
fetchTarball attrs;
|
||||||
|
|
||||||
|
# fetchurl version that is compatible between all the versions of Nix
|
||||||
|
builtins_fetchurl = { url, name ? null, sha256 }@attrs:
|
||||||
|
let
|
||||||
|
inherit (builtins) lessThan nixVersion fetchurl;
|
||||||
|
in
|
||||||
|
if lessThan nixVersion "1.12" then
|
||||||
|
fetchurl ({ inherit url; } // (optionalAttrs (name != null) { inherit name; }))
|
||||||
|
else
|
||||||
|
fetchurl attrs;
|
||||||
|
|
||||||
|
# Create the final "sources" from the config
|
||||||
|
mkSources = config:
|
||||||
|
mapAttrs
|
||||||
|
(
|
||||||
|
name: spec:
|
||||||
|
if builtins.hasAttr "outPath" spec
|
||||||
|
then
|
||||||
|
abort
|
||||||
|
"The values in sources.json should not have an 'outPath' attribute"
|
||||||
|
else
|
||||||
|
spec // { outPath = replace name (fetch config.pkgs name spec); }
|
||||||
|
)
|
||||||
|
config.sources;
|
||||||
|
|
||||||
|
# The "config" used by the fetchers
|
||||||
|
mkConfig =
|
||||||
|
{ sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null
|
||||||
|
, sources ? if sourcesFile == null then { } else builtins.fromJSON (builtins.readFile sourcesFile)
|
||||||
|
, system ? builtins.currentSystem
|
||||||
|
, pkgs ? mkPkgs sources system
|
||||||
|
}: rec {
|
||||||
|
# The sources, i.e. the attribute set of spec name to spec
|
||||||
|
inherit sources;
|
||||||
|
|
||||||
|
# The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
|
||||||
|
inherit pkgs;
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
mkSources (mkConfig { }) // { __functor = _: settings: mkSources (mkConfig settings); }
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
node_modules/
|
|
||||||
@girs/
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
import { App } from "astal/gtk3"
|
|
||||||
import style from "./style.scss"
|
|
||||||
import Bar from "./widget/Bar"
|
|
||||||
|
|
||||||
App.start({
|
|
||||||
css: style,
|
|
||||||
instanceName: "js",
|
|
||||||
requestHandler(request, res) {
|
|
||||||
print(request)
|
|
||||||
res("ok")
|
|
||||||
},
|
|
||||||
main: () => {
|
|
||||||
const monitors = App.get_monitors()
|
|
||||||
const primary = monitors.find(m => m.primary) || monitors[0]
|
|
||||||
return Bar(primary)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
$background: #131318;
|
|
||||||
$foreground: #e4e1e9;
|
|
||||||
$primary: #bec2ff;
|
|
||||||
Vendored
-21
@@ -1,21 +0,0 @@
|
|||||||
declare const SRC: string
|
|
||||||
|
|
||||||
declare module "inline:*" {
|
|
||||||
const content: string
|
|
||||||
export default content
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "*.scss" {
|
|
||||||
const content: string
|
|
||||||
export default content
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "*.blp" {
|
|
||||||
const content: string
|
|
||||||
export default content
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "*.css" {
|
|
||||||
const content: string
|
|
||||||
export default content
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "astal-shell",
|
|
||||||
"dependencies": {
|
|
||||||
"astal": "/home/biscuit/.local/share/ags"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,143 +0,0 @@
|
|||||||
@use "sass:color";
|
|
||||||
@use "./colors" as *;
|
|
||||||
|
|
||||||
// default
|
|
||||||
// $bg: #212223;
|
|
||||||
// $fg: #f1f1f1;
|
|
||||||
// $accent: #378DF7;
|
|
||||||
// $radius: 7px;
|
|
||||||
|
|
||||||
// Kanagawa Theme
|
|
||||||
// $bg: #1F1F28;
|
|
||||||
// $fg: #DCD7BA;
|
|
||||||
// $accent: #C0A36E;
|
|
||||||
// $radius: 7px;
|
|
||||||
|
|
||||||
// mstcl
|
|
||||||
// $bg: #121212;
|
|
||||||
// $fg: #f1f1f1;
|
|
||||||
// $accent: #C0A36E;
|
|
||||||
// $radius: 7px;
|
|
||||||
|
|
||||||
$bg: $background;
|
|
||||||
$fg: $foreground;
|
|
||||||
$accent: $primary;
|
|
||||||
$radius: 7px;
|
|
||||||
|
|
||||||
window.Bar {
|
|
||||||
border: none;
|
|
||||||
box-shadow: none;
|
|
||||||
background-color: $bg;
|
|
||||||
color: $fg;
|
|
||||||
font-size: 1.1em;
|
|
||||||
font-weight: bold;
|
|
||||||
font-family: "JetBrainsMono Nerd Font";
|
|
||||||
|
|
||||||
label {
|
|
||||||
margin: 0 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Workspaces {
|
|
||||||
button {
|
|
||||||
all: unset;
|
|
||||||
background-color: transparent;
|
|
||||||
|
|
||||||
&:hover label {
|
|
||||||
background-color: color.adjust($fg, $alpha: -0.84);
|
|
||||||
border-color: color.adjust($accent, $alpha: -0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active label {
|
|
||||||
background-color: color.adjust($fg, $alpha: -0.8)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
|
||||||
transition: 200ms;
|
|
||||||
padding: 0 8px;
|
|
||||||
margin: 2px;
|
|
||||||
border-radius: $radius;
|
|
||||||
border: 1pt solid transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.focused label {
|
|
||||||
color: $accent;
|
|
||||||
border-color: $accent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.SysTray {
|
|
||||||
margin-right: 8px;
|
|
||||||
|
|
||||||
button {
|
|
||||||
padding: 0 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.Time {
|
|
||||||
.TimeHM {
|
|
||||||
font-weight: bold;
|
|
||||||
color: $accent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.TimeDate {
|
|
||||||
// color: color.adjust($fg, $lightness: -10%);
|
|
||||||
color: $fg;
|
|
||||||
opacity: 0.85;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.FocusedClient {
|
|
||||||
color: color.adjust($fg, $lightness: -30%);
|
|
||||||
opacity: 0.7;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Media .Cover {
|
|
||||||
min-height: 1.2em;
|
|
||||||
min-width: 1.2em;
|
|
||||||
border-radius: $radius;
|
|
||||||
background-position: center;
|
|
||||||
background-size: contain;
|
|
||||||
}
|
|
||||||
|
|
||||||
.Battery label {
|
|
||||||
padding-left: 0;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.AudioSlider {
|
|
||||||
* {
|
|
||||||
all: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
icon {
|
|
||||||
margin-right: .6em;
|
|
||||||
}
|
|
||||||
|
|
||||||
& {
|
|
||||||
margin: 0 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
trough {
|
|
||||||
background-color: color.adjust($fg, $alpha: -0.8);
|
|
||||||
border-radius: $radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
highlight {
|
|
||||||
background-color: $accent;
|
|
||||||
min-height: .8em;
|
|
||||||
border-radius: $radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
slider {
|
|
||||||
background-color: $fg;
|
|
||||||
border-radius: $radius;
|
|
||||||
min-height: 1em;
|
|
||||||
min-width: 1em;
|
|
||||||
margin: -.2em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://json.schemastore.org/tsconfig",
|
|
||||||
"compilerOptions": {
|
|
||||||
"experimentalDecorators": true,
|
|
||||||
"strict": true,
|
|
||||||
"target": "ES2022",
|
|
||||||
"module": "ES2022",
|
|
||||||
"moduleResolution": "Bundler",
|
|
||||||
// "checkJs": true,
|
|
||||||
// "allowJs": true,
|
|
||||||
"jsx": "react-jsx",
|
|
||||||
"jsxImportSource": "astal/gtk3",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,189 +0,0 @@
|
|||||||
import { App } from "astal/gtk3"
|
|
||||||
import { Variable, GLib, bind } from "astal"
|
|
||||||
import { Astal, Gtk, Gdk } from "astal/gtk3"
|
|
||||||
import Hyprland from "gi://AstalHyprland"
|
|
||||||
import Mpris from "gi://AstalMpris"
|
|
||||||
import Battery from "gi://AstalBattery"
|
|
||||||
import Wp from "gi://AstalWp"
|
|
||||||
import Network from "gi://AstalNetwork"
|
|
||||||
import Tray from "gi://AstalTray"
|
|
||||||
|
|
||||||
function SysTray() {
|
|
||||||
const tray = Tray.get_default()
|
|
||||||
|
|
||||||
return <box className="SysTray">
|
|
||||||
{bind(tray, "items").as(items => items.map(item => (
|
|
||||||
<menubutton
|
|
||||||
tooltipMarkup={bind(item, "tooltipMarkup")}
|
|
||||||
usePopover={false}
|
|
||||||
actionGroup={bind(item, "actionGroup").as(ag => ["dbusmenu", ag])}
|
|
||||||
menuModel={bind(item, "menuModel")}>
|
|
||||||
<icon gicon={bind(item, "gicon")} />
|
|
||||||
</menubutton>
|
|
||||||
)))}
|
|
||||||
</box>
|
|
||||||
}
|
|
||||||
|
|
||||||
function Wifi() {
|
|
||||||
const network = Network.get_default()
|
|
||||||
const wifi = bind(network, "wifi")
|
|
||||||
|
|
||||||
return <box visible={wifi.as(Boolean)}>
|
|
||||||
{wifi.as(wifi => wifi && (
|
|
||||||
<icon
|
|
||||||
tooltipText={bind(wifi, "ssid").as(String)}
|
|
||||||
className="Wifi"
|
|
||||||
icon={bind(wifi, "iconName")}
|
|
||||||
/>
|
|
||||||
))}
|
|
||||||
</box>
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function AudioSlider() {
|
|
||||||
const speaker = Wp.get_default()?.audio.defaultSpeaker!
|
|
||||||
|
|
||||||
return <box className="AudioSlider" css="min-width: 140px">
|
|
||||||
<icon icon={bind(speaker, "volumeIcon")} />
|
|
||||||
<slider
|
|
||||||
hexpand
|
|
||||||
onDragged={({ value }) => speaker.volume = value}
|
|
||||||
value={bind(speaker, "volume")}
|
|
||||||
/>
|
|
||||||
</box>
|
|
||||||
}
|
|
||||||
|
|
||||||
function BatteryLevel() {
|
|
||||||
const bat = Battery.get_default()
|
|
||||||
|
|
||||||
return <box className="Battery"
|
|
||||||
visible={bind(bat, "isPresent")}>
|
|
||||||
<icon icon={bind(bat, "batteryIconName")} />
|
|
||||||
<label label={bind(bat, "percentage").as(p =>
|
|
||||||
`${Math.floor(p * 100)} %`
|
|
||||||
)} />
|
|
||||||
</box>
|
|
||||||
}
|
|
||||||
|
|
||||||
function Media() {
|
|
||||||
const mpris = Mpris.get_default()
|
|
||||||
|
|
||||||
return <box className="Media">
|
|
||||||
{bind(mpris, "players").as(ps => ps[0] ? (
|
|
||||||
<box>
|
|
||||||
<box
|
|
||||||
className="Cover"
|
|
||||||
valign={Gtk.Align.CENTER}
|
|
||||||
css={bind(ps[0], "coverArt").as(cover =>
|
|
||||||
`background-image: url('${cover}');`
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
<label
|
|
||||||
label={bind(ps[0], "metadata").as(() =>
|
|
||||||
`${ps[0].title} - ${ps[0].artist}`
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
</box>
|
|
||||||
) : (
|
|
||||||
<label label="Biscuit" />
|
|
||||||
))}
|
|
||||||
</box>
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function Workspaces() {
|
|
||||||
const hypr = Hyprland.get_default();
|
|
||||||
|
|
||||||
return (
|
|
||||||
<box className="Workspaces">
|
|
||||||
{bind(hypr, "focusedWorkspace").as((fw) => {
|
|
||||||
if (!fw) return null;
|
|
||||||
|
|
||||||
// Determine the current chunk of 5 visible workspace buttons
|
|
||||||
const currentChunkStart = Math.floor((fw.id - 1) / 5) * 5 + 1;
|
|
||||||
const visibleIds = Array.from({ length: 5 }, (_, i) => currentChunkStart + i);
|
|
||||||
|
|
||||||
return visibleIds.map((id) => {
|
|
||||||
// Try to get the real workspace, fall back to a dummy one if it doesn't exist
|
|
||||||
const ws =
|
|
||||||
hypr.workspaces.find((w) => w.id === id) ??
|
|
||||||
Hyprland.Workspace.dummy(id, null);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<button
|
|
||||||
className={fw.id === id ? "focused" : ""}
|
|
||||||
onClick={() => ws.focus()}
|
|
||||||
>
|
|
||||||
{id}
|
|
||||||
</button>
|
|
||||||
);
|
|
||||||
});
|
|
||||||
})}
|
|
||||||
</box>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function FocusedClient() {
|
|
||||||
const hypr = Hyprland.get_default();
|
|
||||||
const focused = bind(hypr, "focusedClient");
|
|
||||||
|
|
||||||
return (
|
|
||||||
<box className="FocusedClient" visible={focused.as(Boolean)}>
|
|
||||||
{focused.as(client => {
|
|
||||||
if (!client) return null;
|
|
||||||
|
|
||||||
return (
|
|
||||||
<label
|
|
||||||
label={bind(client, "title").as(title => {
|
|
||||||
return title.length > 40
|
|
||||||
? title.slice(0, 37) + "..."
|
|
||||||
: title;
|
|
||||||
})}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</box>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
function Time({ format = "%H:%M|%a %b %d" }) {
|
|
||||||
const time = Variable<string>("").poll(1000, () =>
|
|
||||||
GLib.DateTime.new_now_local().format(format)!
|
|
||||||
);
|
|
||||||
|
|
||||||
return bind(time).as(str => {
|
|
||||||
const [hm, date] = str.split("|");
|
|
||||||
|
|
||||||
return (
|
|
||||||
<box className="Time">
|
|
||||||
<label className="TimeHM" label={hm} />
|
|
||||||
<label className="TimeDate" label={date} />
|
|
||||||
</box>
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function Bar(monitor: Gdk.Monitor) {
|
|
||||||
const { TOP, LEFT, RIGHT } = Astal.WindowAnchor
|
|
||||||
|
|
||||||
return <window
|
|
||||||
className="Bar"
|
|
||||||
gdkmonitor={monitor}
|
|
||||||
exclusivity={Astal.Exclusivity.EXCLUSIVE}
|
|
||||||
anchor={TOP | LEFT | RIGHT}>
|
|
||||||
<centerbox>
|
|
||||||
<box hexpand halign={Gtk.Align.START}>
|
|
||||||
<Workspaces />
|
|
||||||
<FocusedClient />
|
|
||||||
</box>
|
|
||||||
<box>
|
|
||||||
<Time />
|
|
||||||
</box>
|
|
||||||
<box hexpand halign={Gtk.Align.END} >
|
|
||||||
<SysTray />
|
|
||||||
<Wifi />
|
|
||||||
<AudioSlider />
|
|
||||||
<BatteryLevel />
|
|
||||||
</box>
|
|
||||||
</centerbox>
|
|
||||||
</window>
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [inputs.ags.homeManagerModules.default];
|
|
||||||
|
|
||||||
programs.ags = {
|
|
||||||
enable = true;
|
|
||||||
configDir = ./biscuit;
|
|
||||||
|
|
||||||
extraPackages = let
|
|
||||||
agsPkgs = inputs.ags.packages.${system};
|
|
||||||
in
|
|
||||||
with pkgs; [
|
|
||||||
agsPkgs.battery
|
|
||||||
agsPkgs.hyprland
|
|
||||||
agsPkgs.mpris
|
|
||||||
agsPkgs.wireplumber
|
|
||||||
agsPkgs.notifd
|
|
||||||
agsPkgs.apps
|
|
||||||
agsPkgs.network
|
|
||||||
agsPkgs.tray
|
|
||||||
fzf
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
bibata-cursors
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
programs.btop = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
vim_keys = true;
|
||||||
|
theme_background = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
cloudflared
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
git = true;
|
||||||
|
colors = "auto";
|
||||||
|
icons = "auto";
|
||||||
|
|
||||||
|
enableZshIntegration = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,113 @@
|
|||||||
|
{
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
languagePacks = [
|
||||||
|
"en-US"
|
||||||
|
];
|
||||||
|
profiles = {
|
||||||
|
hakase = {
|
||||||
|
search.force = true;
|
||||||
|
isDefault = true;
|
||||||
|
search.default = "ddg";
|
||||||
|
settings = {
|
||||||
|
"browser.contentblocking.category" = "strict";
|
||||||
|
"extensions.pocket.enabled" = false;
|
||||||
|
"extensions.screenshots.disabled" = true;
|
||||||
|
"browser.topsites.contile.enabled" = false;
|
||||||
|
"browser.formfill.enable" = false;
|
||||||
|
"browser.search.suggest.enabled" = false;
|
||||||
|
"browser.search.suggest.enabled.private" = false;
|
||||||
|
"browser.urlbar.suggest.searches" = false;
|
||||||
|
"browser.urlbar.showSearchSuggestionsFirst" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.section.topstories" = false;
|
||||||
|
"browser.newtabpage.activity-stream.feeds.snippets" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includePocket" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false;
|
||||||
|
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsored" = false;
|
||||||
|
"browser.newtabpage.activity-stream.system.showSponsored" = false;
|
||||||
|
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
|
||||||
|
"browser.startup.homepage" = "https://dash.sakamoto.dev";
|
||||||
|
"browser.newtabpage.pinned" = [
|
||||||
|
{
|
||||||
|
title = "Dashboard";
|
||||||
|
url = "https://dash.sakamoto.dev";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
bookmarks = {
|
||||||
|
force = true;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
toolbar = true;
|
||||||
|
bookmarks = [
|
||||||
|
{
|
||||||
|
name = "Home Manager";
|
||||||
|
url = "https://mynixos.com/home-manager/options/programs";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "YouTube";
|
||||||
|
url = "https://youtube.com";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
policies = {
|
||||||
|
DisableTelemetry = true;
|
||||||
|
DisableFirefoxStudies = true;
|
||||||
|
EnableTrackingProtection = {
|
||||||
|
Value = true;
|
||||||
|
Locked = true;
|
||||||
|
Cryptomining = true;
|
||||||
|
Fingerprinting = true;
|
||||||
|
};
|
||||||
|
DisablePocket = true;
|
||||||
|
DisableFirefoxAccounts = true;
|
||||||
|
DisableAccounts = true;
|
||||||
|
DisableFirefoxScreenshots = true;
|
||||||
|
OverrideFirstRunPage = "";
|
||||||
|
OverridePostUpdatePage = "";
|
||||||
|
DontCheckDefaultBrowser = true;
|
||||||
|
DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab"
|
||||||
|
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
|
||||||
|
SearchBar = "unified"; # alternative: "separate"
|
||||||
|
|
||||||
|
/*
|
||||||
|
---- EXTENSIONS ----
|
||||||
|
*/
|
||||||
|
# Check about:support for extension/add-on ID strings.
|
||||||
|
# Valid strings for installation_mode are "allowed", "blocked",
|
||||||
|
# "force_installed" and "normal_installed".
|
||||||
|
ExtensionSettings = {
|
||||||
|
"*".installation_mode = "allowed";
|
||||||
|
"uBlock0@raymondhill.net" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
"{446900e4-71c2-419f-a6a7-df9c091e268b}" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/file/4493940/bitwarden_password_manager-2025.5.0.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
"tridactyl.vim@cmcaine.co.uk" = {
|
||||||
|
install_url = "https://addons.mozilla.org/firefox/downloads/file/4405615/tridactyl_vim-1.24.2.xpi";
|
||||||
|
installation_mode = "force_installed";
|
||||||
|
};
|
||||||
|
# Privacy Badger:
|
||||||
|
# "jid1-MnnxcxisBPnSXQ@jetpack" = {
|
||||||
|
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger17/latest.xpi";
|
||||||
|
# installation_mode = "force_installed";
|
||||||
|
# };
|
||||||
|
# 1Password:
|
||||||
|
# "{d634138d-c276-4fc8-924b-40a0ea21d284}" = {
|
||||||
|
# install_url = "https://addons.mozilla.org/firefox/downloads/latest/1password-x-password-manager/latest.xpi";
|
||||||
|
# installation_mode = "force_installed";
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
myConfig,
|
myConfig,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
programs.zoxide.enable = true;
|
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
interactiveShellInit = ''
|
interactiveShellInit = ''
|
||||||
@@ -12,7 +11,7 @@
|
|||||||
zoxide init fish | source
|
zoxide init fish | source
|
||||||
|
|
||||||
'';
|
'';
|
||||||
shellAliases = myConfig.general.terminal.Aliases;
|
shellAliases = myConfig.general.Terminal.aliases;
|
||||||
|
|
||||||
plugins = with pkgs.fishPlugins; [
|
plugins = with pkgs.fishPlugins; [
|
||||||
];
|
];
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
fonts = {
|
||||||
|
fontconfig.enable = true;
|
||||||
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
{myConfig, ...}: {
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = {
|
|
||||||
user.name = "${myConfig.general.gitProfile.User}";
|
|
||||||
user.email = "${myConfig.general.gitProfile.Email}";
|
|
||||||
init.defaultBranch = "${myConfig.general.gitProfile.defaultBranch}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = {
|
||||||
|
user.name = "${myConfig.nixos.Git.user}";
|
||||||
|
user.email = "${myConfig.nixos.Git.email}";
|
||||||
|
init.defaultBranch = "${myConfig.nixos.Git.defaultBranch}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
{...}: {
|
|
||||||
services.hypridle = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
|
||||||
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
|
|
||||||
after_sleep_cmd = "hyprctl dispatch dpms on && agu"; # avoid needing to press a key twice to turn on the display.
|
|
||||||
};
|
|
||||||
|
|
||||||
listener = [
|
|
||||||
{
|
|
||||||
timeout = 150;
|
|
||||||
on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
|
||||||
on-resume = "brightnessctl -r"; # restore monitor backlight.
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 150;
|
|
||||||
on-timeout = "brightnessctl -sd rgb:kbd_backlight set 0"; # turn off keyboard backlight.
|
|
||||||
on-resume = "brightnessctl -rd rgb:kbd_backlight"; # turn on keyboard backlight.
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 300;
|
|
||||||
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed.
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 330;
|
|
||||||
on-timeout = "hyprctl dispatch dpms off"; # screen off after 5.5min.
|
|
||||||
on-resume = "hyprctl dispatch dpms on && brightnessctl -r"; # screen on and restore brightness on resume.
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 500;
|
|
||||||
on-timeout = "systemctl suspend"; # suspend PC after 30min.
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{...}: {
|
||||||
|
services.hypridle = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
general = {
|
||||||
|
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
||||||
|
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
|
||||||
|
after_sleep_cmd = "hyprctl dispatch dpms on && agu"; # avoid needing to press a key twice to turn on the display.
|
||||||
|
};
|
||||||
|
|
||||||
|
listener = [
|
||||||
|
# {
|
||||||
|
# timeout = 150;
|
||||||
|
# on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||||
|
# on-resume = "brightnessctl -r"; # restore monitor backlight.
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# timeout = 150;
|
||||||
|
# on-timeout = "brightnessctl -sd rgb:kbd_backlight set 0"; # turn off keyboard backlight.
|
||||||
|
# on-resume = "brightnessctl -rd rgb:kbd_backlight"; # turn on keyboard backlight.
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# timeout = 300;
|
||||||
|
# on-timeout = "loginctl lock-session"; # lock screen when timeout has passed.
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# timeout = 330;
|
||||||
|
# on-timeout = "hyprctl dispatch dpms off"; # screen off after 5.5min.
|
||||||
|
# on-resume = "hyprctl dispatch dpms on && brightnessctl -r"; # screen on and restore brightness on resume.
|
||||||
|
# }
|
||||||
|
{
|
||||||
|
timeout = 500;
|
||||||
|
on-timeout = "systemctl suspend"; # suspend PC after 30min.
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
animations = {
|
||||||
|
enabled = true;
|
||||||
|
bezier = [
|
||||||
|
"linear, 0, 0, 1, 1"
|
||||||
|
"md3_standard, 0.2, 0, 0, 1"
|
||||||
|
"md3_decel, 0.05, 0.7, 0.1, 1"
|
||||||
|
"md3_accel, 0.3, 0, 0.8, 0.15"
|
||||||
|
"overshot, 0.05, 0.9, 0.1, 1.1"
|
||||||
|
"crazyshot, 0.1, 1.5, 0.76, 0.92"
|
||||||
|
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
|
||||||
|
"menu_decel, 0.1, 1, 0, 1"
|
||||||
|
"menu_accel, 0.38, 0.04, 1, 0.07"
|
||||||
|
"easeInOutCirc, 0.85, 0, 0.15, 1"
|
||||||
|
"easeOutCirc, 0, 0.55, 0.45, 1"
|
||||||
|
"easeOutExpo, 0.16, 1, 0.3, 1"
|
||||||
|
"softAcDecel, 0.26, 0.26, 0.15, 1"
|
||||||
|
"md2, 0.4, 0, 0.2, 1"
|
||||||
|
];
|
||||||
|
|
||||||
|
animation = [
|
||||||
|
"windows, 1, 3, md3_decel, popin 60%"
|
||||||
|
"windowsIn, 1, 3, md3_decel, popin 60%"
|
||||||
|
"windowsOut, 1, 3, md3_accel, popin 60%"
|
||||||
|
"border, 1, 10, default"
|
||||||
|
"fade, 1, 3, md3_decel"
|
||||||
|
"layersIn, 1, 3, menu_decel, slide"
|
||||||
|
"layersOut, 1, 1.6, menu_accel"
|
||||||
|
"fadeLayersIn, 1, 2, menu_decel"
|
||||||
|
"fadeLayersOut, 1, 0.5, menu_accel"
|
||||||
|
"workspaces, 1, 7, menu_decel, slide"
|
||||||
|
"specialWorkspace, 1, 3, md3_decel, slidevert"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,300 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
exec = [
|
||||||
|
"hyprctl dispatch submap global"
|
||||||
|
];
|
||||||
|
|
||||||
|
submap = [
|
||||||
|
"global"
|
||||||
|
];
|
||||||
|
|
||||||
|
# Shell keybinds
|
||||||
|
bindi = [
|
||||||
|
"$mod, Super_L, global, caelestia:launcher" # bind to `bind` because `bindi` maps to it
|
||||||
|
# Launcher
|
||||||
|
];
|
||||||
|
bindin =
|
||||||
|
[
|
||||||
|
"$mod, catchall, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:272, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:273, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:274, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:275, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:276, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse:277, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse_up, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, mouse_down, global, caelestia:launcherInterrupt"
|
||||||
|
|
||||||
|
"$mod, K, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, H, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, J, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, L, global, caelestia:launcherInterrupt"
|
||||||
|
|
||||||
|
"$mod, S, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, G, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, T, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, D, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, Escape, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, PERIOD, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, SPACE, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, E, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, V, global, caelestia:launcherInterrupt"
|
||||||
|
|
||||||
|
"$mod, W, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, Q, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, C, global, caelestia:launcherInterrupt"
|
||||||
|
"$mod, Return, global, caelestia:launcherInterrupt"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# Go to workspace group #
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
i: let
|
||||||
|
ws = i + 1;
|
||||||
|
in [
|
||||||
|
"$mod, ${toString ws}, global, caelestia:launcherInterrupt"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
9)
|
||||||
|
)
|
||||||
|
++ [
|
||||||
|
"$mod, 0, global, caelestia:launcherInterrupt"
|
||||||
|
];
|
||||||
|
bind =
|
||||||
|
[
|
||||||
|
# Misc
|
||||||
|
"Control+Alt, Delete, exec, caelestia:session"
|
||||||
|
"$mod ALT, A, global, caelestia:showall"
|
||||||
|
"$mod ALT, L, global, caelestia:lock"
|
||||||
|
|
||||||
|
"$mod, SPACE, exec, rofi -show drun"
|
||||||
|
|
||||||
|
# Restore lock - these are `bindl` in your original, but `exec` should be fine here.
|
||||||
|
# However, `bindl` is typically for a *release* event. If `caelestia shell -d` is a daemon,
|
||||||
|
# and `caelestia:lock` is a quickshell internal, you might need to reconsider.
|
||||||
|
# For direct translation, they go into `bindl` list.
|
||||||
|
|
||||||
|
# Media - handled by bindl below
|
||||||
|
|
||||||
|
# Apps
|
||||||
|
"$mod, Return, exec, app2unit -- kitty"
|
||||||
|
"$mod, W, exec, app2unit -- firefox"
|
||||||
|
"$mod, E, exec, app2unit -- thunar"
|
||||||
|
"$mod, Q, killactive"
|
||||||
|
"$mod ALT, E, exec, app2unit -- nemo"
|
||||||
|
"Control+Alt, Escape, exec, app2unit -- qps"
|
||||||
|
"Control+Alt, V, exec, app2unit -- pavucontrol"
|
||||||
|
|
||||||
|
# Utilities
|
||||||
|
"$mod SHIFT, S, global, caelestia:screenshotFreeze"
|
||||||
|
"$mod SHIFT ALT, S, global, caelestia:screenshot"
|
||||||
|
"$mod ALT, R, exec, caelestia record -s"
|
||||||
|
"Control+Alt, R, exec, caelestia record"
|
||||||
|
"$mod SHIFT ALT, R, exec, caelestia record -r"
|
||||||
|
"$mod SHIFT, C, exec, hyprpicker -a" # Colour picker
|
||||||
|
|
||||||
|
# Sleep
|
||||||
|
"$mod SHIFT, PRINT, exec, systemctl suspend-then-hibernate"
|
||||||
|
|
||||||
|
# Clipboard and emoji picker
|
||||||
|
"$mod, V, exec, pkill fuzzel || caelestia clipboard"
|
||||||
|
"$mod ALT, V, exec, pkill fuzzel || caelestia clipboard -d"
|
||||||
|
"$mod, Period, exec, pkill fuzzel || caelestia emoji -p"
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
# This is a `bindl` (key release), so move it to `bindl` list below.
|
||||||
|
|
||||||
|
# Window actions
|
||||||
|
"$mod, H, movefocus, l"
|
||||||
|
"$mod, L, movefocus, r"
|
||||||
|
"$mod, K, movefocus, u"
|
||||||
|
"$mod, J, movefocus, d"
|
||||||
|
"$mod SHIFT, H, movewindow, l"
|
||||||
|
"$mod SHIFT, L, movewindow, r"
|
||||||
|
"$mod SHIFT, K, movewindow, u"
|
||||||
|
"$mod SHIFT, J, movewindow, d"
|
||||||
|
"$mod CTRL, Backslash, centerwindow, 1"
|
||||||
|
"$mod CTRL ALT, Backslash, resizeactive, exact 55% 70%"
|
||||||
|
"$mod CTRL ALT, Backslash, centerwindow, 1"
|
||||||
|
"$mod ALT, Backslash, exec, caelestia pip"
|
||||||
|
"$mod, P, pin"
|
||||||
|
"$mod, F, fullscreen, 0"
|
||||||
|
"$mod ALT, F, fullscreen, 1"
|
||||||
|
|
||||||
|
# Special workspace toggles
|
||||||
|
"Control+Shift, Escape, exec, caelestia toggle sysmon"
|
||||||
|
"$mod, Escape, exec, caelestia toggle sysmon"
|
||||||
|
"$mod, M, exec, caelestia toggle music"
|
||||||
|
"$mod, D, exec, caelestia toggle communication"
|
||||||
|
"$mod, R, exec, caelestia toggle todo"
|
||||||
|
|
||||||
|
"$mod, G, togglespecialworkspace, gaming"
|
||||||
|
"$mod SHIFT, G, movetoworkspace, special:gaming"
|
||||||
|
|
||||||
|
"$mod, T, exec, caelestia toggle steam"
|
||||||
|
|
||||||
|
# "$mod, T, togglespecialworkspace, special:steam"
|
||||||
|
# "$mod SHIFT, T, movetoworkspace, special:steam"
|
||||||
|
|
||||||
|
# Toggle special workspace
|
||||||
|
"$mod, S, exec, caelestia toggle specialws"
|
||||||
|
|
||||||
|
# Window groups
|
||||||
|
"$mod, Comma, togglegroup"
|
||||||
|
"$mod SHIFT, Comma, lockactivegroup, toggle"
|
||||||
|
|
||||||
|
# Go to workspace -1/+1 (mouse binds are `bind` for mouse-wheel)
|
||||||
|
"$mod, mouse_down, workspace, -1"
|
||||||
|
"$mod, mouse_up, workspace, +1"
|
||||||
|
|
||||||
|
# Move window to workspace -1/+1
|
||||||
|
"$mod ALT, mouse_down, movetoworkspace, -1"
|
||||||
|
"$mod ALT, mouse_up, movetoworkspace, +1"
|
||||||
|
|
||||||
|
# Move window to/from special workspace
|
||||||
|
"$mod CTRL SHIFT, up, movetoworkspace, special:special"
|
||||||
|
"$mod CTRL SHIFT, down, movetoworkspace, e+0"
|
||||||
|
"$mod ALT, S, movetoworkspace, special:special"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# Go to workspace #
|
||||||
|
let
|
||||||
|
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
||||||
|
in
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
i: let
|
||||||
|
ws = i + 1;
|
||||||
|
in [
|
||||||
|
"$mod, ${toString ws}, exec, ${wsaction} workspace ${toString ws}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
9) # For workspaces 1-9
|
||||||
|
)
|
||||||
|
++ [
|
||||||
|
# "$mod, 0, exec, ${config.wayland.windowManager.hyprland.settings.workspaceRule."0".exec} workspace 10" # Workaround for workspace 0
|
||||||
|
# Re-adding `wsaction` since it's used here.
|
||||||
|
"$mod, 0, exec, ~/.config/hypr/scripts/wsaction.fish workspace 10"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# Go to workspace group #
|
||||||
|
let
|
||||||
|
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
||||||
|
in
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
i: let
|
||||||
|
ws = i + 1;
|
||||||
|
in [
|
||||||
|
"Control+$mod, ${toString ws}, exec, ${wsaction} -g workspace ${toString ws}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
9)
|
||||||
|
)
|
||||||
|
++ [
|
||||||
|
"Control+$mod, 0, exec, ~/.config/hypr/scripts/wsaction.fish -g workspace 10"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# Move window to workspace #
|
||||||
|
let
|
||||||
|
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
||||||
|
in
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
i: let
|
||||||
|
ws = i + 1;
|
||||||
|
in [
|
||||||
|
"$mod SHIFT, ${toString ws}, exec, ${wsaction} movetoworkspace ${toString ws}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
9)
|
||||||
|
)
|
||||||
|
++ [
|
||||||
|
"$mod SHIFT, 0, exec, ~/.config/hypr/scripts/wsaction.fish movetoworkspace 10"
|
||||||
|
]
|
||||||
|
++ (
|
||||||
|
# Move window to workspace group #
|
||||||
|
let
|
||||||
|
wsaction = "~/.config/hypr/scripts/wsaction.fish";
|
||||||
|
in
|
||||||
|
builtins.concatLists (builtins.genList (
|
||||||
|
i: let
|
||||||
|
ws = i + 1;
|
||||||
|
in [
|
||||||
|
"Control+$mod ALT, ${toString ws}, exec, ${wsaction} -g movetoworkspace ${toString ws}"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
9)
|
||||||
|
)
|
||||||
|
++ [
|
||||||
|
"Control+$mod ALT, 0, exec, ~/.config/hypr/scripts/wsaction.fish -g movetoworkspace 10"
|
||||||
|
];
|
||||||
|
|
||||||
|
binde = [
|
||||||
|
"$mod, Minus, splitratio, -0.1"
|
||||||
|
"$mod, Equal, splitratio, 0.1"
|
||||||
|
"Control+$mod, left, workspace, -1"
|
||||||
|
"$mod, Page_Up, workspace, -1"
|
||||||
|
"Control+$mod, right, workspace, +1"
|
||||||
|
"$mod, Page_Down, workspace, +1"
|
||||||
|
"$mod ALT, Page_Up, movetoworkspace, -1"
|
||||||
|
"$mod ALT, Page_Down, movetoworkspace, +1"
|
||||||
|
"Control+$mod SHIFT, right, movetoworkspace, +1"
|
||||||
|
"Control+$mod SHIFT, left, movetoworkspace, -1"
|
||||||
|
"Alt, Tab, cyclenext, activewindow" # `binde` for cycle next
|
||||||
|
"Control+Alt, Tab, changegroupactive, f" # `binde` for change group active
|
||||||
|
];
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
"$mod, mouse:272, movewindow"
|
||||||
|
"$mod, Z, movewindow"
|
||||||
|
"$mod, mouse:273, resizewindow"
|
||||||
|
"$mod, X, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindl = [
|
||||||
|
# Restore lock
|
||||||
|
"$mod ALT, L, exec, caelestia shell -d"
|
||||||
|
"$mod ALT, L, global, caelestia:lock" # This is a Hyprland `global` command, not an `exec`
|
||||||
|
|
||||||
|
# Brightness
|
||||||
|
", XF86MonBrightnessUp, global, caelestia:brightnessUp"
|
||||||
|
", XF86MonBrightnessDown, global, caelestia:brightnessDown"
|
||||||
|
|
||||||
|
# Media
|
||||||
|
"Control+$mod, Space, global, caelestia:mediaToggle"
|
||||||
|
", XF86AudioPlay, global, caelestia:mediaToggle"
|
||||||
|
", XF86AudioPause, global, caelestia:mediaToggle"
|
||||||
|
"Control+$mod, Equal, global, caelestia:mediaNext"
|
||||||
|
", XF86AudioNext, global, caelestia:mediaNext"
|
||||||
|
"Control+$mod, Minus, global, caelestia:mediaPrev"
|
||||||
|
", XF86AudioPrev, global, caelestia:mediaPrev"
|
||||||
|
", XF86AudioStop, global, caelestia:mediaStop"
|
||||||
|
|
||||||
|
# Utilities (screenshot is `bindl` in your original)
|
||||||
|
", Print, exec, caelestia screenshot" # Full screen capture > clipboard
|
||||||
|
|
||||||
|
# Volume
|
||||||
|
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
|
"$mod SHIFT, M, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
||||||
|
|
||||||
|
# Clipboard and emoji picker (alternate paste is `bindl`)
|
||||||
|
"Control+Shift+Alt, V, exec, sleep 0.5s && ydotool type -d 1 \"$(cliphist list | head -1 | cliphist decode)\""
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
"$mod ALT, f12, exec, notify-send -u low -i dialog-information-symbolic 'Test notification' \"Here's a really long message to test truncation and wrapping\\nYou can middle click or flick this notification to dismiss it!\" -a 'Shell' -A \"Test1=I got it!\" -A \"Test2=Another action\""
|
||||||
|
];
|
||||||
|
|
||||||
|
bindel = [
|
||||||
|
# Volume
|
||||||
|
", XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 10%+"
|
||||||
|
", XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%-"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindr = [
|
||||||
|
# Kill/restart
|
||||||
|
"Control+$mod SHIFT, R, exec, qs -c caelestia kill"
|
||||||
|
"Control+$mod ALT, R, exec, qs -c caelestia kill; caelestia shell -d"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
exec = [
|
||||||
|
"cp -L --no-preserve=mode --update=none ~/.config/hypr/scheme/default.conf ~/.config/hypr/scheme/current.conf"
|
||||||
|
];
|
||||||
|
source = [
|
||||||
|
"~/.config/hypr/scheme/current.conf"
|
||||||
|
];
|
||||||
|
group = {
|
||||||
|
groupbar = {
|
||||||
|
"text_color" = "rgb($onPrimary)";
|
||||||
|
"col.active" = "rgba($primaryd4)";
|
||||||
|
"col.inactive" = "rgba($outlined4)";
|
||||||
|
"col.locked_active" = "rgba($primaryd4)";
|
||||||
|
"col.locked_inactive" = "rgba($secondaryd4)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
misc = {
|
||||||
|
background_color = "rgb($surfaceVariant)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
decoration = {
|
||||||
|
rounding = 10;
|
||||||
|
rounding_power = 2;
|
||||||
|
active_opacity = 1.0;
|
||||||
|
inactive_opacity = 1.0;
|
||||||
|
|
||||||
|
dim_inactive = true;
|
||||||
|
dim_strength = 0.1;
|
||||||
|
dim_special = 0.8;
|
||||||
|
|
||||||
|
shadow = {
|
||||||
|
enabled = true;
|
||||||
|
range = 4;
|
||||||
|
render_power = 3;
|
||||||
|
color = "rgba(1a1a1aee)";
|
||||||
|
};
|
||||||
|
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 3;
|
||||||
|
passes = 1;
|
||||||
|
vibrancy = 0.1696;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
env = [
|
||||||
|
"HYPRCURSOR_THEME, Bibata-Original-Classic"
|
||||||
|
"HYPRCURSOR_SIZE, 24"
|
||||||
|
|
||||||
|
"QT_QPA_PLATFORMTHEME, qt5ct"
|
||||||
|
"QT_WAYLAND_DISABLE_WINDOWDECORATION, 1"
|
||||||
|
"QT_AUTO_SCREEN_SCALE_FACTOR, 1"
|
||||||
|
"XCURSOR_THEME, sweet-rainbow"
|
||||||
|
"XCURSOR_SIZE, 24"
|
||||||
|
|
||||||
|
"GDK_BACKEND, wayland,x11"
|
||||||
|
"QT_QPA_PLATFORM, wayland;xcb"
|
||||||
|
"SDL_VIDEODRIVER, wayland,x11"
|
||||||
|
"CLUTTER_BACKEND, wayland"
|
||||||
|
"ELECTRON_OZONE_PLATFORM_HINT, auto"
|
||||||
|
|
||||||
|
"XDG_CURRENT_DESKTOP, Hyprland"
|
||||||
|
"XDG_SESSION_TYPE, wayland"
|
||||||
|
"XDG_SESSION_DESKTOP, Hyprland"
|
||||||
|
|
||||||
|
"_JAVA_AWT_WM_NONREPARENTING, 1"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
exec-once = [
|
||||||
|
# "[workspace special:communication silent] discord"
|
||||||
|
"[workspace special:steam silent] steam"
|
||||||
|
"[workspace special:preload silent] kitty --single-instance --hold fastfetch"
|
||||||
|
"[workspace special:preload silent] firefox"
|
||||||
|
"[workspace 1] kitty --single-instance --hold -e fish -C fastfetch"
|
||||||
|
|
||||||
|
"hyprctl setcursor Bibata-Modern-Ice 24"
|
||||||
|
|
||||||
|
"solaar -w hide"
|
||||||
|
# "sunshine"
|
||||||
|
# "moondeck-buddy"
|
||||||
|
|
||||||
|
"wl-paste --type text --watch cliphist store"
|
||||||
|
"wl-paste --type image --watch cliphist store"
|
||||||
|
|
||||||
|
"sleep 3 && caelestia shell"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
wayland.windowManager.hyprland.settings = {
|
||||||
|
# ######## Window rules ########
|
||||||
|
windowrule = [
|
||||||
|
"opaque, class:foot|equibop"
|
||||||
|
"center 1, floating:1, xwayland:0"
|
||||||
|
|
||||||
|
# Float
|
||||||
|
"float, class:guifetch"
|
||||||
|
"float, class:yad"
|
||||||
|
"float, class:zenity"
|
||||||
|
"float, class:wev"
|
||||||
|
"float, class:org\\.gnome\\.FileRoller" # Escaped backslash
|
||||||
|
"float, class:file-roller"
|
||||||
|
"float, class:blueman-manager"
|
||||||
|
"float, class:com\\.github\\.GradienceTeam\\.Gradience" # Escaped backslash
|
||||||
|
"float, class:feh"
|
||||||
|
"float, class:imv"
|
||||||
|
"float, class:system-config-printer"
|
||||||
|
"float, class:quickshell"
|
||||||
|
|
||||||
|
# Float, resize and center
|
||||||
|
"float, class:foot, title:nmtui"
|
||||||
|
"size 60% 70%, class:foot, title:nmtui"
|
||||||
|
"center 1, class:foot, title:nmtui"
|
||||||
|
"float, class:org\\.gnome\\.Settings"
|
||||||
|
"size 70% 80%, class:org\\.gnome\\.Settings"
|
||||||
|
"center 1, class:org\\.gnome\\.Settings"
|
||||||
|
"float, class:org\\.pulseaudio\\.pavucontrol|yad-icon-browser"
|
||||||
|
"size 60% 70%, class:org\\.pulseaudio\\.pavucontrol|yad-icon-browser"
|
||||||
|
"center 1, class:org\\.pulseaudio\\.pavucontrol|yad-icon-browser"
|
||||||
|
"float, class:nwg-look"
|
||||||
|
"size 50% 60%, class:nwg-look"
|
||||||
|
"center 1, class:nwg-look"
|
||||||
|
|
||||||
|
# Special workspaces
|
||||||
|
"workspace special:sysmon, class:btop"
|
||||||
|
"workspace special:music, class:feishin|Spotify|Supersonic"
|
||||||
|
"workspace special:music, initialTitle:Spotify( Free)?"
|
||||||
|
"workspace special:communication, class:discord|equibop|vesktop|whatsapp"
|
||||||
|
"workspace special:todo, class:Todoist"
|
||||||
|
|
||||||
|
"noinitialfocus, class:discord"
|
||||||
|
"focusonactivate 0, class:discord"
|
||||||
|
|
||||||
|
# Always full screen
|
||||||
|
# "fullscreen, title:^(Steam Big Picture Mode)$"
|
||||||
|
# "fullscreen, title:^(steam_app_.*)$"
|
||||||
|
|
||||||
|
# Dialogs
|
||||||
|
"float, title:(Select|Open)( a)? (File|Folder)(s)?"
|
||||||
|
"float, title:File (Operation|Upload)( Progress)?"
|
||||||
|
"float, title:.* Properties"
|
||||||
|
"float, title:Export Image as PNG"
|
||||||
|
"float, title:GIMP Crash Debug"
|
||||||
|
"float, title:Save As"
|
||||||
|
"float, title:Library"
|
||||||
|
|
||||||
|
# Picture in picture (resize and move done via script)
|
||||||
|
"move 100%-w-2% 100%-w-3%, title:Picture(-| )in(-| )[Pp]icture"
|
||||||
|
"keepaspectratio, title:Picture(-| )in(-| )[Pp]icture"
|
||||||
|
"float, title:Picture(-| )in(-| )[Pp]icture"
|
||||||
|
"pin, title:Picture(-| )in(-| )[Pp]icture"
|
||||||
|
|
||||||
|
# Steam
|
||||||
|
"workspace special:steam, class:steam"
|
||||||
|
"workspace special:gaming, class:^(steam_app_.*)$"
|
||||||
|
"rounding 10, title:, class:steam"
|
||||||
|
"float, title:Friends List, class:steam"
|
||||||
|
"immediate, class:steam_app_[0-9]+"
|
||||||
|
"idleinhibit always, class:steam_app_[0-9]+"
|
||||||
|
|
||||||
|
# ATLauncher console
|
||||||
|
"float, class:com-atlauncher-App, title:ATLauncher Console"
|
||||||
|
|
||||||
|
# Autodesk Fusion 360
|
||||||
|
"noblur, title:Fusion360|(Marking Menu), class:fusion360\\.exe" # Escaped backslash
|
||||||
|
|
||||||
|
# Ugh xwayland popups
|
||||||
|
"nodim, xwayland:1, title:win[0-9]+"
|
||||||
|
"noshadow, xwayland:1, title:win[0-9]+"
|
||||||
|
"rounding 10, xwayland:1, title:win[0-9]+"
|
||||||
|
];
|
||||||
|
|
||||||
|
# ######## Workspace rules ########
|
||||||
|
workspace = [
|
||||||
|
"w[tv1]s[false], gapsout:20, gapsin:20"
|
||||||
|
"f[1]s[false], gapsout:20, gapsin:20"
|
||||||
|
"1, monitor:DP-2, default:true"
|
||||||
|
"2, monitor:DP-2"
|
||||||
|
"3, monitor:DP-2"
|
||||||
|
"4, monitor:DP-1"
|
||||||
|
"5, monitor:DP-1"
|
||||||
|
"6, monitor:DP-1"
|
||||||
|
|
||||||
|
"special:gaming, monitor:DP-2, persistent:true"
|
||||||
|
"special:steam, monitor:DP-2, persistent:true, on-created-empty:steam"
|
||||||
|
];
|
||||||
|
|
||||||
|
# ######## Layer rules ########
|
||||||
|
layerrule = [
|
||||||
|
"animation fade, hyprpicker"
|
||||||
|
"animation fade, logout_dialog"
|
||||||
|
"animation fade, selection"
|
||||||
|
"animation fade, wayfreeze"
|
||||||
|
|
||||||
|
# Fuzzel
|
||||||
|
"animation popin 80%, launcher"
|
||||||
|
"blur, launcher"
|
||||||
|
|
||||||
|
# Shell
|
||||||
|
"noanim, caelestia-(launcher|osd|notifications|border-exclusion|area-picker)"
|
||||||
|
"animation fade, caelestia-(drawers|background)"
|
||||||
|
"order 1, caelestia-border-exclusion"
|
||||||
|
"order 2, caelestia-bar"
|
||||||
|
# The commented out lines below need to remain commented if you don't want them active
|
||||||
|
#"xray 1, caelestia-(border|launcher|bar|sidebar|navbar|mediadisplay|screencorners)"
|
||||||
|
#"blur, caelestia-.*"
|
||||||
|
#"blurpopups, caelestia-.*"
|
||||||
|
#"ignorealpha 0.57, caelestia-.*"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
+10
-218
@@ -1,221 +1,13 @@
|
|||||||
{myConfig, ...}: {
|
{
|
||||||
wayland.windowManager.hyprland = {
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
myConfig,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
xwayland.enable = true;
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
settings = {
|
portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
|
||||||
"$mod" = "SUPER";
|
|
||||||
"$term" = "kitty --single-instance";
|
|
||||||
"$browser" = "firefox";
|
|
||||||
|
|
||||||
monitor = myConfig.linux.hyprconf.Monitor;
|
|
||||||
|
|
||||||
exec-once = [
|
|
||||||
"[workspace 20 silent] kitty --single-insance --hold fastfetch"
|
|
||||||
"[workspace 20 silent] firefox"
|
|
||||||
"[workspace 1] kitty --single-instance --hold fastfetch"
|
|
||||||
"pkill gjs & ags run"
|
|
||||||
"matugen image /home/${myConfig.general.Username}/.config/nixos/assets/wallpapers/ultrawide-nixos-default.png"
|
|
||||||
"hyprctl setcursor Bibata-Original-Classic 24"
|
|
||||||
"solaar -w hide"
|
|
||||||
];
|
|
||||||
|
|
||||||
general = {
|
|
||||||
gaps_in = 2;
|
|
||||||
gaps_out = 5;
|
|
||||||
border_size = 2;
|
|
||||||
# col.active_border = "#0DB7D4FF";
|
|
||||||
# col.inactive_border = "#31313600";
|
|
||||||
# col = {
|
|
||||||
# "inactive_border" = "rgba(595959aa)";
|
|
||||||
# "active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
|
||||||
# };
|
|
||||||
resize_on_border = false;
|
|
||||||
allow_tearing = false;
|
|
||||||
layout = "dwindle";
|
|
||||||
};
|
|
||||||
decoration = {
|
|
||||||
rounding = 0;
|
|
||||||
rounding_power = 2;
|
|
||||||
active_opacity = 1.0;
|
|
||||||
inactive_opacity = 1.0;
|
|
||||||
|
|
||||||
dim_inactive = true;
|
|
||||||
dim_strength = 0.1;
|
|
||||||
dim_special = 0.8;
|
|
||||||
|
|
||||||
shadow = {
|
|
||||||
enabled = true;
|
|
||||||
range = 4;
|
|
||||||
render_power = 3;
|
|
||||||
color = "rgba(1a1a1aee)";
|
|
||||||
};
|
|
||||||
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
size = 3;
|
|
||||||
passes = 1;
|
|
||||||
vibrancy = 0.1696;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
bezier = [
|
|
||||||
"linear, 0, 0, 1, 1"
|
|
||||||
"md3_standard, 0.2, 0, 0, 1"
|
|
||||||
"md3_decel, 0.05, 0.7, 0.1, 1"
|
|
||||||
"md3_accel, 0.3, 0, 0.8, 0.15"
|
|
||||||
"overshot, 0.05, 0.9, 0.1, 1.1"
|
|
||||||
"crazyshot, 0.1, 1.5, 0.76, 0.92"
|
|
||||||
"hyprnostretch, 0.05, 0.9, 0.1, 1.0"
|
|
||||||
"menu_decel, 0.1, 1, 0, 1"
|
|
||||||
"menu_accel, 0.38, 0.04, 1, 0.07"
|
|
||||||
"easeInOutCirc, 0.85, 0, 0.15, 1"
|
|
||||||
"easeOutCirc, 0, 0.55, 0.45, 1"
|
|
||||||
"easeOutExpo, 0.16, 1, 0.3, 1"
|
|
||||||
"softAcDecel, 0.26, 0.26, 0.15, 1"
|
|
||||||
"md2, 0.4, 0, 0.2, 1"
|
|
||||||
];
|
|
||||||
|
|
||||||
animation = [
|
|
||||||
"windows, 1, 3, md3_decel, popin 60%"
|
|
||||||
"windowsIn, 1, 3, md3_decel, popin 60%"
|
|
||||||
"windowsOut, 1, 3, md3_accel, popin 60%"
|
|
||||||
"border, 1, 10, default"
|
|
||||||
"fade, 1, 3, md3_decel"
|
|
||||||
"layersIn, 1, 3, menu_decel, slide"
|
|
||||||
"layersOut, 1, 1.6, menu_accel"
|
|
||||||
"fadeLayersIn, 1, 2, menu_decel"
|
|
||||||
"fadeLayersOut, 1, 0.5, menu_accel"
|
|
||||||
"workspaces, 1, 7, menu_decel, slide"
|
|
||||||
"specialWorkspace, 1, 3, md3_decel, slidevert"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
dwindle = {
|
|
||||||
pseudotile = true;
|
|
||||||
preserve_split = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
master = {
|
|
||||||
new_status = "master";
|
|
||||||
};
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
force_default_wallpaper = -1;
|
|
||||||
disable_hyprland_logo = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
input = {
|
|
||||||
kb_layout = "us";
|
|
||||||
follow_mouse = 1;
|
|
||||||
sensitivity = 0;
|
|
||||||
force_no_accel = true;
|
|
||||||
repeat_delay = 250;
|
|
||||||
repeat_rate = 35;
|
|
||||||
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
numlock_by_default = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
gestures = {
|
|
||||||
workspace_swipe = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
binds = {
|
|
||||||
workspace_back_and_forth = true;
|
|
||||||
scroll_event_delay = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
device = [
|
|
||||||
{
|
|
||||||
name = "epic-mouse-v1";
|
|
||||||
sensitivity = -0.5;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
bind =
|
|
||||||
[
|
|
||||||
"$mod, Return, exec, $term"
|
|
||||||
"$mod, Q, killactive,"
|
|
||||||
"$mod, M, exit,"
|
|
||||||
"$mod, E, exec, $fileManager"
|
|
||||||
"$mod, V, togglefloating,"
|
|
||||||
"$mod, R, exec, $menu"
|
|
||||||
"$mod, P, pseudo,"
|
|
||||||
"$mod, B, togglesplit,"
|
|
||||||
"$mod, W, exec, $browser"
|
|
||||||
|
|
||||||
"$mod, H, movefocus, l"
|
|
||||||
"$mod, L, movefocus, r"
|
|
||||||
"$mod, K, movefocus, u"
|
|
||||||
"$mod, J, movefocus, d"
|
|
||||||
|
|
||||||
"$mod SHIFT, K, movewindow, u"
|
|
||||||
"$mod SHIFT, J, movewindow, d"
|
|
||||||
"$mod SHIFT, H, movewindow, l"
|
|
||||||
"$mod SHIFT, L, movewindow, r"
|
|
||||||
|
|
||||||
"$mod CTRL, K, resizeactive, 0 -50"
|
|
||||||
"$mod CTRL, J, resizeactive, 0 50"
|
|
||||||
"$mod CTRL, H, resizeactive, -50 0"
|
|
||||||
"$mod CTRL, L, resizeactive, 50 0"
|
|
||||||
|
|
||||||
"$mod, S, togglespecialworkspace, magic"
|
|
||||||
"$mod SHIFT, S, movetoworkspace, special:magic"
|
|
||||||
|
|
||||||
"$mod, mouse_down, workspace, e+1"
|
|
||||||
"$mod, mouse_up, workspace, e-1"
|
|
||||||
|
|
||||||
"$mod, F, fullscreen, 0"
|
|
||||||
|
|
||||||
"$mod, Space, exec, pkill rofi || rofi -show drun"
|
|
||||||
"$mod, C, exec, pkill rofi || rofi -show calc -modi calc -no-show-match -no-sort"
|
|
||||||
]
|
|
||||||
++ (
|
|
||||||
# workspaces
|
|
||||||
builtins.concatLists (builtins.genList (
|
|
||||||
i: let
|
|
||||||
ws = i + 1;
|
|
||||||
in [
|
|
||||||
"$mod, ${toString ws}, workspace, ${toString ws}"
|
|
||||||
"$mod SHIFT, ${toString ws}, movetoworkspace, ${toString ws}"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
9)
|
|
||||||
)
|
|
||||||
++ [
|
|
||||||
"$mod, 0, workspace, 10"
|
|
||||||
"$mod, 0, movetoworkspace, 10"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindm = [
|
|
||||||
"$mod, mouse:272, movewindow"
|
|
||||||
"$mod, mouse:273, resizewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindel = [
|
|
||||||
",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"
|
|
||||||
",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
||||||
",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
|
|
||||||
",XF86MonBrightnessUp, exec, brightnessctl s 10%+"
|
|
||||||
",XF86MonBrightnessDown, exec, brightnessctl s 10%-"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindl = [
|
|
||||||
",XF86AudioNext, exec, playerctl next"
|
|
||||||
",XF86AudioPause, exec, playerctl play-pause"
|
|
||||||
",XF86AudioPlay, exec, playerctl play-pause"
|
|
||||||
",XF86AudioPrev, exec, playerctl previous"
|
|
||||||
];
|
|
||||||
env = [
|
|
||||||
"HYPRCURSOR_THEME, Bibata-Original-Classic"
|
|
||||||
"HYPRCURSOR_SIZE, 24"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
{
|
||||||
|
myConfig,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [
|
||||||
|
./config/binds.nix
|
||||||
|
./config/execs.nix
|
||||||
|
./config/rules.nix
|
||||||
|
./config/animation.nix
|
||||||
|
./config/decoration.nix
|
||||||
|
./config/env.nix
|
||||||
|
./config/colours.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file.".config/hypr/scripts/wsaction.fish" = {
|
||||||
|
source = builtins.toPath ./scripts/wsaction.fish;
|
||||||
|
executable = true;
|
||||||
|
};
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
xwayland.enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
settings = {
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
"$term" = "kitty --single-instance";
|
||||||
|
"$browser" = "firefox";
|
||||||
|
"$wsaction" = "fish -c ./scripts/wsaction.fish";
|
||||||
|
"$widget" = "qs -c caelestia";
|
||||||
|
|
||||||
|
monitor = myConfig.nixos.Hyprland.monitors;
|
||||||
|
general = {
|
||||||
|
gaps_in = 2;
|
||||||
|
gaps_out = 5;
|
||||||
|
border_size = 2;
|
||||||
|
# col.active_border = "#0DB7D4FF";
|
||||||
|
# col.inactive_border = "#31313600";
|
||||||
|
# col = {
|
||||||
|
# "inactive_border" = "rgba(595959aa)";
|
||||||
|
# "active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
||||||
|
# };
|
||||||
|
resize_on_border = false;
|
||||||
|
allow_tearing = false;
|
||||||
|
layout = "dwindle";
|
||||||
|
};
|
||||||
|
|
||||||
|
dwindle = {
|
||||||
|
pseudotile = true;
|
||||||
|
preserve_split = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
master = {
|
||||||
|
new_status = "master";
|
||||||
|
};
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
force_default_wallpaper = -1;
|
||||||
|
disable_hyprland_logo = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
input = {
|
||||||
|
kb_layout = "us";
|
||||||
|
follow_mouse = 1;
|
||||||
|
sensitivity = 0;
|
||||||
|
force_no_accel = true;
|
||||||
|
repeat_delay = 250;
|
||||||
|
repeat_rate = 35;
|
||||||
|
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
numlock_by_default = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
gestures = {
|
||||||
|
workspace_swipe = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
binds = {
|
||||||
|
workspace_back_and_forth = true;
|
||||||
|
scroll_event_delay = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env fish
|
||||||
|
|
||||||
|
if test "$argv[1]" = '-g'
|
||||||
|
set group
|
||||||
|
set -e $argv[1]
|
||||||
|
end
|
||||||
|
|
||||||
|
if test (count $argv) -ne 2
|
||||||
|
echo 'Wrong number of arguments. Usage: ./wsaction.fish [-g] <dispatcher> <workspace>'
|
||||||
|
exit 1
|
||||||
|
end
|
||||||
|
|
||||||
|
set -l active_ws (hyprctl activeworkspace -j | jq -r '.id')
|
||||||
|
|
||||||
|
if set -q group
|
||||||
|
# Move to group
|
||||||
|
hyprctl dispatch $argv[1] (math "($argv[2] - 1) * 10 + $active_ws % 10")
|
||||||
|
else
|
||||||
|
# Move to ws in group
|
||||||
|
hyprctl dispatch $argv[1] (math "floor(($active_ws - 1) / 10) * 10 + $argv[2]")
|
||||||
|
end
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
# home.packages = with pkgs; [
|
||||||
|
# hyprsunset
|
||||||
|
# ];
|
||||||
|
services.hyprsunset = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,17 +1,23 @@
|
|||||||
{myConfig, ...}: {
|
{
|
||||||
|
myConfig,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
themeFile = "kanagawa";
|
# themeFile = "kanagawa";
|
||||||
|
themeFile = "Catppuccin-Mocha";
|
||||||
settings = {
|
settings = {
|
||||||
confirm_os_window_close = 0;
|
confirm_os_window_close = 0;
|
||||||
window_padding_width = 10;
|
window_padding_width = 10;
|
||||||
|
|
||||||
font_size = myConfig.general.terminal.Size;
|
font_size = myConfig.general.Terminal.size;
|
||||||
font_family = myConfig.general.terminal.Font;
|
font_family = myConfig.general.Terminal.font;
|
||||||
bold_font = "auto";
|
bold_font = "auto";
|
||||||
italic_font = "auto";
|
italic_font = "auto";
|
||||||
bold_italic_font = "auto";
|
bold_italic_font = "auto";
|
||||||
|
shell = "${pkgs.${myConfig.general.Terminal.shell}}/bin/${myConfig.general.Terminal.shell}";
|
||||||
|
|
||||||
# optimization
|
# optimization
|
||||||
input_delay = 0;
|
input_delay = 0;
|
||||||
@@ -20,6 +26,6 @@
|
|||||||
wayland_enable_ime = false;
|
wayland_enable_ime = false;
|
||||||
allow_remote_control = true;
|
allow_remote_control = true;
|
||||||
};
|
};
|
||||||
extraConfig = "include colors.conf";
|
# extraConfig = "include colors.conf";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkOption mkIf;
|
||||||
|
this = config.custom.lact;
|
||||||
|
|
||||||
|
configFile =
|
||||||
|
pkgs.runCommand "lact-config.yaml" {
|
||||||
|
json = pkgs.writers.writeJSON "lact-config.json" this.settings;
|
||||||
|
} ''
|
||||||
|
# Merge with the defaults
|
||||||
|
${lib.getExe pkgs.yq} -s '.[0] * .[1]' $json ${./lact-default-config.yaml} > config.json
|
||||||
|
# Convert keys to numeric values where possible. It depends on this for some reason.
|
||||||
|
${lib.getExe pkgs.yj} -jy -k < config.json > $out
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
options.custom.lact = {
|
||||||
|
enable = mkEnableOption "my LACT module";
|
||||||
|
settings = mkOption {
|
||||||
|
default = {};
|
||||||
|
type = lib.types.submodule {
|
||||||
|
freeformType = (pkgs.formats.yaml {}).type;
|
||||||
|
};
|
||||||
|
description = ''
|
||||||
|
Settings for LACT. Settings are merged with the defaults.
|
||||||
|
|
||||||
|
The easiest method of acquiring the settings is to delete
|
||||||
|
`/etc/lact/config.yaml`, enter your settings and look at the file.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf this.enable {
|
||||||
|
systemd.packages = with pkgs; [
|
||||||
|
lact
|
||||||
|
];
|
||||||
|
systemd.services.lactd.wantedBy = ["multi-user.target"];
|
||||||
|
|
||||||
|
environment.etc."lact/config.yaml" = mkIf (this.settings != {}) {
|
||||||
|
source = configFile;
|
||||||
|
};
|
||||||
|
systemd.services.lactd = {
|
||||||
|
# Restart if config changed
|
||||||
|
restartTriggers = mkIf (this.settings != {}) [configFile];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
daemon:
|
||||||
|
log_level: info
|
||||||
|
admin_groups:
|
||||||
|
- wheel
|
||||||
|
- sudo
|
||||||
|
disable_clocks_cleanup: false
|
||||||
|
apply_settings_timer: 5
|
||||||
|
gpus: {}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
lutris
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{...}: {
|
|
||||||
programs.mangohud = {
|
|
||||||
enable = true;
|
|
||||||
enableSessionWide = true;
|
|
||||||
settings = {
|
|
||||||
toggle_hud = "Shift_R+F12";
|
|
||||||
|
|
||||||
full = true;
|
|
||||||
gpu_temp = true;
|
|
||||||
cpu_temp = true;
|
|
||||||
fps_only = false;
|
|
||||||
|
|
||||||
blacklist = [
|
|
||||||
"pamac-manager"
|
|
||||||
"lact"
|
|
||||||
"ghb"
|
|
||||||
"bitwig-studio"
|
|
||||||
"ptyxis"
|
|
||||||
"yumex"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{myConfig, ...}: {
|
||||||
|
programs.mangohud = {
|
||||||
|
enable = true;
|
||||||
|
enableSessionWide = true;
|
||||||
|
settings = {
|
||||||
|
legacy_layout = false;
|
||||||
|
horizontal = true;
|
||||||
|
background_alpha = 0.6;
|
||||||
|
round_corners = 10;
|
||||||
|
background_color = "000000";
|
||||||
|
font_size = 24;
|
||||||
|
text_color = "FFFFFF";
|
||||||
|
position = "top-left";
|
||||||
|
toggle_hud = "Shift_R+F12";
|
||||||
|
no_display = true;
|
||||||
|
pci_dev = "0:03:00.0";
|
||||||
|
table_columns = 3;
|
||||||
|
|
||||||
|
gpu_text = "GPU";
|
||||||
|
gpu_stats = true;
|
||||||
|
gpu_load_change = true;
|
||||||
|
gpu_load_value = [50 90];
|
||||||
|
gpu_load_color = ["FFFFFF" "FFAA7F" "CC0000"];
|
||||||
|
gpu_temp = true;
|
||||||
|
gpu_power = true;
|
||||||
|
gpu_color = "2E9762";
|
||||||
|
|
||||||
|
cpu_text = "CPU";
|
||||||
|
cpu_stats = true;
|
||||||
|
cpu_load_change = true;
|
||||||
|
cpu_load_value = [50 90];
|
||||||
|
cpu_load_color = ["FFFFFF" "FFAA7F" "CC0000"];
|
||||||
|
cpu_temp = true;
|
||||||
|
cpu_power = true;
|
||||||
|
cpu_color = "2E97CB";
|
||||||
|
|
||||||
|
vram = true;
|
||||||
|
vram_color = "AD64C1";
|
||||||
|
ram = true;
|
||||||
|
ram_color = "C26693";
|
||||||
|
battery = true;
|
||||||
|
battery_color = "00FF00";
|
||||||
|
|
||||||
|
fps = true;
|
||||||
|
fps_metrics = ["avg" "0.01"];
|
||||||
|
engine_version = true;
|
||||||
|
engine_color = "EB5B5B";
|
||||||
|
arch = true;
|
||||||
|
frame_timing = true;
|
||||||
|
frametime_color = "FA8000";
|
||||||
|
fps_limit_method = "late";
|
||||||
|
toggle_fps_limit = "Shift_L+F1";
|
||||||
|
fps_limit = 0;
|
||||||
|
resolution = true;
|
||||||
|
refresh_rate = true;
|
||||||
|
|
||||||
|
# custom_text = [
|
||||||
|
# "-"
|
||||||
|
# "$(cat /home/kenji/.config/goverlay/distro)"
|
||||||
|
# "-"
|
||||||
|
# "$(uname -r)"
|
||||||
|
# "Session:"
|
||||||
|
# "$(echo $XDG_SESSION_TYPE)"
|
||||||
|
# ];
|
||||||
|
|
||||||
|
fps_color_change = true;
|
||||||
|
fps_color = ["B22222" "FDFD09" "39F900"];
|
||||||
|
fps_value = [30 60];
|
||||||
|
|
||||||
|
time = true;
|
||||||
|
|
||||||
|
output_folder = "/home/${myConfig.essentials.Username}/.mangohud/";
|
||||||
|
log_duration = 30;
|
||||||
|
autostart_log = false;
|
||||||
|
log_interval = 100;
|
||||||
|
toggle_logging = "Shift_L+F2";
|
||||||
|
|
||||||
|
blacklist = [
|
||||||
|
"pamac-manager"
|
||||||
|
"lact"
|
||||||
|
"ghb"
|
||||||
|
"bitwig-studio"
|
||||||
|
"ptyxis"
|
||||||
|
"yumex"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
[config]
|
|
||||||
# If set to enabled, it will check for updates when you run the matugen command, notifying you that an update is avaiable.
|
|
||||||
# WARNING: Matugen needs to be compiled with the `update-informer` feature for this to work.
|
|
||||||
version_check = false
|
|
||||||
|
|
||||||
[config.wallpaper]
|
|
||||||
# The base command to run for applying the wallpaper, shouldn't have spaces in it.
|
|
||||||
command = "swww"
|
|
||||||
|
|
||||||
# The arguments that will be provided to the command.
|
|
||||||
# Keywords like {{ mode }} or anything that works inside of hooks doesn't work here.
|
|
||||||
# The last argument will be the image path.
|
|
||||||
arguments = ["img", "--transition-type", "center", "--transition-fps", "120"]
|
|
||||||
|
|
||||||
# For example, killing the wallpaper daemon. Usage is like a normal hook.
|
|
||||||
# pre_hook = ""
|
|
||||||
|
|
||||||
[config.custom_keywords]
|
|
||||||
test = "aaaa"
|
|
||||||
|
|
||||||
[templates.name1]
|
|
||||||
# Relative paths will be resolved from the path `config.toml` is in.
|
|
||||||
input_path = "./colors.whatever-extension"
|
|
||||||
output_path = "./a/colors-generated.whatever-extension"
|
|
||||||
|
|
||||||
# This will use a different input path depending on what mode you use.
|
|
||||||
# input_path_modes = { dark = "./colors.whatever-extension", light = "./colors.whatever-extension" }
|
|
||||||
|
|
||||||
# This will compare all of the colors inside the array with the color you set as `compare_to`, and returns the closest color to it.
|
|
||||||
# You can then use `{{closest_color}}` inside templates and hooks.
|
|
||||||
colors_to_compare = [
|
|
||||||
{ name = "black", color = "#000000" },
|
|
||||||
{ name = "red", color = "#ff0000" },
|
|
||||||
{ name = "maroon", color = "#800000" },
|
|
||||||
{ name = "yellow", color = "#ffff00" },
|
|
||||||
{ name = "olive", color = "#808000" },
|
|
||||||
{ name = "lime", color = "#00ff00" },
|
|
||||||
{ name = "green", color = "#008000" },
|
|
||||||
{ name = "aqua", color = "#00ffff" },
|
|
||||||
{ name = "teal", color = "#008080" },
|
|
||||||
{ name = "blue", color = "#0000ff" },
|
|
||||||
{ name = "navy", color = "#000080" },
|
|
||||||
{ name = "fuchsia", color = "#ff00ff" },
|
|
||||||
{ name = "purple", color = "#800080" },
|
|
||||||
]
|
|
||||||
compare_to = "{{colors.primary.default.hex}}"
|
|
||||||
|
|
||||||
# Runs before the template is exported. You can use keywords here,
|
|
||||||
pre_hook = 'echo "source color {{colors.source_color.default.hex}}, source image {{image}}, closest color {{closest_color}}"'
|
|
||||||
# Runs after the template is exported. You can use keywords here.
|
|
||||||
post_hook = 'echo "after gen"'
|
|
||||||
|
|
||||||
# Only hex values
|
|
||||||
# https://m3.material.io/styles/color/advanced/adjust-existing-colors#1cc12e43-237b-45b9-8fe0-9a3549c1f61e
|
|
||||||
# Blend is set to true by default.
|
|
||||||
[config.custom_colors]
|
|
||||||
green = "#00ff00"
|
|
||||||
red = "#ff0000"
|
|
||||||
blue = { color = "#0000ff", blend = false }
|
|
||||||
|
|
||||||
### --- my config
|
|
||||||
[templates.kitty]
|
|
||||||
input_path = '~/.config/nixos/pkgs/matugen/custom/templates/kitty.conf'
|
|
||||||
output_path = '~/.config/kitty/colors.conf'
|
|
||||||
post_hook = "kitty @ set-colors -a -c ~/.config/kitty/colors.conf"
|
|
||||||
|
|
||||||
[templates.ags]
|
|
||||||
input_path = '~/.config/nixos/pkgs/matugen/custom/templates/ags.scss'
|
|
||||||
output_path = '~/.config/nixos/pkgs/ags/biscuit/colors.scss'
|
|
||||||
post_hook = "pkill gjs & ags run ~/.config/nixos/pkgs/ags/biscuit/app.ts & disown (jobs -p) &"
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
$background: {{colors.surface.dark.hex}};
|
|
||||||
$foreground: {{colors.on_surface.dark.hex}};
|
|
||||||
$primary: {{colors.primary.dark.hex}};
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
cursor {{colors.on_surface.default.hex}}
|
|
||||||
cursor_text_color {{colors.on_surface_variant.default.hex}}
|
|
||||||
|
|
||||||
foreground {{colors.on_surface.default.hex}}
|
|
||||||
background {{colors.surface.default.hex}}
|
|
||||||
selection_foreground {{colors.on_secondary.default.hex}}
|
|
||||||
selection_background {{colors.secondary_fixed_dim.default.hex}}
|
|
||||||
url_color {{colors.primary.default.hex}}
|
|
||||||
|
|
||||||
# black
|
|
||||||
color8 #262626
|
|
||||||
color0 #4c4c4c
|
|
||||||
|
|
||||||
# red
|
|
||||||
color1 #ac8a8c
|
|
||||||
color9 #c49ea0
|
|
||||||
|
|
||||||
# green
|
|
||||||
color2 #8aac8b
|
|
||||||
color10 #9ec49f
|
|
||||||
|
|
||||||
# yellow
|
|
||||||
color3 #aca98a
|
|
||||||
color11 #c4c19e
|
|
||||||
|
|
||||||
# blue
|
|
||||||
/* color4 #8f8aac */
|
|
||||||
color4 {{colors.primary.default.hex}}
|
|
||||||
color12 #a39ec4
|
|
||||||
|
|
||||||
# magenta
|
|
||||||
color5 #ac8aac
|
|
||||||
color13 #c49ec4
|
|
||||||
|
|
||||||
# cyan
|
|
||||||
color6 #8aacab
|
|
||||||
color14 #9ec3c4
|
|
||||||
|
|
||||||
# white
|
|
||||||
color15 #e7e7e7
|
|
||||||
color7 #f0f0f0
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [inputs.matugen.nixosModules.default];
|
|
||||||
home.file.".config/matugen/config.toml" = {
|
|
||||||
source = builtins.toPath ./custom/config.toml;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
# /etc/nixos/configuration.nix
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
fetchurl,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
moondeckBuddyWrapped = pkgs.appimageTools.wrapType2 {
|
||||||
|
pname = "moondeck-buddy";
|
||||||
|
version = "1.8.2";
|
||||||
|
|
||||||
|
src = pkgs.fetchurl {
|
||||||
|
url = "https://github.com/FrogTheFrog/moondeck-buddy/releases/download/v1.8.2/MoonDeckBuddy-1.8.2-x86_64.AppImage";
|
||||||
|
hash = "sha256-D+9XIi3pIwaAq22DGHWAUqKub778qHQSjCU0aIjXmYY="; # Don't forget to update this!
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPkgs = pkgs:
|
||||||
|
with pkgs; [
|
||||||
|
steam
|
||||||
|
libappindicator-gtk3
|
||||||
|
];
|
||||||
|
|
||||||
|
desktopItems = [
|
||||||
|
(pkgs.makeDesktopItem {
|
||||||
|
name = "Moondeck Buddy";
|
||||||
|
exec = "moondeck-buddy";
|
||||||
|
icon = "applications-other";
|
||||||
|
comment = "A Sunshine/Moondeck Buddy.";
|
||||||
|
categories = ["Utility" "Productivity"];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "Moondeck Buddy is an companion app for NVIDIA Sunshine/Moonlight.";
|
||||||
|
homepage = "https://github.com/FrogTheFrog/moondeck-buddy";
|
||||||
|
license = licenses.gpl3Only;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
mainProgram = "moondeck-buddy";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
moondeckBuddyWrapped
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.appimage.enable = true;
|
||||||
|
programs.appimage.binfmt = true;
|
||||||
|
|
||||||
|
# --- Firewall Configuration ---
|
||||||
|
networking.firewall.allowedTCPPorts = [
|
||||||
|
59999 # Allow Moondeck Buddy to listen on this port
|
||||||
|
];
|
||||||
|
# If Moondeck Buddy also needs UDP, uncomment and add it here:
|
||||||
|
networking.firewall.allowedUDPPorts = [
|
||||||
|
59999
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.services.moondeck-buddy = {
|
||||||
|
description = "Moondeck Buddy service for Sunshine/Moonlight integration";
|
||||||
|
after = ["network-online.target" "display-manager.service"]; # Ensure display manager is up
|
||||||
|
wantedBy = ["multi-user.target"]; # Still autostart with multi-user target
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
User = "${myConfig.essentials.Username}"; # <--- IMPORTANT: User *must* have access to the display
|
||||||
|
Group = "users";
|
||||||
|
|
||||||
|
ExecStart = "${moondeckBuddyWrapped}/bin/moondeck-buddy";
|
||||||
|
|
||||||
|
Restart = "on-failure";
|
||||||
|
RestartSec = 5;
|
||||||
|
|
||||||
|
# Crucial for GUI applications running as system services:
|
||||||
|
Environment = [
|
||||||
|
"DISPLAY=:0" # Assuming your main display is :0. This can vary.
|
||||||
|
# "XAUTHORITY=/home/your-username/.Xauthority" # Needed if using Xauthority
|
||||||
|
# If using Wayland, you might need XDG_RUNTIME_DIR and WAYLAND_DISPLAY
|
||||||
|
# "XDG_RUNTIME_DIR=/run/user/$(id -u your-username)"
|
||||||
|
# "WAYLAND_DISPLAY=wayland-0" # Or specific to your compositor
|
||||||
|
];
|
||||||
|
|
||||||
|
# You might also need to explicitly grant access, e.g., with xhost +
|
||||||
|
# but that's a security hole. Best is to rely on user authentication.
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
nixovim = inputs.nixovim.packages.${pkgs.system}.default;
|
|
||||||
in {
|
|
||||||
home.packages = [
|
|
||||||
nixovim
|
|
||||||
pkgs.lazygit
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = [
|
||||||
|
inputs.nixovim.packages.${system}.full
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{pkgs, ...}: {
|
{pkgs, ...}: {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
busybox
|
python313Full
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -1,2 +1,16 @@
|
|||||||
{
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
environment.systemPackages = [
|
||||||
|
inputs.caelestia-shell.packages.${system}.caelestia-shell
|
||||||
|
inputs.caelestia-shell.packages.${system}.caelestia-cli
|
||||||
|
inputs.caelestia-shell.packages.${system}.beat-detector
|
||||||
|
];
|
||||||
|
environment.sessionVariables = {
|
||||||
|
# Set CAELESTIA_BD_PATH to the store path of beat-detector
|
||||||
|
CAELESTIA_BD_PATH = "${inputs.caelestia-shell.packages.${system}.beat-detector}/bin/beat_detector";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
caelestia-shell = pkgs.fetchFromGitea {
|
||||||
|
domain = "git.sakamoto.dev";
|
||||||
|
owner = "caelestia-dots";
|
||||||
|
repo = "shell";
|
||||||
|
rev = "main";
|
||||||
|
sha256 = "sha256-y9Wkh+9ND8GcUYhybXdEPTVY6gUb0jclnbbVi70l70Y=";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
];
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
inputs.quickshell.packages.${system}.default
|
||||||
|
wl-screenrec
|
||||||
|
libnotify
|
||||||
|
grim
|
||||||
|
foot
|
||||||
|
hyprpicker
|
||||||
|
qalculate-qt
|
||||||
|
fuzzel
|
||||||
|
inotify-tools
|
||||||
|
app2unit
|
||||||
|
fish
|
||||||
|
jq
|
||||||
|
fd
|
||||||
|
cliphist
|
||||||
|
(pkgs.python3.withPackages (python-pkgs:
|
||||||
|
with python-pkgs; [
|
||||||
|
aubio
|
||||||
|
pyaudio
|
||||||
|
numpy
|
||||||
|
]))
|
||||||
|
cava
|
||||||
|
bluez
|
||||||
|
ddcutil
|
||||||
|
brightnessctl
|
||||||
|
curl
|
||||||
|
material-symbols
|
||||||
|
];
|
||||||
|
home.file.".config/quickshell/caelestia" = {
|
||||||
|
source = caelestia-shell;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
myConfig,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
gamescopeSession.enable = true;
|
||||||
|
extraCompatPackages = with pkgs; [proton-ge-bin];
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
mangohud
|
||||||
|
gamescope-wsi
|
||||||
|
];
|
||||||
|
};
|
||||||
|
programs.gamemode.enable = true;
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user