Compare commits

..

1 Commits

Author SHA1 Message Date
tux
87e065c659 refactor(shell): replace aichat with opencode 2025-10-10 23:48:30 +05:30
62 changed files with 685 additions and 2094 deletions

View File

@@ -9,7 +9,6 @@ keys:
- &arcturus age1zsl5d4vj6gl3h96y5p53sq5y4vr4vtlwp727h7rp9a4xfkxm53lqrh6r50 - &arcturus age1zsl5d4vj6gl3h96y5p53sq5y4vr4vtlwp727h7rp9a4xfkxm53lqrh6r50
- &alpha age1zujp5gxy7suv8ysnygv43cmzuvv36nxfg0ch7r3xg2emc6fz3vmqqujheq - &alpha age1zujp5gxy7suv8ysnygv43cmzuvv36nxfg0ch7r3xg2emc6fz3vmqqujheq
- &vega age1ydkclhk9kwqdq74utesqdfupt43lz64d5k65gz2z9uyljcqq9fcq3hv28l - &vega age1ydkclhk9kwqdq74utesqdfupt43lz64d5k65gz2z9uyljcqq9fcq3hv28l
- &node age1put942dyhly8nk9c8n0h8tq0x6xplrg3uw5q0d2jmvwez3zq79qsapl7he
- &capella age1y4luzn2jls7rvgphej23srvdlx563lxq29tvf66vhwwzaf7c3f3qzvresh - &capella age1y4luzn2jls7rvgphej23srvdlx563lxq29tvf66vhwwzaf7c3f3qzvresh
creation_rules: creation_rules:
@@ -23,7 +22,6 @@ creation_rules:
- *arcturus - *arcturus
- *alpha - *alpha
- *vega - *vega
- *node
- *capella - *capella
- path_regex: hosts/sirius/secrets.yaml$ - path_regex: hosts/sirius/secrets.yaml$
key_groups: key_groups:

130
README.md
View File

@@ -22,132 +22,48 @@
## Hosts ## Hosts
| | Hostname | Board | CPU | RAM | GPU | Purpose | | | Hostname | Board | CPU | RAM | GPU | Purpose |
| --- | ---------- | ----------------- | ------------------ | ----- | ------------------------- | -------------------------------------------------------------------------------- | | --- | ---------- | ----------------- | ------------------ | ---- | ------------------------- | ---------------------------------------------------------------------------------- |
| 🖥️ | `sirius` | MSI X570-A Pro | Ryzen 7 5700X3D | 64GB | RTX 3080 TI + RTX 3060 TI | Triple-monitor desktop running Windows Subsystem for Linux. | | 🖥️ | `sirius` | MSI X570-A Pro | Ryzen 7 5700X3D | 64GB | RTX 3080 TI + RTX 3060 TI | Triple-monitor desktop running Windows Subsystem for Linux. |
| 💻 | `canopus` | Asus Zephyrus G15 | Ryzen 9 5900HS | 16GB | RTX 3060 | Optimized for productivity on the go and some gaming. | | 💻 | `canopus` | Asus Zephyrus G15 | Ryzen 9 5900HS | 16GB | RTX 3060 | Optimized for productivity on the go and some gaming. |
| ☁️ | `homelab` | Minisforum MS-A1 | Ryzen 7 8700G | 32GB | Radeon 780M | WIP | | ☁️ | `homelab` | Minisforum MS-A1 | Ryzen 7 8700G | 32GB | Radeon 780M | WIP |
| ☁️ | `arcturus` | KVM | 4 Core | 8GB | | Primary server responsible for exposing my homelab applications to the internet. | | ☁️ | `arcturus` | KVM | 4 Core | 8GB | | Primary server responsible for exposing my homelab applications to the internet. |
| ☁️ | `alpha` | KVM | 4 Core | 4GB | | Monitors uptime and health status of all services across the infrastructure. | | ☁️ | `alpha` | KVM | 4 Core | 4GB | | Monitors uptime and health status of all services across the infrastructure. |
| 🥔 | `vega` | Raspberry Pi 3B+ | Cortex A53 | 1GB | | Running AdGuard Home for network-wide ad blocking. | | 🥔 | `vega` | Raspberry Pi 3B+ | Cortex A53 | 1GB | | Running AdGuard Home for network-wide ad blocking. |
| 📱 | `capella` | Samsung S25 Ultra | Snapdragon 8 Elite | 12GB | Adreno 830 | Primary mobile for daily usage. (Locked) | | 📱 | `capella` | Samsung S25 Ultra | Snapdragon 8 Elite | 12GB | Adreno 830 | Primary mobile for daily usage. (Locked) |
| 📱 | `rigel` | Motorola Edge 30 | Snapdragon 778G+ | 8GB | Adreno 642L | Secondary mobile for some fun. (Rooted) | | 📱 | `rigel` | Motorola Edge 30 | Snapdragon 778G+ | 8GB | Adreno 642L | Secondary mobile for some fun. (Rooted) |
| ☁️ | `node` | ASRock B565D4 | Ryzen 9 5950X | 128GB | | Running Ethereum and BSC nodes. | | ☁️ | `node` | KVM | i9-13900 | 64GB | | Running Ethereum and BSC nodes. Currently in the process of migrating from Ubuntu. |
## Installation ## Installation
> [!NOTE] Boot into NixOS bootable USB and then enter the following commands
> This will get your base system ready, but keep in mind that many things might not work correctly — such as monitor resolution, font size, and more.
### Prerequisites ```
# Clone this repositry
Boot into the NixOS bootable USB before proceeding with the installation steps.
### Installation Steps
#### 1. Clone the repository
```bash
git clone https://github.com/tuxdotrs/nix-config.git git clone https://github.com/tuxdotrs/nix-config.git
# Navigate to the repository directory
cd nix-config cd nix-config
```
#### 2. Gain root privileges # Install disko for disk partitioning
nix-shell -p disko
```bash # Partition the disk and make sure to replace DISK_PATH (eg. /dev/vda)
sudo su
```
#### 3. Set up disk partitioning
Install the required tools:
```bash
nix-shell -p disko neovim
```
Partition your disk using disko. **This will wipe your drive.** Replace `DISK_PATH` with your actual disk path (e.g., `/dev/vda` or `/dev/nvme0n1`):
```bash
disko --mode disko ./hosts/canopus/disko.nix --arg device '"DISK_PATH"' disko --mode disko ./hosts/canopus/disko.nix --arg device '"DISK_PATH"'
```
#### 4. Configure your disk # Generate the hardware.nix file for your system
Edit the configuration file:
```bash
nvim ./hosts/canopus/default.nix
```
In the imports statement, replace:
```nix
(import ./disko.nix {device = "/dev/nvme0n1";})
```
with:
```nix
(import ./disko.nix {device = "DISK_PATH";})
```
Make sure to replace `DISK_PATH` with your actual disk path.
#### 5. Generate hardware configuration
```bash
nixos-generate-config --no-filesystems --root /mnt nixos-generate-config --no-filesystems --root /mnt
```
Copy the generated hardware configuration to the repository: # Replace the hardware.nix with generated one
```bash
cp /mnt/etc/nixos/hardware-configuration.nix ./hosts/canopus/hardware.nix cp /mnt/etc/nixos/hardware-configuration.nix ./hosts/canopus/hardware.nix
```
#### 6. Install NixOS # Install
```bash
nixos-install --root /mnt --flake .#canopus nixos-install --root /mnt --flake .#canopus
```
#### 7. Enter into the new system # Reboot to your beautiful DE
```bash
nixos-enter --root /mnt
```
#### 8. Set up directories and permissions
```bash
mkdir -p /persist/home
chown -R tux:users /persist/home
```
#### 9. Set passwords
Set the root password:
```bash
passwd root
```
Set the user password:
```bash
passwd tux
```
#### 10. Reboot
```bash
reboot reboot
``` ```
Your NixOS system should now boot into a beautiful DE.
## Components ## Components
| | Wayland | Xorg | | | Wayland | Xorg |

1032
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -66,7 +66,6 @@
alpha = nixosSystem (mkNixOSConfig "alpha"); alpha = nixosSystem (mkNixOSConfig "alpha");
sirius = nixosSystem (mkNixOSConfig "sirius"); sirius = nixosSystem (mkNixOSConfig "sirius");
vega = nixosSystem (mkNixOSConfig "vega"); vega = nixosSystem (mkNixOSConfig "vega");
node = nixosSystem (mkNixOSConfig "node");
vps = nixosSystem (mkNixOSConfig "vps"); vps = nixosSystem (mkNixOSConfig "vps");
isoImage = nixosSystem (mkNixOSConfig "isoImage"); isoImage = nixosSystem (mkNixOSConfig "isoImage");
homelab = nixosSystem (mkNixOSConfig "homelab"); homelab = nixosSystem (mkNixOSConfig "homelab");
@@ -86,7 +85,6 @@
alpha = mkNixOSNode "alpha"; alpha = mkNixOSNode "alpha";
sirius = mkNixOSNode "sirius"; sirius = mkNixOSNode "sirius";
vega = mkNixOSNode "vega"; vega = mkNixOSNode "vega";
node = mkNixOSNode "node";
homelab = mkNixOSNode "homelab"; homelab = mkNixOSNode "homelab";
capella = mkDroidNode "capella"; capella = mkDroidNode "capella";
rigel = mkDroidNode "rigel"; rigel = mkDroidNode "rigel";
@@ -160,16 +158,6 @@
url = "github:hyprwm/hyprland-plugins"; url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland"; inputs.hyprland.follows = "hyprland";
}; };
mango = {
url = "github:DreamMaoMao/mango";
inputs.nixpkgs.follows = "nixpkgs";
};
vicinae-extensions = {
url = "github:vicinaehq/extensions";
inputs.nixpkgs.follows = "nixpkgs";
};
awww.url = "git+https://codeberg.org/LGFae/awww";
ghostty.url = "github:ghostty-org/ghostty"; ghostty.url = "github:ghostty-org/ghostty";
nixos-hardware.url = "github:nixos/nixos-hardware"; nixos-hardware.url = "github:nixos/nixos-hardware";
nixpkgs-f2k.url = "github:moni-dz/nixpkgs-f2k"; nixpkgs-f2k.url = "github:moni-dz/nixpkgs-f2k";
@@ -178,6 +166,5 @@
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
deploy-rs.url = "github:serokell/deploy-rs"; deploy-rs.url = "github:serokell/deploy-rs";
nixcord.url = "github:kaylorben/nixcord"; nixcord.url = "github:kaylorben/nixcord";
lan-mouse.url = "github:feschber/lan-mouse";
}; };
} }

View File

@@ -153,7 +153,6 @@
]; ];
}; };
users.users.${username} = {linger = true;};
home-manager.users.${username} = { home-manager.users.${username} = {
imports = [ imports = [
./home.nix ./home.nix

View File

@@ -1,10 +1,11 @@
{...}: { {username, ...}: {
home.persistence."/persist" = { home.persistence."/persist/home/${username}" = {
directories = [ directories = [
"Projects" "Projects"
".ssh" ".ssh"
".local/share/zsh" ".local/share/zsh"
]; ];
allowOther = true;
}; };
home.stateVersion = "24.11"; home.stateVersion = "24.11";

View File

@@ -19,32 +19,22 @@
../../modules/nixos/selfhosted/headscale.nix ../../modules/nixos/selfhosted/headscale.nix
../../modules/nixos/selfhosted/vaultwarden.nix ../../modules/nixos/selfhosted/vaultwarden.nix
../../modules/nixos/selfhosted/gitea.nix ../../modules/nixos/selfhosted/gitea.nix
../../modules/nixos/selfhosted/umami.nix ../../modules/nixos/selfhosted/plausible.nix
../../modules/nixos/selfhosted/monitoring/grafana.nix ../../modules/nixos/selfhosted/monitoring/grafana.nix
../../modules/nixos/selfhosted/monitoring/loki.nix ../../modules/nixos/selfhosted/monitoring/loki.nix
../../modules/nixos/selfhosted/monitoring/promtail.nix ../../modules/nixos/selfhosted/monitoring/promtail.nix
../../modules/nixos/selfhosted/ntfy-sh.nix ../../modules/nixos/selfhosted/ntfy-sh.nix
../../modules/nixos/selfhosted/searx.nix ../../modules/nixos/selfhosted/searx.nix
../../modules/nixos/selfhosted/wakapi.nix ../../modules/nixos/selfhosted/wakapi.nix
../../modules/nixos/selfhosted/nextcloud.nix
../../modules/nixos/selfhosted/silver-bullet.nix ../../modules/nixos/selfhosted/silver-bullet.nix
../../modules/nixos/selfhosted/rustdesk-server.nix ../../modules/nixos/selfhosted/rustdesk-server.nix
../../modules/nixos/selfhosted/kasmweb.nix
../../modules/nixos/selfhosted/open-webui.nix ../../modules/nixos/selfhosted/open-webui.nix
../../modules/nixos/selfhosted/glance ../../modules/nixos/selfhosted/glance
]; ];
tux.services.openssh.enable = true; tux.services.openssh.enable = true;
tux.containers.aiostreams = {
enable = true;
port = 4567;
environment = {
ADDON_ID = "aiostreams.tux.rs";
BASE_URL = "https://aiostreams.tux.rs";
};
environmentFiles = [
config.sops.secrets."aiostreams".path
];
};
sops.secrets = { sops.secrets = {
borg_encryption_key = { borg_encryption_key = {
@@ -71,6 +61,11 @@
sopsFile = ./secrets.yaml; sopsFile = ./secrets.yaml;
}; };
nextcloud_password = {
sopsFile = ./secrets.yaml;
owner = "nextcloud";
};
silver_bullet = { silver_bullet = {
sopsFile = ./secrets.yaml; sopsFile = ./secrets.yaml;
}; };
@@ -86,14 +81,6 @@
"cs2_secrets/CS2_PW" = { "cs2_secrets/CS2_PW" = {
sopsFile = ./secrets.yaml; sopsFile = ./secrets.yaml;
}; };
aiostreams = {
sopsFile = ./secrets.yaml;
};
umami = {
sopsFile = ./secrets.yaml;
};
}; };
nixpkgs = { nixpkgs = {
@@ -157,13 +144,7 @@
firewall = { firewall = {
enable = true; enable = true;
allowedTCPPorts = [ allowedTCPPorts = [80 443 22 3333 8081];
80
443
22
3333
8081
];
}; };
}; };
@@ -217,7 +198,6 @@
"/var/lib/nextcloud" "/var/lib/nextcloud"
"/var/lib/silverbullet" "/var/lib/silverbullet"
"/var/lib/kasmweb" "/var/lib/kasmweb"
"/var/lib/aiostreams"
]; ];
files = [ files = [
"/etc/ssh/ssh_host_ed25519_key" "/etc/ssh/ssh_host_ed25519_key"
@@ -227,9 +207,6 @@
]; ];
}; };
users.users.${username} = {
linger = true;
};
home-manager.users.${username} = { home-manager.users.${username} = {
imports = [ imports = [
./home.nix ./home.nix

View File

@@ -1,11 +1,12 @@
{...}: { {username, ...}: {
home.persistence."/persist" = { home.persistence."/persist/home/${username}" = {
directories = [ directories = [
"Projects" "Projects"
"Stuff" "Stuff"
".ssh" ".ssh"
".local/share/zsh" ".local/share/zsh"
]; ];
allowOther = true;
}; };
home.stateVersion = "24.11"; home.stateVersion = "24.11";

View File

@@ -6,14 +6,16 @@ cloudflare_credentials:
email: ENC[AES256_GCM,data:qesgxkzUglKdYPI=,iv:2XDEoQzmtagSiILWZzJPswdhkQ+qjdZfNd+LL1nHPx8=,tag:K1F23Za2Zq78tzf0fl5zEw==,type:str] email: ENC[AES256_GCM,data:qesgxkzUglKdYPI=,iv:2XDEoQzmtagSiILWZzJPswdhkQ+qjdZfNd+LL1nHPx8=,tag:K1F23Za2Zq78tzf0fl5zEw==,type:str]
dns_api_token: ENC[AES256_GCM,data:ibSL4KWYhqgHjo27fiSqB1iN9NWU3/qGGuLpmiMpBf+qCuh8uxR7Yw==,iv:NapMvfUSm5rgeROK7KuxGyog8s2PW9CCKtjRG87FoCQ=,tag:/Oah7PRCe4XPts0IYt83zw==,type:str] dns_api_token: ENC[AES256_GCM,data:ibSL4KWYhqgHjo27fiSqB1iN9NWU3/qGGuLpmiMpBf+qCuh8uxR7Yw==,iv:NapMvfUSm5rgeROK7KuxGyog8s2PW9CCKtjRG87FoCQ=,tag:/Oah7PRCe4XPts0IYt83zw==,type:str]
nextcloud_password: ENC[AES256_GCM,data:o37mq4YHQT5pbi+cXrk=,iv:8HiDwdHTozNM2lHpgqVhdsspuifppsL2I6Z31xEnYFI=,tag:xTnfn8HcubfiQwLYIkpxjw==,type:str] nextcloud_password: ENC[AES256_GCM,data:o37mq4YHQT5pbi+cXrk=,iv:8HiDwdHTozNM2lHpgqVhdsspuifppsL2I6Z31xEnYFI=,tag:xTnfn8HcubfiQwLYIkpxjw==,type:str]
silver_bullet: ENC[AES256_GCM,data:tI3Anq2V0Bttw/kN0DYtjdLUB24Q+JiymJt001ie3HfhEVcV3aQhQACTKJ2DbikCZWiet3ve9yqqktudlNTkXk2tk7D1/HQ30ToPzFLSPq6ZY0cxRCMFha9a,iv:gdG59nXnCA7x24vh1xqxocLfAi2/wpFGodCZTJb6Uvg=,tag:Ib1QpryROo6PKWohvLiMVQ==,type:str] silver_bullet: ENC[AES256_GCM,data:waEPGskjkkdX98PKzgZG1bzS+NwL6GR8kok=,iv:8a8IeXla8XSHFzjKcVY3QYUK5aFk2kPHVIRvs1y7So0=,tag:p++o6wvLtG5DbDmUusRQLg==,type:str]
cs2_secrets: cs2_secrets:
SRCDS_TOKEN: ENC[AES256_GCM,data:SzPz4sHDgEoioX8ylLFM6AUUS60gWYpR3ifxUD8A8IQga24t6GM0dyGDryc=,iv:XefIn9yCLPLKVRA+rZiSGUH3l6ZANIJoGRuM/3vFLIw=,tag:flEjl9c7i3XBlHJaq41QYQ==,type:str] SRCDS_TOKEN: ENC[AES256_GCM,data:SzPz4sHDgEoioX8ylLFM6AUUS60gWYpR3ifxUD8A8IQga24t6GM0dyGDryc=,iv:XefIn9yCLPLKVRA+rZiSGUH3l6ZANIJoGRuM/3vFLIw=,tag:flEjl9c7i3XBlHJaq41QYQ==,type:str]
CS2_RCONPW: ENC[AES256_GCM,data:ZyVeoOngZjxKR/ObYo5yJC1ViCNufuA=,iv:+fJK0sY39V/iH7OjT0AzQq6RefVzLZCDETYcAMFnZNU=,tag:IOhRUQRdffNMXa2cKZvi/w==,type:str] CS2_RCONPW: ENC[AES256_GCM,data:ZyVeoOngZjxKR/ObYo5yJC1ViCNufuA=,iv:+fJK0sY39V/iH7OjT0AzQq6RefVzLZCDETYcAMFnZNU=,tag:IOhRUQRdffNMXa2cKZvi/w==,type:str]
CS2_PW: ENC[AES256_GCM,data:W1Cur7YT1F/+45vmqif2JbpjVURfnfo=,iv:sBNDM2N+QWDAMculBBZtYZcM7ILEfpwkwOd7ErORQhI=,tag:XFsxTUjctZKU38RQUfJ8HQ==,type:str] CS2_PW: ENC[AES256_GCM,data:W1Cur7YT1F/+45vmqif2JbpjVURfnfo=,iv:sBNDM2N+QWDAMculBBZtYZcM7ILEfpwkwOd7ErORQhI=,tag:XFsxTUjctZKU38RQUfJ8HQ==,type:str]
aiostreams: ENC[AES256_GCM,data:2U2EoRUsKr4OIkqrudmIUEp2bABNlSlNUTzR3vtvTfSJVemIGK31iu0SG8aR4tLSQFEZyhIP9M22zZJVWY5hX1UcMEJ1rmtXnaRjTiurRSpTj76pT9plnrjp0NWDcSWY+uhDrAsEko4oPPJEECTT3qMYLXipnzqpPeWsTrNYiuxmfDPcZw==,iv:tHKbtnLMNfY7B2ssE8x0dri9XhA2M6jIj2KOxOsmG2o=,tag:8hjqmniL/P+PfwfYiAdAwA==,type:str]
umami: ENC[AES256_GCM,data:BJN9VpwknBaX+mz6xjq1GX9epM2bukplraPw67TttnLhM9JTmZiela5oFWZiaGjG3Oss3n4WPsPvhC4m28Ah+TQLCoiDFCFqervk228=,iv:YwbJ2/1hXs5Jbqx1dNj1t4ExFS27PWbA4NT9h8/tyU8=,tag:+R1aRF/TaMSGbLDi9GnYwA==,type:str]
sops: sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: age:
- recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4 - recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4
enc: | enc: |
@@ -33,7 +35,8 @@ sops:
NGprRGVyZ2plWVNrM3drM3JSUjM2L0UKuNk5DqYn2DIfRpY72zDRP5BKoVAXtNv9 NGprRGVyZ2plWVNrM3drM3JSUjM2L0UKuNk5DqYn2DIfRpY72zDRP5BKoVAXtNv9
uLI//8wc7f4I3uBdARQdpRE1fapY1UOJOn3i0yndrZARPEbdohRK1Q== uLI//8wc7f4I3uBdARQdpRE1fapY1UOJOn3i0yndrZARPEbdohRK1Q==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2026-02-17T13:21:46Z" lastmodified: "2025-01-24T12:59:25Z"
mac: ENC[AES256_GCM,data:7OcwTCe7MMFPUlqOIs0PxiJndtcWR1LbgSQ+69VXCCkewiee8suDuSMxn6sF+zb402uqSUitKWWySMEyL42ym0uyKB7+fi46sBj8O7T9uYM6F/wiH7S9Q7nuNaGP6zxj5TlvB//Dkp4n31Oqtg8xCTK+xGsV9mR17Ai0fjCxUBI=,iv:WvnNPF76Oi9vE2fgocvnOJmhuAdKjsoQeVZuFa0KU6Q=,tag:UHA+FhQr+BASkSyPTWHpaQ==,type:str] mac: ENC[AES256_GCM,data:WGWGvbqu07XZ5oU2HBGUbP/9oNCavPBXb2SIm10CG2s377QAWZmpdOC2AGAX8J3NfLtyWEHm8WUQSKjNKvKWARsXU24lNnY+BTSIkF8ymrAU/rRMX8VJi92IYjregAfVBIaYomxqJFhNuAhmsQ75ZYMpRBTusxiEFEdl/H9obiY=,iv:VXIVkpnOY2gZ/xDX/oFvZn08K5Gp49tpiJQGK20blro=,tag:Hkk92ZQWTRY9oQb3Mm6R3w==,type:str]
pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.11.0 version: 3.9.3

View File

@@ -15,16 +15,14 @@
../common ../common
../../modules/nixos/desktop ../../modules/nixos/desktop
../../modules/nixos/desktop/awesome
../../modules/nixos/desktop/hyprland ../../modules/nixos/desktop/hyprland
../../modules/nixos/desktop/mango
../../modules/nixos/virtualisation ../../modules/nixos/virtualisation
../../modules/nixos/steam.nix ../../modules/nixos/steam.nix
../../modules/nixos/obs-studio.nix
]; ];
hardware.nvidia-container-toolkit.enable = true;
tux.services.openssh.enable = true; tux.services.openssh.enable = true;
tux.packages.distrobox.enable = true;
nixpkgs.config.cudaSupport = true; nixpkgs.config.cudaSupport = true;
sops.secrets = { sops.secrets = {
@@ -42,11 +40,6 @@
sopsFile = ./secrets.yaml; sopsFile = ./secrets.yaml;
owner = "${username}"; owner = "${username}";
}; };
"vicinae.json" = {
sopsFile = ./secrets.yaml;
owner = username;
};
}; };
networking = { networking = {
@@ -67,10 +60,7 @@
]; ];
# Facilitate firewall punching # Facilitate firewall punching
allowedUDPPorts = [ allowedUDPPorts = [41641];
41641
4242
];
allowedTCPPortRanges = [ allowedTCPPortRanges = [
{ {
@@ -112,48 +102,40 @@
kernelPackages = pkgs.linuxPackages_zen; kernelPackages = pkgs.linuxPackages_zen;
supportedFilesystems = ["ntfs"]; supportedFilesystems = ["ntfs"];
initrd = { initrd.systemd = {
kernelModules = [ enable = lib.mkForce true;
"vfio_pci"
"vfio"
"vfio_iommu_type1"
];
systemd = { services.wipe-my-fs = {
enable = lib.mkForce true; wantedBy = ["initrd.target"];
after = ["initrd-root-device.target"];
before = ["sysroot.mount"];
unitConfig.DefaultDependencies = "no";
serviceConfig.Type = "oneshot";
script = ''
mkdir /btrfs_tmp
mount /dev/disk/by-partlabel/disk-primary-root /btrfs_tmp
services.wipe-my-fs = { if [[ -e /btrfs_tmp/root ]]; then
wantedBy = ["initrd.target"]; mkdir -p /btrfs_tmp/old_roots
after = ["initrd-root-device.target"]; timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S")
before = ["sysroot.mount"]; mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp"
unitConfig.DefaultDependencies = "no"; fi
serviceConfig.Type = "oneshot";
script = ''
mkdir /btrfs_tmp
mount /dev/disk/by-partlabel/disk-primary-root /btrfs_tmp
if [[ -e /btrfs_tmp/root ]]; then delete_subvolume_recursively() {
mkdir -p /btrfs_tmp/old_roots IFS=$'\n'
timestamp=$(date --date="@$(stat -c %Y /btrfs_tmp/root)" "+%Y-%m-%-d_%H:%M:%S") for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do
mv /btrfs_tmp/root "/btrfs_tmp/old_roots/$timestamp" delete_subvolume_recursively "/btrfs_tmp/$i"
fi done
btrfs subvolume delete "$1"
}
delete_subvolume_recursively() { for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do
IFS=$'\n' delete_subvolume_recursively "$i"
for i in $(btrfs subvolume list -o "$1" | cut -f 9- -d ' '); do done
delete_subvolume_recursively "/btrfs_tmp/$i"
done
btrfs subvolume delete "$1"
}
for i in $(find /btrfs_tmp/old_roots/ -maxdepth 1 -mtime +30); do btrfs subvolume create /btrfs_tmp/root
delete_subvolume_recursively "$i" umount /btrfs_tmp
done '';
btrfs subvolume create /btrfs_tmp/root
umount /btrfs_tmp
'';
};
}; };
}; };
@@ -201,16 +183,17 @@
programs = { programs = {
ssh.startAgent = true; ssh.startAgent = true;
xfconf.enable = true; xfconf.enable = true;
file-roller.enable = true;
thunar = { thunar = {
enable = true; enable = true;
plugins = with pkgs; [ plugins = with pkgs.xfce; [
thunar-archive-plugin thunar-archive-plugin
thunar-volman thunar-volman
]; ];
}; };
nix-ld = { nix-ld = {
enable = true; enable = true;
package = pkgs.nix-ld; package = pkgs.nix-ld-rs;
}; };
nm-applet.enable = true; nm-applet.enable = true;
noisetorch.enable = true; noisetorch.enable = true;
@@ -252,6 +235,14 @@
openDefaultPorts = true; openDefaultPorts = true;
}; };
xserver = {
enable = true;
xkb = {
layout = "in";
variant = "eng";
};
};
libinput.touchpad.naturalScrolling = true; libinput.touchpad.naturalScrolling = true;
libinput.mouse.accelProfile = "flat"; libinput.mouse.accelProfile = "flat";
@@ -275,7 +266,7 @@
energy_performance_preference = "performance"; energy_performance_preference = "performance";
turbo = "auto"; turbo = "auto";
scaling_min_freq = 400000; scaling_min_freq = 400000;
scaling_max_freq = 4600000; scaling_max_freq = 3800000;
}; };
}; };
}; };
@@ -297,6 +288,7 @@
asusd = { asusd = {
enable = true; enable = true;
enableUserService = true;
asusdConfig.text = '' asusdConfig.text = ''
( (
charge_control_end_threshold: 80, charge_control_end_threshold: 80,
@@ -409,7 +401,6 @@
"/var/lib/docker" "/var/lib/docker"
"/var/lib/waydroid" "/var/lib/waydroid"
"/var/lib/iwd" "/var/lib/iwd"
"/var/lib/libvirt"
"/etc/NetworkManager/system-connections" "/etc/NetworkManager/system-connections"
]; ];
files = [ files = [

View File

@@ -1,21 +1,17 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ { config, lib, pkgs, modulesPath, ... }:
config,
lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci"]; {
boot.initrd.kernelModules = []; imports =
boot.kernelModules = ["kvm-amd"]; [ (modulesPath + "/installer/scan/not-detected.nix")
boot.extraModulePackages = []; ];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # 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 # (the default) this is the recommended approach. When using systemd-networkd it's

View File

@@ -1,14 +1,17 @@
{pkgs, ...}: { {
pkgs,
username,
...
}: {
imports = [ imports = [
../../modules/home/desktop/awesome
../../modules/home/desktop/hyprland ../../modules/home/desktop/hyprland
../../modules/home/desktop/mango ../../modules/home/picom
../../modules/home/desktop/vicinae
../../modules/home/desktop/utils
../../modules/home/alacritty ../../modules/home/alacritty
../../modules/home/wezterm ../../modules/home/wezterm
../../modules/home/ghostty ../../modules/home/ghostty
../../modules/home/desktop/rofi ../../modules/home/desktop/rofi
../../modules/home/lan-mouse ../../modules/home/barrier
../../modules/home/firefox ../../modules/home/firefox
../../modules/home/brave ../../modules/home/brave
../../modules/home/vs-code ../../modules/home/vs-code
@@ -18,13 +21,13 @@
../../modules/home/easyeffects ../../modules/home/easyeffects
../../modules/home/discord ../../modules/home/discord
../../modules/home/kdeconnect ../../modules/home/kdeconnect
../../modules/home/obs-studio
../../modules/home/spotify ../../modules/home/spotify
]; ];
home.pointerCursor = { home.pointerCursor = {
package = pkgs.bibata-cursors; package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice"; name = "Bibata-Modern-Ice";
size = 28;
}; };
qt = { qt = {
@@ -59,12 +62,9 @@
}; };
home.packages = with pkgs; [ home.packages = with pkgs; [
antigravity
davinci-resolve
telegram-desktop telegram-desktop
anydesk anydesk
rustdesk-flutter stable.rustdesk-flutter
moonlight-qt
rawtherapee rawtherapee
stable.beekeeper-studio stable.beekeeper-studio
libreoffice-qt libreoffice-qt
@@ -76,13 +76,12 @@
copyq copyq
vlc vlc
tor-browser tor-browser
vivaldi distrobox
bluetui bluetui
impala impala
pulseaudio
]; ];
home.persistence."/persist" = { home.persistence."/persist/home/${username}" = {
directories = [ directories = [
"Downloads" "Downloads"
"Music" "Music"
@@ -91,32 +90,22 @@
"Videos" "Videos"
"Projects" "Projects"
"Stuff" "Stuff"
"Distrobox"
"go" "go"
".mozilla"
".ssh" ".ssh"
".wakatime" ".wakatime"
".rustup" ".rustup"
".cargo" ".cargo"
".steam"
".mozilla"
".cache/awww"
".cache/spotifyd"
".cache/spotify-player" ".cache/spotify-player"
".config/BraveSoftware" ".config/BraveSoftware"
".config/vivaldi"
".config/Antigravity"
".config/zed"
".config/copyq" ".config/copyq"
".config/discord" ".config/discord"
".config/Vencord" ".config/Vencord"
".config/vesktop" ".config/vesktop"
".config/sops" ".config/sops"
".config/obs-studio" ".config/obs-studio"
".config/easyeffects"
".config/rustdesk" ".config/rustdesk"
".config/kdeconnect" ".config/kdeconnect"
".config/Moonlight\ Game\ Streaming\ Project"
".local/lib/vivaldi"
".local/share/nvim" ".local/share/nvim"
".local/share/opencode" ".local/share/opencode"
".local/share/zsh" ".local/share/zsh"
@@ -125,13 +114,12 @@
".local/share/GalaxyBudsClient" ".local/share/GalaxyBudsClient"
".local/share/TelegramDesktop" ".local/share/TelegramDesktop"
".local/state/lazygit" ".local/state/lazygit"
".local/share/Steam"
".local/share/vicinae"
]; ];
files = [ files = [
".wakatime.cfg" ".wakatime.cfg"
".config/aichat/.env" ".config/aichat/.env"
]; ];
allowOther = true;
}; };
home.stateVersion = "24.11"; home.stateVersion = "24.11";

View File

@@ -1,7 +1,6 @@
hyperbolic_api_key: ENC[AES256_GCM,data:WGvF0PPbMd7zWiO8GfmgluV7dW+ZpzLMO31uI5xo+nekvTBkXiAuHFDK/SXKEUFDMEboNkA/a6JUNsCRhuA4N7qhIZgyQ2bc1iafsj7c4F4X/py63Z4bMx8+byScOSoW+RKAvSFOLDGXQ4s9dKc3XNW7G15QyzTRYUFDbXxsSQ6n6DMJk4jr,iv:o+Shbpl3tXmefpdQB5sod3bNQHHsBnEEP0Bk3C1H5Yo=,tag:fi+7K3nAjVoavqy2Mt8W3Q==,type:str] hyperbolic_api_key: ENC[AES256_GCM,data:WGvF0PPbMd7zWiO8GfmgluV7dW+ZpzLMO31uI5xo+nekvTBkXiAuHFDK/SXKEUFDMEboNkA/a6JUNsCRhuA4N7qhIZgyQ2bc1iafsj7c4F4X/py63Z4bMx8+byScOSoW+RKAvSFOLDGXQ4s9dKc3XNW7G15QyzTRYUFDbXxsSQ6n6DMJk4jr,iv:o+Shbpl3tXmefpdQB5sod3bNQHHsBnEEP0Bk3C1H5Yo=,tag:fi+7K3nAjVoavqy2Mt8W3Q==,type:str]
gemini_api_key: ENC[AES256_GCM,data:ToQn6NiBpebcSPIHbnAyTJm092Xv24pb7Q09hW/Qb0qZC0ORJGG5,iv:/VIw5hTKlZLaWYdEyaEvIv/ZPTBhq5OkguPL6wFs8A8=,tag:44tNJTBeHYW1ug+z+yKTrw==,type:str] gemini_api_key: ENC[AES256_GCM,data:ToQn6NiBpebcSPIHbnAyTJm092Xv24pb7Q09hW/Qb0qZC0ORJGG5,iv:/VIw5hTKlZLaWYdEyaEvIv/ZPTBhq5OkguPL6wFs8A8=,tag:44tNJTBeHYW1ug+z+yKTrw==,type:str]
open_router_api_key: ENC[AES256_GCM,data:QLXIEqsUe8HQobJMvqh8fZi7azXjnz7B524kDPWB8Dk5tAv6EVvM0KHAa6aTGmeMB8LJiUPcLmPU0ifU07s2OyB3Q9w+IFvlfQ==,iv:pBr8SJG8FHP1oYrXrHG0gRMPfdXXoBNPGcYEXF3IJGg=,tag:Yf2FuncT3/9pcBIEN+irGQ==,type:str] open_router_api_key: ENC[AES256_GCM,data:QLXIEqsUe8HQobJMvqh8fZi7azXjnz7B524kDPWB8Dk5tAv6EVvM0KHAa6aTGmeMB8LJiUPcLmPU0ifU07s2OyB3Q9w+IFvlfQ==,iv:pBr8SJG8FHP1oYrXrHG0gRMPfdXXoBNPGcYEXF3IJGg=,tag:Yf2FuncT3/9pcBIEN+irGQ==,type:str]
vicinae.json: ENC[AES256_GCM,data:VZ3Z3Q3/KSmqE20Jt91y7XnO8LjKKFg8PUFiFuj2aW3kf/dl40lNWATQxa5AmggGViOf2R+1Q2r4cyGQFUWiOww5gcUT3Op+Z+zqPTE+Heu8/Sst0Vi7ZjL8vvmc6HYpT4t6JvYCEr4jjnBwLIvaxNwxCArEfga5lMgOzDQqhnZeOkBCTGdCp4nN7eBaWBFK4Jsm905mm+N2yMD4/rlkFNA6EBEJ4j5A5DnFF3ooZKSqi0VUhvagZ0JsaGdHpn124hnKkVwLejcWlKYpmXu+5gYRh1F5sADR8BpubMeCoEnGB5zUuxd7v/8m8siYbYzJEMtoBLNVlFcfgdI7/tGfd5aj5S+/ZEHbL9UrSLpKiw==,iv:xayL9aZgak0y3hxwcijMSMslaLCMsVvkXm1Fefs652k=,tag:BE804jVdu1poJmoGPjwsqA==,type:str]
sops: sops:
age: age:
- recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4 - recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4
@@ -22,7 +21,7 @@ sops:
UVM3a1VIMWZGRGNxaUNwbStKekd4N28KvouH73cSd9xMUzDX3ib5tsR8deXGaGTB UVM3a1VIMWZGRGNxaUNwbStKekd4N28KvouH73cSd9xMUzDX3ib5tsR8deXGaGTB
N36MxnZcv9AhX7YErc18OkUv+lHZf2MoJ+x5+XOMCjhlUOlvqcBrAg== N36MxnZcv9AhX7YErc18OkUv+lHZf2MoJ+x5+XOMCjhlUOlvqcBrAg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2026-02-17T13:38:15Z" lastmodified: "2025-10-10T10:15:15Z"
mac: ENC[AES256_GCM,data:KYa/c921oDF2JKEEO0Fdvh8J1qkuQDH2biaS79v1qRr4AUd1yRpyZ75NvHmeIrYNsXgcgzqCi7vtaCF7v/ucirruf20ZeNmCpVb0BfesNko+0PrjWpwnNbabVCVIJFZiGbe35ENcM0DPECvb7vBJ2QKvqMCot6Zys9TgeXRcmGk=,iv:BPEE3KEg7y0BvVkd+aNMRK8xk4JNKgk8R+AR94rCFiM=,tag:y7rrugvI7XmjDP0Dj7GwBQ==,type:str] mac: ENC[AES256_GCM,data:ZkWoHKbfC9xqShgOy3KCDPzziQq6hHc6h/o+3MGd31juW2OLlkk4skyxF/u5Eoq6hAeMU27mKu3TnyvCQA3gv1trP5CObs5Cc/Rp8odN+B6549Ec5ljojQbmwwsTti3vo6CbbZXjBZyy6WzJqKWm6yotzp3AFC0CMe+GhsmKY30=,iv:JWWwy5mYdLOHQQ0f2mtRiAkG1LF0ckIe8ndrZfXuZ7Y=,tag:b3DCwgBBBmcJAEnL2qOH5g==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.11.0 version: 3.10.2

View File

@@ -15,9 +15,7 @@
../../modules/nixos/selfhosted/upstream-proxy.nix ../../modules/nixos/selfhosted/upstream-proxy.nix
../../modules/nixos/selfhosted/tfolio.nix ../../modules/nixos/selfhosted/tfolio.nix
../../modules/nixos/selfhosted/cyber-tux.nix ../../modules/nixos/selfhosted/cyber-tux.nix
../../modules/nixos/selfhosted/containers/aiostreams.nix
../../modules/nixos/networking/ssh.nix ../../modules/nixos/networking/ssh.nix
../../modules/nixos/distrobox.nix
]; ];
sops.secrets.tux-password = { sops.secrets.tux-password = {
@@ -50,14 +48,7 @@
home-manager = { home-manager = {
backupFileExtension = "hm-backup"; backupFileExtension = "hm-backup";
useUserPackages = true; useUserPackages = true;
extraSpecialArgs = { extraSpecialArgs = {inherit inputs outputs username email;};
inherit
inputs
outputs
username
email
;
};
users.${username} = { users.${username} = {
imports = [ imports = [
./home.nix ./home.nix

View File

@@ -5,6 +5,7 @@
... ...
}: { }: {
imports = [ imports = [
inputs.impermanence.nixosModules.home-manager.impermanence
inputs.nix-index-database.homeModules.nix-index inputs.nix-index-database.homeModules.nix-index
../../modules/home/shell ../../modules/home/shell

View File

@@ -1,88 +1,79 @@
tux-password: ENC[AES256_GCM,data:yAqMKsk7uz0F0k32PdYnqAmn+tdLyXl2krvMstdgFCvIUZH8TlATWCUMPUtnxQiTQqCUY+Q8LE+yYcFFGC3r5TskbF98igZTDA==,iv:hkE/21gdD2bCEdIITrhm9lhKRTHhCPeo8YaYS61/dEM=,tag:/tz2Xvy2ro9gGwKHrJuuzw==,type:str] tux-password: ENC[AES256_GCM,data:68ZXKJMBBLV1mkNP9LFf+xC5arsARqKPFQAtmfag3ftip1suuZ1FmQICqsuCqXgGuwcSfH4ACkuiQ769u4aI7+jPxs0A62hFig==,iv:Yx9EfqChjBtgxxkWmayfKWoE498w4wUYoS353cMUMsI=,tag:Zr3KuIiXsi2VahRZ7Ncpig==,type:str]
sops: sops:
age: age:
- recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4 - recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXaTFZSENQZDcvczUrVFF6 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWblJrWjErZC81d1IzTHV6
Mm1GV3pqSzVPd2pQaUp3ZGRJS0kzMExXSmtJCkVwR1VxbUhCTTlKVHlLR0kvWkFO ZUkwTEhRdVdTTlJQb1pocnpnSkdZSWNTelVFCkJLR3VwT2dwM3IydCtkZ24yLzVF
R2VmQWhzSEsya3I4b1JRWnFSbXdUanMKLS0tIFR5bkU3cEVHL3BlUFRjL2l2ZDBK ei9xMG51djNldnZkSnVqeEtsVFNSMkEKLS0tIGNEdi9OV0ZjVW93SUUyVURpT2tR
WUVaZzFCQkc0KzRNQlRRdGNvWFdQNkUKhxAV3VavBzjSQHJPNn+Ghspi1scCq7dS U3ZybTNac1JvVW9zTy9ocE5FUkpQTjAK2lAp5MC3B779uSWaOOxbnfdAa9xYDCL2
Qu81Q24kMK9sL7ddTjB7UqCgZ3LHq+Izzw5cSYVy+nq150oCBURnoA== TloXlxfuYKe0j9Z2TIlYOa6z+/m8upOpE42Ux0qjZprE1LBq3g5uMA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age1f860dfewlx5jtt9ejr47gywx70p3dmyc8mat29gpr75psljwjv8q5xyxkq - recipient: age1f860dfewlx5jtt9ejr47gywx70p3dmyc8mat29gpr75psljwjv8q5xyxkq
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNVGdJQTdBVHAxTmFoeThj YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBoZGdNSG5ER0JxbWhNanJU
RWE0QjBiQUt5UkdDZzBRQm5vTUtGZmRxQ2xvCkRiUDIxUkV3ZW5Jd1ZoZWRzeE03 WGlCZlIyT3JLWnFkSnBaakkyMXZBU0o0cjFVCml5VDB2d2dJTGkvVDh5M1NweXl1
T0VPZE9pYXJGclVZSTJRM1JaVjM3VU0KLS0tIGFXQ3pRWXFYYWkrYngyZDJST2Jr ajl3R2RUWmtwWU5RUlpsVFIvM3R0cUUKLS0tIFNkbmtrRGdrcUFibDlldncrbjg2
UlAzTFdxMENxckVpL05ReENjZHk3b1UK1NEgbZ5AMf9h6zlfIHL7ugNSyQ156T5r TWJ1UFh5RnI2VDRocnZ0VVNmd2JRSVEKmqNV4dADO9ZxTjlDgMC5fNdioJrO6vrN
x3l7nFrvxAWE9aTzn03hFjgRP72If6k/3pHJmT8h2494+K20qAmx6g== vTg3lTrwOTZ/TCg9PS2T5QEX9fZh2UthCEisPO7p1Q81Gyk7ySg2ow==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age1x36yr8h993srfj29sfpzt4wyz52nztvncpmhgmfs0j26qvfecq3qvcm0an - recipient: age1x36yr8h993srfj29sfpzt4wyz52nztvncpmhgmfs0j26qvfecq3qvcm0an
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwZE16cm5vNzhVSkY5K2hV YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYZWRuaHIvT3BSZ2M0OUla
MWRaMHNIL1Q2cDZ0eHozbTJJWklKb09BK213CkFSazJGdnBWQnRvQ2Zlc1JQazZV YWhSa2Q5SDJNbkRLQUZxaVFISmJENTIxc0hrCjlKTVBCK2g2WWNNNlNJQ25sMjVY
VWVMb1FpcUZMeURQSXJBTkJGeVdCeUkKLS0tIG1uRDJ4T2pRaVY1aERQOWhZdGl0 TURsSkNsbTQwRGlyU3NySis5azNvTVUKLS0tIGZHUEh3NHMyVXN5T0pXOWpOT1JP
b3JVbHNpY1B5ekpodHp3ZXlrZFplNFEKiRPqPKh3g33a2/fQVrj8qGOcXheVaLgA UmZSM1J0elprbVBUZzU5QjVLRnVxNWsKFVdUQcKiHaSDR2+GqafXvoRQ0yyiKMcy
CAShzomubIQNFZUnl12hjH+ZcKlAwYFXzCrHUNdkEUWRIASqGa5oMA== /UP/yCMoNUYIpiv4ocRhtDj4QrrO6NdJJTUifMkB9I1B6R7B7NG/gw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age1jg642q775gmnmxeu29gcf3lph8vem4xr8t84cxe809dpd0myrussh49h60 - recipient: age1jg642q775gmnmxeu29gcf3lph8vem4xr8t84cxe809dpd0myrussh49h60
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvQ3UybGxJaUU5ckdDak5F YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNeEpwakIyMkRYN1c0bUNy
d3RJdlR3VHNHZTJ0UXhXc08wSVVXZVFZb2lvClZGSzV6QmhqL01rYjhjdjNKT2RT eDFpUGlkTW02NWE1VlYxYnNsQTJ1NHIyWVY4ClI3VHlSWW1IK3I3SHY5YXN5S09q
V3k1QUF4VXBNb2d6dnA0N2lNNnpXS00KLS0tICs3bWRHMGZiMmM4S3YyY0ttRWZ1 OU5aSXVXU0FVU1VrNGlCTzFKWm95ZkkKLS0tIGV0Sy9LYlBuTm4xa2Zkc3JoaWo0
Snd1QTlRUndzK0RSUld1TlRkNU13cHMKTZsBN/4nBfEndip/vCUNtFZF89MKT8uA ZXllYnMwaXBXTW5vVVhoNXVFcEwvdlEKbuiT2/Isi3nsx/r3whpX6RiLEtsLMm6f
C/hKD33ycaLNzmgxz3VRSCxeALMspeobeOLfRHJLflusD9xGgXn73A== 2A3bKpz1+MUupE6umEIBCXc+k58W6VhBkdrMxGtxZt1ZeA8ftz4bVA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age1zsl5d4vj6gl3h96y5p53sq5y4vr4vtlwp727h7rp9a4xfkxm53lqrh6r50 - recipient: age1zsl5d4vj6gl3h96y5p53sq5y4vr4vtlwp727h7rp9a4xfkxm53lqrh6r50
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQWmkrNXJvUjR5anlUcFVE YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBnbFUwbXoyUnZGMElMdldX
NExQTnAwZDVmWEl3c3B2bis1N00wQzF6MFFvCnpENVNJU1JWLyswNnZoUTBZNE16 UkJseC9XWEU3Vks2eGdYbHFjUjZMUVVGbkY0ClNIWFMvWEl1eDRncEt1dy9iVS81
V2ZtLzIzanZEOWhkYXFxaWVLaDZoUDAKLS0tIEs3SXRZU283dERkZEFabmtFZTEx ZE1rN25lR0w0Wno2OHZDZTRhSTVXVDgKLS0tIG9jNmFkdGxoRmRCT1RJQjVlOUJa
aUIwRTgzQklUZmlnS05MQ2o5QmJSQk0KVrx1ZHqnS3KQ9jB7yqVIWbrQAdqDt/c4 R0kxbllzMXZML1J6MitXSGhSTkF0MEkK8g7s87t956UTDtQO+IUEXe2B6WNM+KfH
i3mst4a/rKjgZGUYugHMctJppPIpqqVZTpBHPgY5OiAGESMrUZE+Ig== aRobwCjvXcv5I8G+gkNll23MYlLMBRZ1qkeq24R0xA7cMYXj5APUsA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age1zujp5gxy7suv8ysnygv43cmzuvv36nxfg0ch7r3xg2emc6fz3vmqqujheq - recipient: age1zujp5gxy7suv8ysnygv43cmzuvv36nxfg0ch7r3xg2emc6fz3vmqqujheq
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvdUhKNU5BYmNEdllkWU1R YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0bTBEck44R2ZxS0M3Ris1
QVIxMExuYit6ekNwVHFmd2dGNEJtTTlHd0IwCkxiZnAvSURQY2RyWnRVVGxtdlUv VllxeEgyTjRWcHp3RUdpMytFQ0podkxXT1JrCi9VU2U2SHFrd1dPb3RESkQ4OGhi
bmNpNFB6OENqOFJSakQ2NGJ0cVJTQlkKLS0tIEt5QXBXNC9WaDdIdklTeTA3ZEp6 RjZVVTZWQUVXSUxqaG5KVkJxQ0RCQncKLS0tIDJiVGpIU0NjelVCZkloOGhxQTdV
Y212bDZSRkttWjBqTEdkbjY4WHd5RTgK1Y779ogFUcr89gosqh7rra7Wg6G/Ez1o eHlaVm9iUFk2YThXZnU5SVpHUVVHbkEKcmUvbINRqmkkvXyyskNJ4eYD7VdQnxqg
/+48kxF2DTKZLJYX2AFEP5H0JjBDtt+isiO7H1644LjdAwO/sgFMSQ== 7VuWV7zUK5ZVPv9kJiUl3OB3vNU8U15sNIdAjCp8//RtNkRyDJMgEQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age1ydkclhk9kwqdq74utesqdfupt43lz64d5k65gz2z9uyljcqq9fcq3hv28l - recipient: age1ydkclhk9kwqdq74utesqdfupt43lz64d5k65gz2z9uyljcqq9fcq3hv28l
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwQXFScVBqUDZHc3BDK3N4 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjVjU1Vy9tMkp5MS96Si9v
T3BnSWk5SElzZllYRHdlMStPS2ZyMDZoZ3pnCm5KVnBYb1R6anRWd04rNllPSW1G bnB4OHpzdktPeStYZHFZTXVmSWphMkxFQkRZCjEvTEpZY1I4TWNlM0c4Wi9nUVhx
ZVMwMTQ5NjQvaEYwZUhOOE56ckJHb00KLS0tIEpCWmNQZzFlK3ZrRGFPMFVwZndG dktvOXdXQ0M1YzhVU3BlOUZ4Tjkrd28KLS0tIC9NT0NKZTd0VUVUQTB6UHhDSVVw
ZStueWovUmtKdTk2enRJa3NSbFpJL1UKtzKYPJ6vy6+VjPkrsRvNTwUtV198oglr eFM1Q1JOVXZoSXltRVZpaTNTUWhNa3MKFoY5bWWQS9qh0j8sgIgRA4jT6sl0xRkC
cMqBSuwkqzgjDC09sRMnW5PRfJo8hG+5gkd6EPZ8uAbUhGC+kAyLrg== Tu0WUz344TzkJFuy7MgOpviQMqAijmbyYjaRSdS3CLGHvTKY8GcpOA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1put942dyhly8nk9c8n0h8tq0x6xplrg3uw5q0d2jmvwez3zq79qsapl7he
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0ZU93NCtxODQ2YjA4TUcr
aWEyaW4zREZtVUpuZWhZSUw3TWhpMXBYWEVVCitDNGx1eWZQZGsvUDl0UzNCd0Zp
QndpMys5OVg1WXMrdXRDUkFZWDErcjAKLS0tIDBOZTBxM09INTIxZm9tQk10ZUc2
emExUmJZZk00WmxYK2Y3WCtmQXhSUmsKwMxI9I6kQYkvZ4TzJtv/MdGLwTbQdePx
XB+oFbc9Rp3IAEZfH1+VEtJRjyKk5hE7HQoIh92XxJvmbDIswOe/Rg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
- recipient: age1y4luzn2jls7rvgphej23srvdlx563lxq29tvf66vhwwzaf7c3f3qzvresh - recipient: age1y4luzn2jls7rvgphej23srvdlx563lxq29tvf66vhwwzaf7c3f3qzvresh
enc: | enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwNUhPQThmWjJROW95SWsw YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSYlpXRGNpQVZTQ3hZK2lr
aFk4dGR3c0RJZTkwSHFXaWp2UCtQWS9xYjFnCnAxa0RMV0xsNnZ2cnVMbmRzRFYv L2xodmhycTlRczN1c2Zib3RoeGlxQTAwTVRRCkJ1aWc3bzAyNnlMbUhuK2YwTXBq
QmRZQVY1ME9zTmZtT1RxUmFQc2JYc2cKLS0tIGxUTjYwYXZUMU9FY3BFS04zQk1G Q1VhUUtWWXU0RXY2NG5jMG90dis4bEUKLS0tIHlkRkdCV0ZvU2pLZDRlN2h6c0JO
bFJwRno1a0pwVHpaV0haZjlZazNtZDAKxTvzsmLtx50sI2bZ3fFcB6j9ZLas4KmL TTNtbGY1UWV5K3VQWjk5WlgyNUd1UVkK+XeX8vK4K2DJaWtFE91YGg/58M09rwuj
5bu9Z75hFi+N1sjvMpcK7oIFypGLIWU3xpTP//jv6RuiyjGuR2Dq2w== VVcMIPPPO1+KD16HTe1b8bVPeNfpIj9p3ybew3ILducyrYiRrxzGwg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-11-04T09:28:17Z" lastmodified: "2025-10-10T10:14:47Z"
mac: ENC[AES256_GCM,data:A+xfYhnoq/JWYGZOleieF5vjrsPOtkKnXPbd94iBAbnuuBKx8Vgkpuum+hJzVIBdDSCVm8hl2Tpcw7NqWLSkXtBR/NKixzk6eIwFvOZz4h7Qe1Zue10pB25IkIzR34sLnWSHtsxuRRG6fZnf0CNtp7baf4XU3doyDwy5A384Jf0=,iv:i0y0UEY7SSCOBIBc+97qIiq4obpUJYb3gFo1yEc5eUI=,tag:c5zONd6zTv3sq4bPqT73OQ==,type:str] mac: ENC[AES256_GCM,data:fmBWLOOCvJLfKSNG14zd9cBEa9+M4dJ7UtR+SZfGEcoGtBPmX1c6ZR8OgB+I45WkpT+Ho8kwQMcnD0n6IWzg946OEzIZjNuCds/wM1cCd3LjjlqwKnN1QGL5DNSIyi5CFzrjvvFtZCsw2acNjxtK86JujhpOivdVKC/kGkJzF0M=,iv:g0jXzrtU53YpW/NIb8ulmOGSJIXMA1Wady6DlOMA9aU=,tag:zf7WmNNYcFO9Rtynm5vaUg==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.11.0 version: 3.10.2

View File

@@ -23,21 +23,6 @@
discord_token = { discord_token = {
sopsFile = ./secrets.yaml; sopsFile = ./secrets.yaml;
}; };
hyperbolic_api_key = {
sopsFile = ./secrets.yaml;
owner = "${username}";
};
gemini_api_key = {
sopsFile = ./secrets.yaml;
owner = "${username}";
};
open_router_api_key = {
sopsFile = ./secrets.yaml;
owner = "${username}";
};
}; };
tux.services.cyber-tux = { tux.services.cyber-tux = {
@@ -124,7 +109,7 @@
programs = { programs = {
nix-ld = { nix-ld = {
enable = true; enable = true;
package = pkgs.nix-ld; package = pkgs.nix-ld-rs;
}; };
}; };
@@ -156,7 +141,6 @@
]; ];
}; };
users.users.${username} = {linger = true;};
home-manager.users.${username} = { home-manager.users.${username} = {
imports = [ imports = [
./home.nix ./home.nix

View File

@@ -1,21 +1,17 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ { config, lib, pkgs, modulesPath, ... }:
config,
lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci"]; {
boot.initrd.kernelModules = []; imports =
boot.kernelModules = ["kvm-amd"]; [ (modulesPath + "/installer/scan/not-detected.nix")
boot.extraModulePackages = []; ];
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # 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 # (the default) this is the recommended approach. When using systemd-networkd it's

View File

@@ -1,5 +1,5 @@
{...}: { {username, ...}: {
home.persistence."/persist" = { home.persistence."/persist/home/${username}" = {
directories = [ directories = [
"Projects" "Projects"
"Stuff" "Stuff"
@@ -15,6 +15,7 @@
files = [ files = [
".wakatime.cfg" ".wakatime.cfg"
]; ];
allowOther = true;
}; };
home.stateVersion = "24.11"; home.stateVersion = "24.11";

View File

@@ -1,8 +1,9 @@
discord_token: ENC[AES256_GCM,data:fZqz6LD3+Svtton5gNCXO5ddWAqW1IyxP3M2DAIXZEIYRHUfAq8h9LES2IHWepjl5qKimxB35zacE/TYK2fitngWtRGVoMDBzzU6VTKNulNV3yFWrPA=,iv:YOplYld+c9vHVC0Srfm89qrh4yUygDiW67X2TdwHKMc=,tag:Ioc2wNLX818fRQ/2PSO7Sw==,type:str] discord_token: ENC[AES256_GCM,data:fZqz6LD3+Svtton5gNCXO5ddWAqW1IyxP3M2DAIXZEIYRHUfAq8h9LES2IHWepjl5qKimxB35zacE/TYK2fitngWtRGVoMDBzzU6VTKNulNV3yFWrPA=,iv:YOplYld+c9vHVC0Srfm89qrh4yUygDiW67X2TdwHKMc=,tag:Ioc2wNLX818fRQ/2PSO7Sw==,type:str]
hyperbolic_api_key: ENC[AES256_GCM,data:t8xjjzhgvM9BXiB5jDc2RR384d+mL5zXr+/obDLMm2J+IN+Xw9fr4iz50CTQ5ZMWWMoPjxzY5vgiJ+h71BsDRM0TvBMWuXd2ihKOIZOVo6OQmCX/SeKUgkjunFqz+YKcxsLsF7ZG/tOgWGqMmxom8iGV7LELKG/8MLDCF50YgJNO568MJMUU,iv:Cf+mSG2dxsRclDy8k7gK+hi+Qd5J7wqfS9SQztRob80=,tag:Io4aAFa29SUsfuPFI2/+DA==,type:str]
gemini_api_key: ENC[AES256_GCM,data:GJWo7dXSaUbl2Q9h+Sc1sRF0g+82LyHk3mKFqDaBmRdalvyGwMvp,iv:odLpACXHVqxWIj7e/u6AY1pxjYX+e10Lezne1BlHl60=,tag:qO3zcz/93eHuEzG66zwwdA==,type:str]
open_router_api_key: ENC[AES256_GCM,data:ETiZEngQRnOrJtDXSDfBanzbUyThTAu9BSQCL1tuVv07CCWJaXUui9Y0kS9oIO5to655FON3C0RxovTGx6rWQwOMKeEn5bHUHA==,iv:ePJzHKFWddkLGfydPi6uEzvksm7Djln/DBV88Jc1ugA=,tag:Eb7eYPMC0DlqtT7OFK4UuA==,type:str]
sops: sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age: age:
- recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4 - recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4
enc: | enc: |
@@ -22,7 +23,8 @@ sops:
Y1RHaFdXaE9DODJtSTFCSVZWb0xVeUEK4qeBKg3u+vhBIM1dQ7BaOWi/C7Q8hk60 Y1RHaFdXaE9DODJtSTFCSVZWb0xVeUEK4qeBKg3u+vhBIM1dQ7BaOWi/C7Q8hk60
vu9Zr075n0+kb5Ab+RH24ZmEoP5PJXjwEfbAnmRTjn0reYn1nfcNYA== vu9Zr075n0+kb5Ab+RH24ZmEoP5PJXjwEfbAnmRTjn0reYn1nfcNYA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-14T06:52:16Z" lastmodified: "2025-02-15T12:45:59Z"
mac: ENC[AES256_GCM,data:/p5Mbonr1YcrDgBIi+wFFPnNKsn74kuWf/EloNDnVWg59LuBy3nhrfXHUvbwlX7vLbSLozbuAHKTDcQ0+OUXJTYvMRApAGVh9HrvQFEQuOPOkwN8/qtdvwduInetX3t7PLWu4vbCVhl1v2BzJyEVQ9tzn7+8zEJhDDS7cPsZ9Is=,iv:GPJxjmOQPAqh0TulLhhX4UX+5FrZizCtDOkQa9xxaXY=,tag:Vv33D3wubWBDVOxdKOMENQ==,type:str] mac: ENC[AES256_GCM,data:NLGe7L/oiG62x4PmQ6FobnuisFmMxYoGhxfqQ4qZdy9emYL/+FnrtFsKTKqZ9IHjrNnCmbk7y+Cds/azC1xGVcaj50jEox87vtqIZ3z0XsD1mJjCAdHkBVzzpQGwHas/5y0Inyj+oKsvQrqVacqYHVA/ES+zMvou8nD+EWIH2LE=,iv:fBVOnwih+QFkYZ8IfMBpQiT1XwSZtzo3VYaBOL3I5o4=,tag:p+ePQsrmcLcnLr2fgWQXQg==,type:str]
pgp: []
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.10.2 version: 3.9.4

View File

@@ -35,10 +35,7 @@
ssh.startAgent = true; ssh.startAgent = true;
thunar = { thunar = {
enable = true; enable = true;
plugins = with pkgs; [ plugins = with pkgs.xfce; [thunar-archive-plugin thunar-volman];
thunar-archive-plugin
thunar-volman
];
}; };
nm-applet.enable = true; nm-applet.enable = true;
}; };
@@ -54,10 +51,16 @@
}; };
logind = { logind = {
settings.Login = { extraConfig = "HandlePowerKey=suspend";
HandlePowerKey = "suspend"; lidSwitch = "suspend";
HanldeLidSwitch = "suspend"; lidSwitchExternalPower = "suspend";
HandleLidSwitchExternalPower = "suspend"; };
xserver = {
enable = true;
xkb = {
layout = "in";
variant = "eng";
}; };
}; };
@@ -73,7 +76,6 @@
fonts.packages = with pkgs.nerd-fonts; [ fonts.packages = with pkgs.nerd-fonts; [
fira-code fira-code
jetbrains-mono jetbrains-mono
bigblue-terminal
]; ];
home-manager.users.${username} = { home-manager.users.${username} = {

View File

@@ -3,16 +3,21 @@
../../modules/home/desktop/awesome ../../modules/home/desktop/awesome
../../modules/home/desktop/hyprland ../../modules/home/desktop/hyprland
../../modules/home/picom ../../modules/home/picom
../../modules/home/alacritty
../../modules/home/wezterm ../../modules/home/wezterm
../../modules/home/ghostty
../../modules/home/desktop/rofi ../../modules/home/desktop/rofi
../../modules/home/barrier
../../modules/home/firefox ../../modules/home/firefox
../../modules/home/brave ../../modules/home/brave
../../modules/home/vs-code
../../modules/home/mopidy
../../modules/home/thunderbird
]; ];
home.pointerCursor = { home.pointerCursor = {
package = pkgs.bibata-cursors; package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice"; name = "Bibata-Modern-Ice";
size = 28;
}; };
home.stateVersion = "24.11"; home.stateVersion = "24.11";

View File

@@ -1,54 +0,0 @@
{
inputs,
username,
...
}: {
imports = [
inputs.disko.nixosModules.default
(import ./disko.nix {
device = "/dev/nvme0n1";
device2 = "/dev/nvme1n1";
device3 = "/dev/sda";
})
./hardware.nix
../common
];
tux.services.openssh.enable = true;
boot.loader.grub.enable = true;
networking = {
hostName = "node";
networkmanager = {
enable = true;
wifi.powersave = false;
};
firewall = {
enable = true;
allowedTCPPorts = [
22
8545
8546
9545
9546
];
};
};
security.rtkit.enable = true;
environment.persistence."/persist" = {
enable = false;
};
home-manager.users.${username} = {
imports = [
./home.nix
];
};
system.stateVersion = "25.05";
}

View File

@@ -1,87 +0,0 @@
{
device ? throw "Set this to the disk device, e.g. /dev/nvme0n1",
device2 ? throw "Set this to the disk device2, e.g. /dev/nvme1n1",
device3 ? throw "Set this to the disk device3, e.g. /dev/nvme1n1",
...
}: {
disko.devices = {
disk = {
disk1 = {
type = "disk";
device = "${device}";
content = {
type = "gpt";
partitions = {
boot = {
size = "1M";
type = "EF02"; # for grub MBR
};
mdadm = {
size = "100%";
content = {
type = "mdraid";
name = "raid0";
};
};
};
};
};
disk2 = {
type = "disk";
device = "${device2}";
content = {
type = "gpt";
partitions = {
boot = {
size = "1M";
type = "EF02"; # for grub MBR
};
mdadm = {
size = "100%";
content = {
type = "mdraid";
name = "raid0";
};
};
};
};
};
hdd = {
type = "disk";
device = "${device3}";
content = {
type = "gpt";
partitions = {
data = {
size = "100%";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/mnt/hdd";
};
};
};
};
};
};
mdadm = {
raid0 = {
type = "mdadm";
level = 0;
content = {
type = "gpt";
partitions = {
primary = {
size = "100%";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
};
};
};
};
};
};
}

View File

@@ -1,29 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
# 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.enp41s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,3 +0,0 @@
{...}: {
home.stateVersion = "25.05";
}

View File

@@ -12,30 +12,8 @@
../../modules/nixos/virtualisation/docker.nix ../../modules/nixos/virtualisation/docker.nix
]; ];
hardware.nvidia-container-toolkit = {
enable = true;
suppressNvidiaDriverAssertion = true;
};
tux.services.openssh.enable = true; tux.services.openssh.enable = true;
sops.secrets = {
hyperbolic_api_key = {
sopsFile = ./secrets.yaml;
owner = "${username}";
};
gemini_api_key = {
sopsFile = ./secrets.yaml;
owner = "${username}";
};
open_router_api_key = {
sopsFile = ./secrets.yaml;
owner = "${username}";
};
};
boot.binfmt.emulatedSystems = ["aarch64-linux"]; boot.binfmt.emulatedSystems = ["aarch64-linux"];
nixpkgs = { nixpkgs = {
@@ -47,7 +25,6 @@
enable = true; enable = true;
defaultUser = "${username}"; defaultUser = "${username}";
useWindowsDriver = true; useWindowsDriver = true;
interop.register = true;
}; };
networking.hostName = "sirius"; networking.hostName = "sirius";
@@ -59,7 +36,7 @@
nix-ld = { nix-ld = {
enable = true; enable = true;
libraries = config.hardware.graphics.extraPackages; libraries = config.hardware.graphics.extraPackages;
package = pkgs.nix-ld; package = pkgs.nix-ld-rs;
}; };
dconf.enable = true; dconf.enable = true;

View File

@@ -1,27 +0,0 @@
hyperbolic_api_key: ENC[AES256_GCM,data:3E4oWt65AU3anVUEU52r7vpRddDgXdqKgvc/URQmJGbA0nu6sbRmw3lD44SG0L5tMubi20+gkKlyFV3i8q2U148eo582Sxh8eXshvvjZ+gr9W9Eg0Tk9kQWycrE+N3r3g1AC+CWtbkRFDxQLuVAYf9W4mTw2Yg1VLV7H3BUCSYv3Rg5EPb9c,iv:Z+72Bk+5ZnHVR+SHXgM5mwfsIp4zZf9Iv8cAaZQB3Mg=,tag:phqWkpOCKnfiCBvR/f3flw==,type:str]
gemini_api_key: ENC[AES256_GCM,data:S9DEgF4xIDXaOqs+3vdRbFb4Z8eAV1hVg8PwEfasWu9XGH3CTXV8,iv:LvUFg6dzlzC3feGh//d2rmxvVq5TJQDEBQWfxNa259Y=,tag:juLXnsiXz7OmYvyKfAv66Q==,type:str]
open_router_api_key: ENC[AES256_GCM,data:tUtkVER9ZlhSeb0bDbA1nRi1lkRX/ofosV+mcHnaNQmAZXWXiyn8WDfemxxNuvU86YctURxL4TckfsQv7RmMjY7esB1Pmmwf9Q==,iv:elT8JJu48cgu4Q1YWxiL4ePNkP+EGhI8blqfUB/nmz8=,tag:bMvUXUegE+GJ6WdypTxLyw==,type:str]
sops:
age:
- recipient: age14vktfes95f33vuefwnmuvryas7az04u76dsgyhfvsx73czkvmp2q7njkl4
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtVUx5VWlHekQ1ZlBWb1cv
aWpXQ0NUaDVudENNRWhPdXlhekhwZW9zbjNNCkRzTlVOZm53MnJmckp6d3FsTU9D
M2pZYUs2aHJzWjQzM01BMUVaZHlsdm8KLS0tIG04Rjc3VXM1eFhvTGhpMVlJdE9K
dkYwdGZMRmZ1MFFTVlI4T0MrNytsV00KmdCXJ/EBZhLN/NXuOf36LjwmGTze46Ou
kQtKSpdzLdo/bdS6sbUGVHqDLeS7GwGtVciMh9zBHCsGBCAAkQHxIA==
-----END AGE ENCRYPTED FILE-----
- recipient: age1f860dfewlx5jtt9ejr47gywx70p3dmyc8mat29gpr75psljwjv8q5xyxkq
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiSXhQdEpJZHBGbjlZTnhD
U0Zwc1pwbGtHdkRFbWJRVzRNWUdqakhzM2pJCmYyYlMwQVZEbzkxcnRKVERyeExB
Z0hXcTdyMHMwREExdlJmR3JHTldvRnMKLS0tIFNMczN6QmI3cUR6clBDU2dKQTVF
U1dpRkttaURwSkgySVdiR25iZk50b2cKrrNfeAV73W3+kWM0diIFj08+koBVySVx
U3tYYrePi7qQxDSrNo4a14yOopjktj/ABKpxI5cfza6aS5NQxErq2Q==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-10T21:30:12Z"
mac: ENC[AES256_GCM,data:IxGSaYj3PLV+RA4G+A3yep0RkcPr9xd6X7yKJP3QVthzGinm0KRNs8wyMdDgdSrK/e0AlzN594VOMTRRgxLV9oPqEPqufWDGGCpiKuW+q2mJSv3i3f1dUbO/l+OSTEFqeeKb8rWEhbJ3qcjEhI/eFB+RNkDtJvSzDlJsS4uDB9A=,iv:VlvTI3AHyBKpwr9b29YqN8V1Tjq2E8oAOAPA7LuAKps=,tag:+BFt/T4ep66WFz9Y2a7a9w==,type:str]
unencrypted_suffix: _unencrypted
version: 3.10.2

View File

@@ -56,7 +56,6 @@
enable = false; enable = false;
}; };
users.users.${username} = {linger = true;};
home-manager.users.${username} = { home-manager.users.${username} = {
imports = [ imports = [
./home.nix ./home.nix

View File

@@ -1,28 +1,24 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
config, imports =
lib, [ (modulesPath + "/installer/scan/not-detected.nix")
pkgs, ];
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = []; boot.initrd.availableKernelModules = [ ];
boot.initrd.kernelModules = []; boot.initrd.kernelModules = [ ];
boot.kernelModules = []; boot.kernelModules = [ ];
boot.extraModulePackages = []; boot.extraModulePackages = [ ];
fileSystems."/" = { fileSystems."/" =
device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888"; { device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
fsType = "ext4"; fsType = "ext4";
}; };
swapDevices = []; swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # 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 # (the default) this is the recommended approach. When using systemd-networkd it's

View File

@@ -91,7 +91,6 @@
]; ];
}; };
users.users.${username} = {linger = true;};
home-manager.users.${username} = { home-manager.users.${username} = {
imports = [ imports = [
./home.nix ./home.nix

View File

@@ -1,10 +1,11 @@
{...}: { {username, ...}: {
home.persistence."/persist" = { home.persistence."/persist/home/${username}" = {
directories = [ directories = [
"Projects" "Projects"
".ssh" ".ssh"
".local/share/zsh" ".local/share/zsh"
]; ];
allowOther = true;
}; };
home.stateVersion = "24.11"; home.stateVersion = "24.11";

View File

@@ -8,7 +8,7 @@
bold.family = "JetBrainsMono Nerd Font"; bold.family = "JetBrainsMono Nerd Font";
italic.family = "JetBrainsMono Nerd Font"; italic.family = "JetBrainsMono Nerd Font";
bold_italic.family = "JetBrainsMono Nerd Font"; bold_italic.family = "JetBrainsMono Nerd Font";
size = 12; size = 16;
}; };
window = { window = {
@@ -28,7 +28,7 @@
colors = { colors = {
primary = { primary = {
background = "#0f0f0f"; background = "#0d0f18";
foreground = "#a5b6cf"; foreground = "#a5b6cf";
}; };
normal = { normal = {

View File

@@ -0,0 +1,7 @@
{pkgs, ...}: {
# services.barrier.client.enable = true;
home.packages = with pkgs; [
barrier
];
}

View File

@@ -25,7 +25,7 @@ in {
package = pkgs.brave; package = pkgs.brave;
commandLineArgs = [ commandLineArgs = [
"--disable-features=WebRtcAllowInputVolumeAdjustment" "--disable-features=WebRtcAllowInputVolumeAdjustment"
"--force-device-scale-factor=1.0" "--force-device-scale-factor=1.05"
]; ];
}; };

View File

@@ -1,12 +1,10 @@
{pkgs, ...}: { {pkgs, ...}: {
imports = [ imports = [
./hyprlock.nix ./hyprlock.nix
./hyprpaper.nix
]; ];
home.packages = with pkgs; [ home.packages = with pkgs; [ags];
ags
awww
];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
@@ -16,7 +14,7 @@
systemd.variables = ["--all"]; systemd.variables = ["--all"];
plugins = with pkgs.hyprland-plugins; [ plugins = with pkgs.hyprland-plugins; [
# hyprexpo hyprexpo
]; ];
settings = let settings = let
@@ -33,19 +31,13 @@
terminal = "wezterm"; terminal = "wezterm";
floating_terminal = "wezterm start --class wezterm-floating"; floating_terminal = "wezterm start --class wezterm-floating";
editor = "wezterm -e nvim"; editor = "wezterm -e nvim";
browser = "brave --new-window"; browser = "brave";
spotify = "wezterm start --class wezterm-floating -e spotify_player"; spotify = "wezterm start --class wezterm-floating -e spotify_player";
filemanager = "wezterm -e superfile"; filemanager = "wezterm start --class wezterm-floating -e superfile";
in { in {
# See https://wiki.hyprland.org/Configuring/Multi-GPU
env = "AQ_DRM_DEVICES,/dev/dri/card2";
#-- Output #-- Output
# See https://wiki.hyprland.org/Configuring/Monitors # See https://wiki.hyprland.org/Configuring/Monitors
monitor = [ monitor = "eDP-1,2560x1440@90,0x0,1";
"eDP-1,2560x1440@90,0x0,1"
"HDMI-A-1,preferred,0x-1440,1"
];
#-- Input: Keyboard, Mouse, Touchpad #-- Input: Keyboard, Mouse, Touchpad
input = { input = {
@@ -79,11 +71,6 @@
misc = { misc = {
disable_hyprland_logo = true; disable_hyprland_logo = true;
force_default_wallpaper = 1; force_default_wallpaper = 1;
vrr = 0;
};
cursor = {
no_hardware_cursors = 1;
}; };
ecosystem = { ecosystem = {
@@ -95,19 +82,19 @@
# See https://wiki.hyprland.org/Configuring/Variables/#decoration # See https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration = { decoration = {
rounding = rounding; rounding = rounding;
active_opacity = 1.0; active_opacity = 0.95;
inactive_opacity = 1.0; inactive_opacity = 0.95;
fullscreen_opacity = 1.0; fullscreen_opacity = 1.0;
blur = { blur = {
enabled = false; enabled = true;
size = 4; size = 6;
passes = 3; passes = 3;
new_optimizations = true; new_optimizations = true;
xray = false; xray = true;
special = true; special = true;
brightness = 1; brightness = 1;
noise = 0.02; noise = 0.01;
contrast = 1; contrast = 1;
popups = true; popups = true;
popups_ignorealpha = 0.6; popups_ignorealpha = 0.6;
@@ -124,16 +111,34 @@
enabled = true; enabled = true;
bezier = [ bezier = [
"zoom, 0.05, 0.7, 0.1, 1.0" "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" # use with .2s duration
]; ];
animation = [ animation = [
"windows, 1, 1, zoom, slide" "windows, 1, 3, md3_decel, popin 60%"
"windowsIn, 1, 1, zoom, slide" "windowsIn, 1, 3, md3_decel, popin 60%"
"windowsOut, 1, 1, zoom, slidevert" "windowsOut, 1, 3, md3_accel, popin 60%"
"windowsMove, 1, 1, zoom, slide" "border, 1, 10, default"
"fade, 1, 2, zoom" "fade, 1, 3, md3_decel"
"workspaces, 1, 1, zoom, slide" "layersIn, 1, 3, menu_decel, slide"
"layersOut, 1, 1.6, menu_accel"
"fadeLayersIn, 1, 3, menu_decel"
"fadeLayersOut, 1, 1.6, menu_accel"
"workspaces, 1, 3, menu_decel, slide"
"specialWorkspace, 1, 3, md3_decel, slidevert"
]; ];
}; };
@@ -145,41 +150,48 @@
mfact = 0.5; mfact = 0.5;
new_on_top = false; new_on_top = false;
orientation = "left"; orientation = "left";
inherit_fullscreen = true;
smart_resizing = true; smart_resizing = true;
drop_at_cursor = true; drop_at_cursor = true;
}; };
#-- Window Rules #-- Window Rules
# See https://wiki.hyprland.org/Configuring/Window-Rules # See https://wiki.hyprland.org/Configuring/Window-Rules
windowrule = [ windowrulev2 = [
"float on, center on, size 800 600, match:class org.pulseaudio.pavucontrol" "float, class:com.github.hluk.copyq"
"size 800 600, class:com.github.hluk.copyq"
"float, class:org.pulseaudio.pavucontrol"
"size 800 600, class:org.pulseaudio.pavucontrol"
# Wezterm and Ghostty floating terminal # Wezterm and Ghostty floating terminal
"float on, center on, size 1200 800, match:class (com.ghostty.floating|wezterm-floating)" "float, class:(com.ghostty.floating|wezterm-floating)"
"size 1200 800, class:(com.ghostty.floating|wezterm-floating)"
"float on, center on, size 900 700, match:class GalaxyBudsClient" "float, class:GalaxyBudsClient"
"size 900 700, class:GalaxyBudsClient"
# KDE Connect # KDE Connect
"float on, center on, size 900 700, match:class (org.kde.kdeconnect.sms|org.kde.kdeconnect.app)" "float, class:(org.kde.kdeconnect.sms|org.kde.kdeconnect.app)"
"size 900 700, class:(org.kde.kdeconnect.sms|org.kde.kdeconnect.app)"
"workspace 7 silent, match:class (discord|org.telegram.desktop)" "workspace 3 silent, class:(firefox|Brave-browser)"
"workspace 5 silent, class:(discord|org.telegram.desktop)"
]; ];
# plugin = { plugin = {
# hyprexpo = { hyprexpo = {
# columns = 3; columns = 3;
# gap_size = 5; gap_size = 5;
# bg_col = "rgb(111111)"; bg_col = "rgb(111111)";
# workspace_method = "first 1"; workspace_method = "center current";
# gesture_distance = 300;
# };
# };
gesture = [ enable_gesture = true;
"3, horizontal, workspace" gesture_fingers = 3;
"3, up, dispatcher, exec, brightnessctl s +20%" gesture_distance = 300;
"3, down, dispatcher, exec, brightnessctl s +20%-" gesture_positive = true;
]; };
};
bindm = [ bindm = [
"SUPER,mouse:273,resizewindow" "SUPER,mouse:273,resizewindow"
@@ -189,32 +201,33 @@
bind = [ bind = [
# apps # apps
"SUPER, Return, exec, ${terminal}" "SUPER, Return, exec, ${terminal}"
"SUPER, Space, exec, vicinae toggle"
"SUPER, F, exec, ${filemanager}" "SUPER, F, exec, ${filemanager}"
"SUPER, E, exec, ${editor}" "SUPER, E, exec, ${editor}"
"SUPER, B, exec, ${browser}" "SUPER, B, exec, ${browser}"
"SUPER, G, exec, GalaxyBudsClient" "SUPER, G, exec, GalaxyBudsClient"
"SUPER, D, exec, discord" "SUPER, D, exec, discord"
"SUPER, T, exec, Telegram"
"SUPER, S, exec, ${spotify}" "SUPER, S, exec, ${spotify}"
"SUPER, V, exec, vicinae vicinae://extensions/vicinae/clipboard/history" "SUPER, V, exec, copyq show"
"SUPER_SHIFT, Return, exec, ${floating_terminal}" "SUPER_SHIFT, Return, exec, ${floating_terminal}"
"SUPER_SHIFT, S, exec, hypr-screenshot" "SUPER_SHIFT, S, exec, flameshot gui"
"SUPER_SHIFT, W, exec, vicinae vicinae://extensions/sovereign/awww-switcher/wpgrid"
# tpanel # tpanel
"SUPER, A, exec, ags toggle launcher"
"SUPER_SHIFT, B, exec, ags toggle bar" "SUPER_SHIFT, B, exec, ags toggle bar"
"SUPER_SHIFT, C, exec, ags toggle control-center" "SUPER_SHIFT, C, exec, ags toggle control-center"
"SUPER_SHIFT, W, exec, ags toggle wallpaper-manager"
"SUPER_SHIFT, R, exec, ags quit; ${pkgs.tpanel}/bin/tpanel" "SUPER_SHIFT, R, exec, ags quit; ${pkgs.tpanel}/bin/tpanel"
# hyprland # hyprland
"SUPER, Q, killactive" "SUPER, Q, killactive"
# "SUPER, grave, hyprexpo:expo, toggle" "SUPER, grave, hyprexpo:expo, toggle"
"SUPER_SHIFT, Q, forcekillactive" "SUPER_SHIFT, Q, forcekillactive"
"SUPER_SHIFT, F, fullscreen, 0" "SUPER_SHIFT, F, fullscreen, 0"
"SUPER_SHIFT, Space, exec, hyprctl dispatch togglefloating; hyprctl dispatch resizeactive exact 1200 800; hyprctl dispatch centerwindow;" "SUPER_SHIFT, Space, exec, hyprctl dispatch togglefloating; hyprctl dispatch resizeactive exact 1200 800; hyprctl dispatch centerwindow;"
"SUPER_SHIFT, P, exec, hyprctl dispatch pin"
# shutdown
"SUPER_SHIFT, P, exec, poweroff"
# lock # lock
"SUPER_SHIFT, L, exec, hyprlock" "SUPER_SHIFT, L, exec, hyprlock"
@@ -237,8 +250,6 @@
"SUPER, 3, workspace, 3" "SUPER, 3, workspace, 3"
"SUPER, 4, workspace, 4" "SUPER, 4, workspace, 4"
"SUPER, 5, workspace, 5" "SUPER, 5, workspace, 5"
"SUPER, 6, workspace, 6"
"SUPER, 7, workspace, 7"
# send to workspaces # send to workspaces
"SUPER_SHIFT, 1, movetoworkspacesilent, 1" "SUPER_SHIFT, 1, movetoworkspacesilent, 1"
@@ -246,18 +257,14 @@
"SUPER_SHIFT, 3, movetoworkspacesilent, 3" "SUPER_SHIFT, 3, movetoworkspacesilent, 3"
"SUPER_SHIFT, 4, movetoworkspacesilent, 4" "SUPER_SHIFT, 4, movetoworkspacesilent, 4"
"SUPER_SHIFT, 5, movetoworkspacesilent, 5" "SUPER_SHIFT, 5, movetoworkspacesilent, 5"
"SUPER_SHIFT, 6, movetoworkspacesilent, 6"
"SUPER_SHIFT, 7, movetoworkspacesilent, 7"
]; ];
workspace = [ workspace = [
"1, monitor:HDMI-A-1, default:true" "1, monitor:HDMI-A-1"
"2, monitor:HDMI-A-1" "2, monitor:HDMI-A-1"
"3, monitor:HDMI-A-1" "3, monitor:HDMI-A-1"
"4, monitor:HDMI-A-1" "4, monitor:eDP-1"
"5, monitor:HDMI-A-1" "5, monitor:eDP-1"
"6, monitor:eDP-1"
"7, monitor:eDP-1"
]; ];
binde = [ binde = [
@@ -266,7 +273,6 @@
"SUPER_CTRL, right, resizeactive, 20 0" "SUPER_CTRL, right, resizeactive, 20 0"
"SUPER_CTRL, up, resizeactive, 0 -20" "SUPER_CTRL, up, resizeactive, 0 -20"
"SUPER_CTRL, down, resizeactive, 0 20" "SUPER_CTRL, down, resizeactive, 0 20"
"SUPER_CTRL, equal, exec, hyprctl dispatch layoutmsg mfact exact 0.5;"
# move active (Floating Only) # move active (Floating Only)
"SUPER_ALT, left, moveactive, -20 0" "SUPER_ALT, left, moveactive, -20 0"
@@ -293,11 +299,11 @@
"exec-once" = [ "exec-once" = [
# load hyprland plugins # load hyprland plugins
# "hyprctl plugin load '$HYPR_PLUGIN_DIR/lib/libhyprexpo.so'" "hyprctl plugin load '$HYPR_PLUGIN_DIR/lib/libhyprexpo.so'"
"easyeffects --w" "hyprpaper"
"awww-daemon"
"${pkgs.tpanel}/bin/tpanel" "${pkgs.tpanel}/bin/tpanel"
"copyq"
"kdeconnectd" "kdeconnectd"
"kdeconnect-indicator" "kdeconnect-indicator"
]; ];

View File

@@ -5,13 +5,15 @@
settings = { settings = {
ipc = "on"; ipc = "on";
splash = false; splash = false;
splash_offset = 20; splash_offset = 2.0;
wallpaper = { preload = [
monitor = ""; "~/Wallpapers/mountain.jpg"
path = "~/Wallpapers/new/sunset-pixel.png"; ];
fit_mode = "";
}; wallpaper = [
", ~/Wallpapers/mountain.jpg"
];
}; };
}; };

View File

@@ -1,225 +0,0 @@
{inputs, ...}: {
imports = [
inputs.mango.hmModules.mango
];
wayland.windowManager.mango = {
enable = true;
settings = {
# Monitors
monitorrule = [
"name:eDP-1, width:2560, height:1440, refresh:165, x:0, y:10, vrr:1"
"name:HDMI-A-1, width:2560, height:1440, refresh:100, x:0, y:-1440, vrr:1"
];
# Keyboard
repeat_rate = 25;
repeat_delay = 600;
numlockon = 0;
xkb_rules_layout = "us";
# Trackpad
disable_trackpad = 0;
tap_to_click = 1;
tap_and_drag = 1;
drag_lock = 1;
trackpad_natural_scrolling = 1;
disable_while_typing = 1;
left_handed = 0;
middle_button_emulation = 0;
swipe_min_threshold = 1;
# Mouse
mouse_natural_scrolling = 0;
accel_profile = 0;
# Theme
border_radius = 8;
no_radius_when_single = 0;
focused_opacity = 1.0;
unfocused_opacity = 1.0;
# Scroller Layout Setting
scroller_structs = 0;
scroller_default_proportion = 0.5;
scroller_ignore_proportion_single = 0;
scroller_default_proportion_single = 1.0;
# Master-Stack Layout Setting
new_is_master = 0;
default_mfact = 0.5;
default_nmaster = 1;
smartgaps = 0;
# Overview Setting
hotarea_size = 10;
enable_hotarea = 1;
ov_tab_mode = 0;
overviewgappi = 15;
overviewgappo = 15;
# layouts
tagrule = [
"id:1, layout_name:tile"
"id:2, layout_name:tile"
"id:3, layout_name:tile"
"id:4, layout_name:tile"
"id:5, layout_name:tile"
"id:6, layout_name:scroller"
];
# Keybindings
mousebind = [
"SUPER, btn_left, moveresize, curmove"
"SUPER, btn_right, moveresize, curresize"
];
gesturebind = [
"none, right, 3, viewtoleft_have_client"
"none, up, 3, toggleoverview"
"none, down, 3, toggleoverview"
];
bind = [
# apps
"SUPER, Return, spawn, wezterm"
"SUPER, Space, spawn, vicinae toggle"
"SUPER, B, spawn, brave"
"SUPER, V, spawn, vicinae vicinae://extensions/vicinae/clipboard/history"
"SUPER+SHIFT, W, spawn, vicinae vicinae://extensions/sovereign/awww-switcher/wpgrid"
# WM
"SUPER, Q, killclient"
"SUPER+SHIFT, R, reload_config"
"SUPER+SHIFT, F, togglefullscreen"
"SUPER+SHIFT, Space, togglefloating"
"ALT, Tab, toggleoverview"
"ALT+SHIFT, minus, incgaps, -1"
"ALT+SHIFT, equal, incgaps, 1"
"ALT+SHIFT, R, togglegaps"
# switch layout
"SUPER+SHIFT, H, setlayout, tile"
"SUPER+SHIFT, V, setlayout, vertical_tile"
"SUPER+SHIFT, S, setlayout, scroller"
# resize client
"SUPER+CTRL, Up, resizewin, +0, -50"
"SUPER+CTRL, Down, resizewin, +0, +50"
"SUPER+CTRL, Left, resizewin, -50, +0"
"SUPER+CTRL, Right, resizewin, +50, +0"
# swap client
"SUPER+SHIFT, Up, exchange_client, up"
"SUPER+SHIFT, Down, exchange_client, down"
"SUPER+SHIFT, Left, exchange_client, left"
"SUPER+SHIFT, Right, exchange_client, right"
# switch client focus
"SUPER, Tab, focusstack, next"
"SUPER, Left, focusdir, left"
"SUPER, Right, focusdir, right"
"SUPER, Up, focusdir, up"
"SUPER, Down, focusdir, down"
# switch view
"SUPER, 1, view, 1, 0"
"SUPER, 2, view, 2, 0"
"SUPER, 3, view, 3, 0"
"SUPER, 4, view, 4, 0"
"SUPER, 5, view, 5, 0"
"SUPER, 6, view, 6, 0"
# move client to the tag with focus
"SUPER+SHIFT, 1, tagsilent, 1, 0"
"SUPER+SHIFT, 2, tagsilent, 2, 0"
"SUPER+SHIFT, 3, tagsilent, 3, 0"
"SUPER+SHIFT, 4, tagsilent, 4, 0"
"SUPER+SHIFT, 5, tagsilent, 5, 0"
"SUPER+SHIFT, 6, tagsilent, 6, 0"
# move client to the tag without focus
"SUPER+ALT, 1, tag, 1, 0"
"SUPER+ALT, 2, tag, 2, 0"
"SUPER+ALT, 3, tag, 3, 0"
"SUPER+ALT, 4, tag, 4, 0"
"SUPER+ALT, 5, tag, 5, 0"
"SUPER+ALT, 6, tag, 6, 0"
];
# Window effect
blur = 0;
blur_layer = 0;
blur_optimized = 1;
blur_params_num_passes = 2;
blur_params_radius = 5;
blur_params_noise = 0.02;
blur_params_brightness = 0.9;
blur_params_contrast = 0.9;
blur_params_saturation = 1.2;
shadows = 0;
layer_shadows = 0;
shadow_only_floating = 1;
shadows_size = 10;
shadows_blur = 15;
shadows_position_x = 0;
shadows_position_y = 0;
shadowscolor = "0x000000ff";
# Animation
animations = 1;
layer_animations = 1;
animation_type_open = "slide";
animation_type_close = "fade";
animation_fade_in = 1;
animation_fade_out = 1;
tag_animation_direction = 1;
zoom_initial_ratio = 0.3;
zoom_end_ratio = 0.8;
fadein_begin_opacity = 0.5;
fadeout_begin_opacity = 0.8;
animation_duration_move = 100;
animation_duration_open = 100;
animation_duration_close = 100;
animation_duration_tag = 200;
animation_duration_focus = 0;
animation_curve_open = "0.46, 1.0, 0.29, 1";
animation_curve_move = "0.46, 1.0, 0.29, 1";
animation_curve_tag = "0.46, 1.0, 0.29, 1";
animation_curve_close = "0.08, 0.92, 0, 1";
animation_curve_focus = "0.46, 1.0, 0.29, 1";
animation_curve_opafadeout = "0.5, 0.5, 0.5, 0.5";
animation_curve_opafadein = "0.46, 1.0, 0.29, 1";
# Appearance
borderpx = 0;
gappih = 10;
gappiv = 10;
gappoh = 10;
gappov = 10;
rootcolor = "0x201b14ff";
bordercolor = "0x444444ff";
focuscolor = "0xc9b890ff";
maximizescreencolor = "0x89aa61ff";
urgentcolor = "0xad401fff";
scratchpadcolor = "0x516c93ff";
globalcolor = "0xb153a7ff";
overlaycolor = "0x14a57cff";
# Misc
syncobj_enable = 1;
exec-once = [
"awww-daemon"
"kdeconnectd"
"kdeconnect-indicator"
"dbus-update-activation-environment --systemd --all; systemctl --user reset-failed && systemctl --user start mango-session.target"
];
};
};
}

View File

@@ -1,32 +0,0 @@
{pkgs, ...}: {
programs.satty = {
enable = true;
settings = {
general = {
corner-roundness = 12;
initial-tool = "arrow";
early-exit = true;
copy-command = "wl-copy";
};
font = {
family = "JetBrainsMono NerdFont";
};
};
};
home.packages = with pkgs; [
grim
slurp
hyprshot
wl-clipboard
wl-screenrec
(writeShellScriptBin "hypr-screenshot" ''
hyprshot -m region -r ppm - | satty --filename -
'')
(writeShellScriptBin "hypr-screenrecord" ''
wl-screenrec -g "$(slurp)"
'')
];
}

View File

@@ -1,70 +0,0 @@
{
pkgs,
config,
...
}: {
programs.vicinae = {
enable = true;
systemd = {
enable = true;
autoStart = true;
};
useLayerShell = true;
extensions = with pkgs.vicinae-extensions; [
bluetooth
nix
ssh
awww-switcher
process-manager
pulseaudio
wifi-commander
port-killer
silverbullet
];
settings = {
close_on_focus_loss = false;
consider_preedit = true;
pop_to_root_on_close = true;
favicon_service = "twenty";
search_files_in_root = true;
font = {
normal = {
size = 10;
family = "JetBrainsMono Nerd Font";
};
};
theme = {
light = {
name = "vicinae-light";
icon_theme = "default";
};
dark = {
name = "vicinae-dark";
icon_theme = "default";
};
};
launcher_window = {
opacity = 0.98;
};
imports = ["/run/secrets/vicinae.json"];
providers = {
"@samlinville/store.raycast.tailscale" = {
"preferences" = {
"tailscalePath" = "${pkgs.tailscale}/bin/tailscale";
};
};
"@sovereign/vicinae-extension-awww-switcher-0" = {
"preferences" = {
"transitionDuration" = "1";
"transitionType" = "center";
"wallpaperPath" = "/home/tux/Wallpapers/";
};
};
};
};
};
}

View File

@@ -42,6 +42,10 @@
"key": " \u001b[11D{#32} shell", "key": " \u001b[11D{#32} shell",
"type": "shell", "type": "shell",
}, },
{
"key": " \u001b[11D{#35}󰏖 pkgs",
"type": "packages",
},
{ {
"key": " \u001b[11D{#35} memory", "key": " \u001b[11D{#35} memory",
"type": "memory", "type": "memory",

View File

@@ -7,7 +7,7 @@
window-padding-x = 10 window-padding-x = 10
window-padding-y = 10 window-padding-y = 10
background-opacity = 0.9 background-opacity = 0.9
font-size = 12 font-size = 14
palette = 0=#252b37 palette = 0=#252b37
palette = 1=#d0679d palette = 1=#d0679d

View File

@@ -5,15 +5,13 @@
}: { }: {
programs.git = { programs.git = {
enable = true; enable = true;
userName = "${username}";
userEmail = "${email}";
signing = { signing = {
key = "~/.ssh/id_ed25519.pub"; key = "~/.ssh/id_ed25519.pub";
signByDefault = true; signByDefault = true;
}; };
settings = { extraConfig = {
user = {
name = "${username}";
email = "${email}";
};
init.defaultBranch = "main"; init.defaultBranch = "main";
commit.gpgSign = true; commit.gpgSign = true;
gpg.format = "ssh"; gpg.format = "ssh";

View File

@@ -1,19 +0,0 @@
{inputs, ...}: {
imports = [
inputs.lan-mouse.homeManagerModules.default
];
programs.lan-mouse = {
enable = true;
systemd = true;
settings = {
# release_bind = ["KeyA" "KeyS" "KeyD" "KeyF"];
port = 4242;
authorized_fingerprints = {
"30:66:b3:95:dc:6b:55:a4:9f:30:31:9c:3e:4d:70:03:33:c3:f0:6f:df:31:35:58:36:6e:80:2f:32:b2:ce:48" = "pc";
};
};
};
}

View File

@@ -0,0 +1,6 @@
{pkgs, ...}: {
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [obs-vaapi];
};
}

View File

@@ -1,7 +1,7 @@
{pkgs, ...}: { {pkgs, ...}: {
services.picom = { services.picom = {
enable = true; enable = true;
package = pkgs.picom; package = pkgs.picom-next;
backend = "glx"; backend = "glx";
vSync = true; vSync = true;

View File

@@ -78,13 +78,12 @@
termshark termshark
solc solc
dig dig
lsof
python312 python312
python312Packages.pipx python312Packages.pipx
nodejs nodejs
pnpm nodePackages.pnpm
yarn nodePackages.yarn
rustup rustup
bun bun
nixpkgs-fmt nixpkgs-fmt

View File

@@ -11,7 +11,7 @@
key = "<c-a>"; key = "<c-a>";
description = "AI-powered conventional commit"; description = "AI-powered conventional commit";
context = "global"; context = "global";
command = "git commit -m \"{{.Form.CommitMsg}}\""; command = ''git commit -m \"{{.Form.CommitMsg}}\"'';
loadingText = "Generating commit messages..."; loadingText = "Generating commit messages...";
prompts = [ prompts = [
{ {

View File

@@ -1,10 +1,8 @@
{ {
programs.opencode = { programs.opencode = {
enable = true; enable = true;
tui = {
theme = "system";
};
settings = { settings = {
theme = "system";
provider = { provider = {
google = { google = {
options = { options = {

View File

@@ -1,17 +1,4 @@
{ {
services.spotifyd = {
enable = true;
settings = {
global = {
device_name = "canopus";
device_type = "computer";
bitrate = 320;
initial_volume = 100;
autoplay = true;
};
};
};
programs.spotify-player = { programs.spotify-player = {
enable = true; enable = true;
settings = { settings = {

View File

@@ -1,15 +1,17 @@
{pkgs, ...}: { {
inputs,
pkgs,
...
}: {
programs.wezterm = { programs.wezterm = {
enable = true; enable = true;
package = pkgs.wezterm-git; package = inputs.wezterm-flake.packages."${pkgs.system}".default;
enableZshIntegration = false; enableZshIntegration = false;
extraConfig = '' extraConfig = ''
local wezterm = require 'wezterm' local wezterm = require 'wezterm'
local config = {} local config = {}
config.check_for_updates = false
config.window_close_confirmation = 'NeverPrompt' config.window_close_confirmation = 'NeverPrompt'
config.color_scheme = 'Poimandres' config.color_scheme = 'Poimandres'
config.colors = { config.colors = {
@@ -19,7 +21,7 @@
config.font = wezterm.font_with_fallback { config.font = wezterm.font_with_fallback {
'JetBrainsMono Nerd Font', 'JetBrainsMono Nerd Font',
} }
config.font_size = 12.0 config.font_size = 14.0
config.window_background_opacity = 1 config.window_background_opacity = 1
config.audible_bell = "Disabled" config.audible_bell = "Disabled"

View File

@@ -48,7 +48,7 @@
polkit_gnome polkit_gnome
xdotool xdotool
xclip xclip
xbacklight xorg.xbacklight
gpick gpick
alsa-utils alsa-utils
pavucontrol pavucontrol

View File

@@ -1,23 +1,4 @@
{pkgs, ...}: { {...}: {
services = {
displayManager = {
defaultSession = "none+awesome";
ly = {
enable = true;
settings = {
session_log = "null";
};
};
};
acpid.enable = true;
picom.enable = true;
upower.enable = true;
blueman.enable = true;
};
programs.dconf.enable = true;
xdg.mime = { xdg.mime = {
enable = true; enable = true;
defaultApplications = { defaultApplications = {
@@ -29,27 +10,4 @@
"x-scheme-handler/unknown" = ["brave-browser.desktop"]; "x-scheme-handler/unknown" = ["brave-browser.desktop"];
}; };
}; };
environment.systemPackages = with pkgs; [
acpi
linuxKernel.packages.linux_zen.acpi_call
inotify-tools
polkit_gnome
xdotool
xclip
xbacklight
gpick
alsa-utils
pavucontrol
brightnessctl
libnotify
feh
maim
mpdris2
xdg-utils
playerctl
pulsemixer
easyeffects
procps
];
} }

View File

@@ -1,26 +0,0 @@
{
inputs,
pkgs,
lib,
...
}: {
imports = [
inputs.mango.nixosModules.mango
];
programs.mango.enable = true;
xdg.portal = {
enable = lib.mkDefault true;
extraPortals = with pkgs; [
hyprland-git.xdg-desktop-portal-hyprland
xdg-desktop-portal-wlr
xdg-desktop-portal-gtk
];
config.mango = {
default = lib.mkForce ["hyprland" "gtk"];
"org.freedesktop.impl.portal.ScreenCast" = lib.mkForce ["hyprland"];
"org.freedesktop.impl.portal.ScreenShot" = lib.mkForce ["hyprland"];
};
};
}

View File

@@ -1,112 +0,0 @@
{
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.tux.packages.distrobox;
in {
options.tux.packages.distrobox = {
enable = mkEnableOption "Enable DistroBox";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
distrobox
(writeShellScriptBin "dbox-create" ''
#!/usr/bin/env bash
# 1. Initialize variables
IMAGE=""
NAME=""
# Array to hold optional arguments (like volumes)
declare -a EXTRA_ARGS
# 2. Parse arguments
while [[ $# -gt 0 ]]; do
case $1 in
-i|--image)
IMAGE="$2"
shift 2
;;
-n|--name)
NAME="$2"
shift 2
;;
-p|--profile)
echo ":: Profile mode enabled: Mounting Nix store and user profiles (Read-Only)"
# Add volume flags to the array
EXTRA_ARGS+=( "--volume" "/nix/store:/nix/store:ro" )
EXTRA_ARGS+=( "--volume" "/etc/profiles/per-user:/etc/profiles/per-user:ro" )
EXTRA_ARGS+=( "--volume" "/etc/static/profiles/per-user:/etc/static/profiles/per-user:ro" )
shift 1
;;
*)
echo "Unknown option $1"
exit 1
;;
esac
done
if [ -z "$IMAGE" ] || [ -z "$NAME" ]; then
echo "Usage: dbox-create -i <image> -n <name> [-p]"
exit 1
fi
# 3. Define the custom home path
CUSTOM_HOME="$HOME/Distrobox/$NAME"
echo "------------------------------------------------"
echo "Creating Distrobox: $NAME"
echo "Location: $CUSTOM_HOME"
echo "------------------------------------------------"
# 4. Run Distrobox Create
# We expand "''${EXTRA_ARGS[@]}" to properly pass the volume arguments
${pkgs.distrobox}/bin/distrobox create \
--image "$IMAGE" \
--name "$NAME" \
--home "$CUSTOM_HOME" \
"''${EXTRA_ARGS[@]}"
# Check exit code
if [ $? -ne 0 ]; then
echo "Error: Distrobox creation failed."
exit 1
fi
# 5. Post-Creation: Symlink Config Files
echo "--> Linking configurations to $NAME..."
# Helper function to symlink
link_config() {
SRC="$1"
DEST="$2"
DEST_DIR=$(dirname "$DEST")
# Create parent directory if it doesn't exist
mkdir -p "$DEST_DIR"
if [ -e "$SRC" ]; then
# ln -sf: symbolic link, force overwrite
ln -sf "$SRC" "$DEST"
echo " [LINK] $DEST -> $SRC"
else
echo " [SKIP] $SRC not found on host"
fi
}
# Create Symlinks
link_config "$HOME/.zshrc" "$CUSTOM_HOME/.zshrc"
link_config "$HOME/.zshenv" "$CUSTOM_HOME/.zshenv"
link_config "$HOME/.config/fastfetch" "$CUSTOM_HOME/.config/fastfetch"
link_config "$HOME/.config/starship.toml" "$CUSTOM_HOME/.config/starship.toml"
echo "--> Done! Enter via: distrobox enter $NAME"
'')
];
};
}

View File

@@ -1,7 +0,0 @@
{pkgs, ...}: {
programs.obs-studio = {
enable = true;
enableVirtualCamera = true;
plugins = with pkgs.obs-studio-plugins; [obs-vaapi wlrobs obs-source-record];
};
}

View File

@@ -1,61 +0,0 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.tux.containers.aiostreams;
in {
options.tux.containers.aiostreams = {
enable = mkEnableOption "Enable AIOStreams";
port = mkOption {
type = types.int;
default = 3000;
};
dataDir = mkOption {
type = types.path;
default = "/var/lib/aiostreams";
description = "Directory to store persistent AIOStreams data";
};
environment = mkOption {
type = with types; attrsOf str;
default = {};
};
environmentFiles = mkOption {
type = with types; listOf path;
default = [];
};
};
config = mkIf cfg.enable {
virtualisation.oci-containers.containers.aiostreams = {
autoStart = true;
image = "ghcr.io/viren070/aiostreams:latest";
ports = [
"${toString cfg.port}:3000"
];
environment = cfg.environment;
environmentFiles = cfg.environmentFiles;
volumes = [
"${cfg.dataDir}:/app/data"
];
};
services.nginx.virtualHosts = {
"${cfg.environment.ADDON_ID}" = {
forceSSL = true;
useACMEHost = "tux.rs";
locations = {
"/" = {
proxyPass = "http://localhost:${toString cfg.port}";
};
};
};
};
};
}

View File

@@ -19,7 +19,7 @@
nextcloud = { nextcloud = {
enable = true; enable = true;
hostName = "cloud.tux.rs"; hostName = "cloud.tux.rs";
package = pkgs.nextcloud32; package = pkgs.nextcloud31;
database.createLocally = true; database.createLocally = true;
configureRedis = true; configureRedis = true;
maxUploadSize = "16G"; maxUploadSize = "16G";
@@ -44,7 +44,5 @@
}; };
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [nextcloud31];
nextcloud32
];
} }

View File

@@ -1,32 +0,0 @@
{
lib,
config,
...
}: {
services = {
umami = {
enable = true;
settings = {
APP_SECRET_FILE = config.sops.secrets.umami.path;
PORT = 4645;
};
createPostgresqlDatabase = true;
};
nginx = {
enable = lib.mkForce true;
virtualHosts = {
"umami.tux.rs" = {
forceSSL = true;
useACMEHost = "tux.rs";
locations = {
"/" = {
proxyPass = "http://localhost:${toString config.services.umami.settings.PORT}";
proxyWebsockets = true;
};
};
};
};
};
};
}

View File

@@ -8,9 +8,10 @@
enable = true; enable = true;
qemu = { qemu = {
swtpm.enable = true; swtpm.enable = true;
ovmf.enable = true;
ovmf.packages = [pkgs.OVMFFull.fd];
}; };
}; };
spiceUSBRedirection.enable = true;
}; };
users.users.${username}.extraGroups = ["libvirtd"]; users.users.${username}.extraGroups = ["libvirtd"];

View File

@@ -2,27 +2,24 @@
additions = final: _prev: import ../pkgs {pkgs = final;}; additions = final: _prev: import ../pkgs {pkgs = final;};
modifications = final: prev: { modifications = final: prev: {
awesome = inputs.nixpkgs-f2k.packages.${prev.stdenv.hostPlatform.system}.awesome-git; awesome = inputs.nixpkgs-f2k.packages.${prev.system}.awesome-git;
ghostty = inputs.ghostty.packages.${prev.stdenv.hostPlatform.system}.default; ghostty = inputs.ghostty.packages.${prev.system}.default;
tawm = inputs.tawm.packages.${prev.stdenv.hostPlatform.system}.default; tawm = inputs.tawm.packages.${prev.system}.default;
tnvim = inputs.tnvim.packages.${prev.stdenv.hostPlatform.system}.default; tnvim = inputs.tnvim.packages.${prev.system}.default;
tpanel = inputs.tpanel.packages.${prev.stdenv.hostPlatform.system}.default; tpanel = inputs.tpanel.packages.${prev.system}.default;
ags = inputs.tpanel.packages.${prev.stdenv.hostPlatform.system}.ags.default; ags = inputs.tpanel.packages.${prev.system}.ags.default;
tfolio = inputs.tfolio.packages.${prev.stdenv.hostPlatform.system}.default; tfolio = inputs.tfolio.packages.${prev.system}.default;
trok = inputs.trok.packages.${prev.stdenv.hostPlatform.system}.default; trok = inputs.trok.packages.${prev.system}.default;
cyber-tux = inputs.cyber-tux.packages.${prev.stdenv.hostPlatform.system}.default; cyber-tux = inputs.cyber-tux.packages.${prev.system}.default;
hyprland-git = inputs.hyprland.packages.${prev.stdenv.hostPlatform.system}; hyprland-git = inputs.hyprland.packages.${prev.system};
hyprland-plugins = inputs.hyprland-plugins.packages.${prev.stdenv.hostPlatform.system}; hyprland-plugins = inputs.hyprland-plugins.packages.${prev.system};
wezterm-git = inputs.wezterm-flake.packages.${prev.stdenv.hostPlatform.system}.default;
awww = inputs.awww.packages.${prev.stdenv.hostPlatform.system}.awww;
vicinae-extensions = inputs.vicinae-extensions.packages.${prev.stdenv.hostPlatform.system};
}; };
# When applied, the stable nixpkgs set (declared in the flake inputs) will # When applied, the stable nixpkgs set (declared in the flake inputs) will
# be accessible through 'pkgs.stable' # be accessible through 'pkgs.stable'
stable-packages = final: _prev: { stable-packages = final: _prev: {
stable = import inputs.nixpkgs-stable { stable = import inputs.nixpkgs-stable {
system = final.stdenv.hostPlatform.system; system = final.system;
config.allowUnfree = true; config.allowUnfree = true;
}; };
}; };

View File

@@ -11,13 +11,14 @@ stdenv.mkDerivation {
owner = "datguypiko"; owner = "datguypiko";
repo = "Firefox-Mod-Blur"; repo = "Firefox-Mod-Blur";
rev = "refs/heads/master"; rev = "refs/heads/master";
sha256 = "sha256-PX26cPYKU5ERgmcMrpCyFGwLE2a2w80z2zPn28xJq/U="; sha256 = "sha256-BZ1NvKQwUDTMxQHEKX61PvD99cTDmBURSUKEKZNQDR4=";
}; };
installPhase = '' installPhase = ''
mkdir $out mkdir $out
cp -r * "$out/" cp -r * "$out/"
cp -r "$out/EXTRA MODS/Bookmarks Bar Mods/Bookmarks bar same color as toolbar/bookmarks_bar_same_color_as_toolbar.css" "$out/" cp -r "$out/EXTRA MODS/Bookmarks Bar Mods/Bookmarks bar same color as toolbar/bookmarks_bar_same_color_as_toolbar.css" "$out/"
cp -r "$out/EXTRA MODS/Search Bar Mods/Search box - No search engine buttons/no_search_engines_in_url_bar.css" "$out/"
''; '';
meta = with lib; { meta = with lib; {