Merge branch 'master' of github.com:pagedMov/nixos-config

This commit is contained in:
pagedMov
2024-11-02 11:11:07 -04:00
70 changed files with 3421 additions and 2812 deletions

View File

@@ -35,6 +35,11 @@ Currently there are two complete system configurations available. These are:
* **Mercury** - My laptop configuration. My laptop is a pretty weak machine so this configuration is stripped down a bit. * **Mercury** - My laptop configuration. My laptop is a pretty weak machine so this configuration is stripped down a bit.
The 'Xenon' config is my server configuration and is highly unlikely to be of use to anyone but me, as the setup has some very specific use-cases. The 'Xenon' config is my server configuration and is highly unlikely to be of use to anyone but me, as the setup has some very specific use-cases.
## Modules
This config uses custom modules for the home-manager and system configurations. Basically every part of the configuration can be toggled using an option, and some configs have extra options as well.
All of the options declared in these modules can be found in the documentation under docs/options
## Scripts ## Scripts
```chpaper``` - opens a fzf window with filenames and previews of images in $FLAKEPATH/assets/wallpapers. Picking one replaces the existing wallpaper path in $FLAKEPATH/flake.nix with the one you chose. ```chpaper``` - opens a fzf window with filenames and previews of images in $FLAKEPATH/assets/wallpapers. Picking one replaces the existing wallpaper path in $FLAKEPATH/flake.nix with the one you chose.

Binary file not shown.

View File

@@ -0,0 +1,230 @@
# Home-Manager Options
## homeFiles.enable
- Enables my declared files
- Type: Boolean
- Default: true
- Defined in 'modules/home/files/neofetch.nix'
## hyprlandConfig.enable
- Enables my custom hyprland configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/environment/hyprland.nix'
## autojumpConfig.enable
- Enables my autojump options
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/autojump.nix'
## stylixHomeConfig.enable
- Enables my stylix home-manager options
- Type: Boolean
- Default: true
- Defined in 'modules/home/environment/stylix.nix'
## waybarConfig.enable
- Enables my custom waybar configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/environment/waybar.nix'
## gtkConfig.enable
- Enables my gtk configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/environment/gtk.nix'
## spicetifyConfig.enable
- Enables my spicetify configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/environment/spicetify.nix'
## starshipConfig.enable
- Enables my starship configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/environment/starship.nix'
## btopConfig.enable
- Enables my btop configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/btop.nix'
## swayncConfig.enable
- Enables my swaync configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/environment/swaync.nix'
## userPkgs.enable
- Enables my default user packages
- Type: Boolean
- Default: true
- Defined in 'modules/home/environment/userpkgs.nix'
## cavaConfig.enable
- Enables my cava configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/cava.nix'
## ezaConfig.enable
- Enables my eza configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/eza.nix'
## firefoxConfig.enable
- Enables my firefox configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/firefox.nix'
## fuzzelConfig.enable
- Enables my fuzzel configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/fuzzel.nix'
## fzfConfig.enable
- Enables my fzf configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/fzf.nix'
## gitConfig.enable
- Enables my git configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/git.nix'
## kittyConfig.enable
- Enables my kitty configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/kitty.nix'
## yaziConfig.enable
- Enables my yazi configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/yazi.nix'
## zshConfig.enable
- Enables my zsh configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/environment/zshell.nix'
## passConfig.enable
- Enables my password-store configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/password-store.nix'
## batConfig.enable
- Enables my bat configuration
- Type: Boolean
- Default: true
- Defined in 'modules/home/programs/bat.nix'
## movScripts.enable
- Enables my custom script binaries
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
## movScripts.commandScripts
### enable
- Enables my custom command scripts
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### invoke.enable
- Enables the invoke command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### runbg.enable
- Enables the runbg command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### splash.enable
- Enables the splash command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### toolbelt.enable
- Enables the toolbelt command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### viconf.enable
- Enables the viconf command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
## movScripts.hyprlandControls
### enable
- Enables my hyprland control shortcut scripts
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### chpaper.enable
- Enables the chpaper command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### scheck.enable
- Enables the scheck command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### chscheme.enable
- Enables the chscheme command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### keyring.enable
- Enables the keyring command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### moveonscreen.enable
- Enables the moveonscreen command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### switchmon.enable
- Enables the switchmon command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
## movScripts.nixShortcuts
### enable
- Enables my NixOS aliases
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### garbage-collect.enable
- Enables the garbage-collect command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### nsp.enable
- Enables the nsp command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'
### rebuild.enable
- Enables the rebuild command
- Type: Boolean
- Default: true
- Defined in 'modules/home/scripts/default.nix'

View File

@@ -0,0 +1,79 @@
# System Options
## networkModule.enable
- Enables my network configuration
- Type: Boolean
- Default: false
- Defined in 'modules/sys/hardware/network.nix'
## nixSettings.enable
- Enables my NixOS settings
- Type: Boolean
- Default: false
- Defined in 'modules/sys/environment/nix.nix'
## bootLoader.enable
- Enables my bootloader settings
- Type: Boolean
- Default: false
- Defined in 'modules/sys/hardware/bootloader.nix'
## issue.enable
- Enables my custom /etc/issue tty splash screen
- Type: Boolean
- Default: false
- Defined in 'modules/sys/environment/issue.nix'
## sddmConfig.enable
- Enables my catppuccin-sddm configuration
- Type: Boolean
- Default: false
- Defined in 'modules/sys/environment/sddm.nix'
## stylixConfig.enable
- Enables stylix for system theming
- Type: Boolean
- Default: false
- Defined in 'modules/sys/environment/stylix.nix'
## gamingPkgs.enable
- Enables gaming-related packages
- Type: Boolean
- Default: false
- Defined in 'modules/sys/software/gaming/gaming_pkgs.nix'
## steamConfig.enable
- Enables my Steam configuration
- Type: Boolean
- Default: false
- Defined in 'modules/sys/software/gaming/steam.nix'
## sysPkgs.enable
- Installs my default system packages
- Type: Boolean
- Default: false
- Defined in 'modules/sys/software/packages.nix'
## sysProgs.enable
- Enables
- Type: Boolean
- Default: false
- Defined in 'modules/sys/software/programs.nix'
## sysServices.enable
- Description
- Type: Boolean
- Default: false
- Defined in 'modules/sys/software/services.nix'
## virtConfig.enable
- Description
- Type: Boolean
- Default: false
- Defined in 'modules/sys/software/virtualization.nix'
## powerProfiles.enable
- Description
- Type: Boolean
- Default: false
- Defined in 'modules/sys/hardware/powerprofiles.nix'

32
flake.lock generated
View File

@@ -356,11 +356,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1730016908, "lastModified": 1730490306,
"narHash": "sha256-bFCxJco7d8IgmjfNExNz9knP8wvwbXU4s/d53KOK6U0=", "narHash": "sha256-AvCVDswOUM9D368HxYD25RsSKp+5o0L0/JHADjLoD38=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e83414058edd339148dc142a8437edb9450574c8", "rev": "1743615b61c7285976f85b303a36cdf88a556503",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -472,11 +472,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1730373668, "lastModified": 1730499652,
"narHash": "sha256-8p5JTUGFuhnyuF9lD98ioeE3zYaCmsizLWk4Y3KszAI=", "narHash": "sha256-De3YRKpowtm15xN7hK0PdBpu96wwSyQE+qFoq9Gi6lM=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "93b4478e70af6ffb08a4a66a6d0364c3296db296", "rev": "32b18179dd789cde948c97eb3c2ebbdd6af36bf7",
"revCount": 5396, "revCount": 5402,
"submodules": true, "submodules": true,
"type": "git", "type": "git",
"url": "https://github.com/hyprwm/Hyprland" "url": "https://github.com/hyprwm/Hyprland"
@@ -822,11 +822,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1730368298, "lastModified": 1730499477,
"narHash": "sha256-5z4pDqRSSovXPPtN1BNEJOkGoCd/XSYuCWh8AsvoTio=", "narHash": "sha256-olt0Sx4alDxv3ko9BgbV3SsE2KQ/Tf0/Az1Fr9s2Y6U=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "42ea1626cb002fa759a6b1e2841bfc80a4e59615", "rev": "356896f58dde22ee16481b7c954e340dceec340d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -837,11 +837,11 @@
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1730411166, "lastModified": 1730540878,
"narHash": "sha256-o1JcjEnWhnxkkKXYN1gQeO53RUsQExFsgMOJ/FzuFX0=", "narHash": "sha256-JYfoVW5lsfv4bo87U6mqbC3Jh+EBImU5iUsHJlOkyAI=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "761c6a7d6859126681d206126ba26ec58306d068", "rev": "57df81c2bcabc503171defb232a0e11710ddaaf9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -918,11 +918,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1730348281, "lastModified": 1730521028,
"narHash": "sha256-c5lP7JFqWlrEScvPXKxg7Z2+f5wdlznYZPjEa5jmEkw=", "narHash": "sha256-vZtg4J+jOADDKgS+s821PeJiTXfawan8mzX3JM3xjqc=",
"owner": "gerg-l", "owner": "gerg-l",
"repo": "spicetify-nix", "repo": "spicetify-nix",
"rev": "22d250d6a4dcc492a2d8836d3f2c901a09e7cb76", "rev": "191323d81e19efa0be5071e17263851e62f35685",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -67,6 +67,8 @@
) {} ) {}
colors; colors;
in { in {
homeManagerModules.default = ./modules/home;
nixosConfigurations = { nixosConfigurations = {
oganesson = nixpkgs.lib.nixosSystem { oganesson = nixpkgs.lib.nixosSystem {
specialArgs = { specialArgs = {
@@ -75,7 +77,8 @@
}; };
inherit system; inherit system;
modules = [ modules = [
./hosts/desktop ./hosts/desktop/config.nix
./modules/sys
stylix.nixosModules.stylix stylix.nixosModules.stylix
nixvim.nixosModules.nixvim nixvim.nixosModules.nixvim
nur.nixosModules.nur nur.nixosModules.nur
@@ -88,7 +91,8 @@
inherit self inputs scheme wallpaper username; inherit self inputs scheme wallpaper username;
}; };
modules = [ modules = [
./hosts/laptop ./hosts/laptop/config.nix
./modules/sys
stylix.nixosModules.stylix stylix.nixosModules.stylix
nixvim.nixosModules.nixvim nixvim.nixosModules.nixvim
nur.nixosModules.nur nur.nixosModules.nur
@@ -102,6 +106,7 @@
}; };
modules = [ modules = [
./hosts/server ./hosts/server
./modules
stylix.nixosModules.stylix stylix.nixosModules.stylix
nixvim.nixosModules.nixvim nixvim.nixosModules.nixvim
nur.nixosModules.nur nur.nixosModules.nur

View File

@@ -1,6 +1,25 @@
{pkgs, ...}: { {pkgs, ...}: {
system.stateVersion = "24.05"; system.stateVersion = "24.05";
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
imports = [
./hardware.nix
./home.nix
];
# My module options
networkModule.enable = true;
nixSettings.enable = true;
bootLoader.enable = true;
issue.enable = true;
sddmConfig.enable = true;
stylixConfig.enable = true;
gamingPkgs.enable = true;
steamConfig.enable = true;
sysPkgs.enable = true;
sysProgs.enable = true;
sysServices.enable = true;
virtConfig.enable = true;
nix = { nix = {
settings = { settings = {
auto-optimise-store = true; auto-optimise-store = true;

View File

@@ -1,15 +0,0 @@
{
host,
inputs,
username,
nur,
pkgs,
self,
...
}: {
imports = [
./../../modules/sys/configuration.nix
./hardware.nix
./settings.nix
];
}

96
hosts/desktop/home.nix Normal file
View File

@@ -0,0 +1,96 @@
{
host,
pkgs,
self,
inputs,
username,
wallpaper,
lib,
scheme,
config,
...
}: let
nur = config.nur;
in {
imports = [inputs.home-manager.nixosModules.home-manager];
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
backupFileExtension = "backup";
extraSpecialArgs = {inherit self inputs host wallpaper scheme username nur;};
users = {
${username} = {
programs.home-manager.enable = true;
imports = [
inputs.spicetify-nix.homeManagerModules.default
inputs.self.outputs.homeManagerModules.default
];
# My custom home-manager modules
# modules/home/files
homeFiles.enable = true;
# modules/home/environment
hyprlandConfig.enable = true;
autojumpConfig.enable = true;
stylixHomeConfig.enable = true;
waybarConfig.enable = true;
gtkConfig.enable = true;
spicetifyConfig.enable = true;
starshipConfig.enable = true;
# modules/home/programs
btopConfig.enable = true;
swayncConfig.enable = true;
userPkgs.enable = true;
cavaConfig.enable = true;
ezaConfig.enable = true;
firefoxConfig.enable = true;
fuzzelConfig.enable = true;
fzfConfig.enable = true;
gitConfig.enable = true;
kittyConfig.enable = true;
yaziConfig.enable = true;
zshConfig.enable = true;
passConfig.enable = true;
batConfig.enable = true;
# modules/home/scripts
movScripts.enable = true;
movScripts.commandScripts.enable = true;
movScripts.hyprlandControls.enable = true;
movScripts.nixShortcuts.enable = true;
dconf.settings = lib.mkIf config.virtConfig.enable {
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];
};
};
home = {
username = "${username}";
homeDirectory = "/home/${username}";
stateVersion = "24.05";
};
};
};
};
users = {
groups.persist = {};
users = {
root.initialPassword = "1234";
${username} = {
isNormalUser = true;
initialPassword = "1234";
shell = pkgs.zsh;
extraGroups = ["wheel" "persist" "libvirtd"];
};
};
};
security.sudo.extraConfig = ''
${username} ALL=(ALL) NOPASSWD: /etc/profiles/per-user/${username}/bin/rebuild
'';
nix.settings.allowed-users = ["${username}"];
}

View File

@@ -1,15 +0,0 @@
{
config,
pkgs,
...
}: {
boot = {
kernelModules = ["acpi_call"];
extraModulePackages = with config.boot.kernelPackages;
[
acpi_call
cpupower
]
++ [pkgs.cpupower-gui];
};
}

47
hosts/laptop/config.nix Normal file
View File

@@ -0,0 +1,47 @@
{pkgs, config, ...}: {
system.stateVersion = "24.05";
nixpkgs.config.allowUnfree = true;
imports = [
./hardware.nix
./home.nix
];
powerProfiles.enable = true;
boot = {
kernelModules = ["acpi_call"];
extraModulePackages = with config.boot.kernelPackages;
[
acpi_call
cpupower
]
++ [pkgs.cpupower-gui];
};
networkModule.enable = true;
nixSettings.enable = true;
bootLoader.enable = true;
issue.enable = true;
sddmConfig.enable = true;
stylixConfig.enable = true;
sysPkgs.enable = true;
sysProgs.enable = true;
sysServices.enable = true;
environment = {
variables = {
PATH = "${pkgs.clang-tools}/bin:$PATH";
};
shells = with pkgs; [
zsh
bash
];
systemPackages = with pkgs; [
acpi
brightnessctl
cpupower-gui
powertop
];
};
}

View File

@@ -1,18 +0,0 @@
{
host,
inputs,
pkgs,
config,
self,
username,
...
}: {
imports = [
./../../modules/sys/configuration.nix
./hardware.nix
./boot.nix
./services.nix
./environment.nix
./settings.nix
];
}

View File

@@ -1,17 +0,0 @@
{pkgs, ...}: {
environment = {
variables = {
PATH = "${pkgs.clang-tools}/bin:$PATH";
};
shells = with pkgs; [
zsh
bash
];
systemPackages = with pkgs; [
acpi
brightnessctl
cpupower-gui
powertop
];
};
}

View File

@@ -1,53 +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 = ["nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-partlabel/disk-main-root";
fsType = "ext4";
};
fileSystems."/nix" = {
device = "/dev/disk/by-partlabel/disk-main-nix";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-partlabel/disk-main-ESP";
fsType = "vfat";
options = ["fmask=0077" "dmask=0077"];
};
fileSystems."/home" = {
device = "/dev/disk/by-partlabel/disk-main-home";
fsType = "ext4";
};
swapDevices = [];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp14s0.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp15s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

96
hosts/laptop/home.nix Normal file
View File

@@ -0,0 +1,96 @@
{
host,
pkgs,
self,
inputs,
username,
wallpaper,
lib,
scheme,
config,
...
}: let
nur = config.nur;
in {
imports = [inputs.home-manager.nixosModules.home-manager];
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
backupFileExtension = "backup";
extraSpecialArgs = {inherit self inputs host wallpaper scheme username nur;};
users = {
${username} = {
programs.home-manager.enable = true;
imports = [
inputs.spicetify-nix.homeManagerModules.default
inputs.self.outputs.homeManagerModules.default
];
# My custom home-manager modules
# modules/home/files
homeFiles.enable = true;
# modules/home/environment
hyprlandConfig.enable = true;
autojumpConfig.enable = true;
stylixHomeConfig.enable = true;
waybarConfig.enable = true;
gtkConfig.enable = true;
spicetifyConfig.enable = true;
starshipConfig.enable = true;
# modules/home/programs
btopConfig.enable = true;
swayncConfig.enable = true;
userPkgs.enable = true;
cavaConfig.enable = true;
ezaConfig.enable = true;
firefoxConfig.enable = true;
fuzzelConfig.enable = true;
fzfConfig.enable = true;
gitConfig.enable = true;
kittyConfig.enable = true;
yaziConfig.enable = true;
zshConfig.enable = true;
passConfig.enable = true;
batConfig.enable = true;
# modules/home/scripts
movScripts.enable = true;
movScripts.commandScripts.enable = true;
movScripts.hyprlandControls.enable = true;
movScripts.nixShortcuts.enable = true;
dconf.settings = lib.mkIf config.virtConfig.enable {
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];
};
};
home = {
username = "${username}";
homeDirectory = "/home/${username}";
stateVersion = "24.05";
};
};
};
};
users = {
groups.persist = {};
users = {
root.initialPassword = "1234";
${username} = {
isNormalUser = true;
initialPassword = "1234";
shell = pkgs.zsh;
extraGroups = ["wheel" "persist" "libvirtd"];
};
};
};
security.sudo.extraConfig = ''
${username} ALL=(ALL) NOPASSWD: /etc/profiles/per-user/${username}/bin/rebuild
'';
nix.settings.allowed-users = ["${username}"];
}

View File

@@ -1,47 +0,0 @@
{...}: {
services = {
keyd = {
enable = true;
keyboards.default = {
ids = ["*"];
settings.main = {
capslock = "esc";
};
};
};
power-profiles-daemon.enable = true;
upower = {
enable = true;
percentageLow = 20;
percentageCritical = 5;
percentageAction = 3;
criticalPowerAction = "PowerOff";
};
tlp.settings = {
CPU_ENERGY_PERF_POLICY_ON_AC = "power";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
CPU_BOOST_ON_AC = 1;
CPU_BOOST_ON_BAT = 1;
CPU_HWP_DYN_BOOST_ON_AC = 1;
CPU_HWP_DYN_BOOST_ON_BAT = 1;
PLATFORM_PROFILE_ON_AC = "performance";
PLATFORM_PROFILE_ON_BAT = "performance";
INTEL_GPU_MIN_FREQ_ON_AC = 500;
INTEL_GPU_MIN_FREQ_ON_BAT = 500;
# INTEL_GPU_MAX_FREQ_ON_AC=0;
# INTEL_GPU_MAX_FREQ_ON_BAT=0;
# INTEL_GPU_BOOST_FREQ_ON_AC=0;
# INTEL_GPU_BOOST_FREQ_ON_BAT=0;
PCIE_ASPM_ON_AC = "default";
PCIE_ASPM_ON_BAT = "powersupersave";
};
};
}

View File

@@ -1,21 +0,0 @@
{...}: {
system.stateVersion = "24.05";
nixpkgs.config.allowUnfree = true;
nix = {
settings = {
auto-optimise-store = true;
experimental-features = ["nix-command" "flakes"];
substituters = ["https://nix-gaming.cachix.org"];
};
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
};
time.timeZone = "America/New_York";
i18n.defaultLocale = "en_US.UTF-8";
powerManagement.cpuFreqGovernor = "performance";
}

51
modules/home/default.nix Normal file
View File

@@ -0,0 +1,51 @@
{
inputs,
nixpkgs,
config,
self,
username,
host,
lib,
...
}: {
imports = [
./programs
./environment
./scripts
./files.nix
];
# ./files
homeFiles.enable = lib.mkDefault false;
# ./environment
hyprlandConfig.enable = lib.mkDefault false;
autojumpConfig.enable = lib.mkDefault false;
stylixHomeConfig.enable = lib.mkDefault false;
waybarConfig.enable = lib.mkDefault false;
gtkConfig.enable = lib.mkDefault false;
spicetifyConfig.enable = lib.mkDefault false;
starshipConfig.enable = lib.mkDefault false;
# ./programs
btopConfig.enable = lib.mkDefault false;
swayncConfig.enable = lib.mkDefault false;
userPkgs.enable = lib.mkDefault false;
cavaConfig.enable = lib.mkDefault false;
ezaConfig.enable = lib.mkDefault false;
firefoxConfig.enable = lib.mkDefault false;
fuzzelConfig.enable = lib.mkDefault false;
fzfConfig.enable = lib.mkDefault false;
gitConfig.enable = lib.mkDefault false;
kittyConfig.enable = lib.mkDefault false;
yaziConfig.enable = lib.mkDefault false;
zshConfig.enable = lib.mkDefault false;
passConfig.enable = lib.mkDefault false;
batConfig.enable = lib.mkDefault false;
# ./scripts
movScripts.enable = lib.mkDefault false;
movScripts.commandScripts.enable = lib.mkDefault false;
movScripts.hyprlandControls.enable = lib.mkDefault false;
movScripts.nixShortcuts.enable = lib.mkDefault false;
}

View File

@@ -9,14 +9,15 @@
home-manager, home-manager,
... ...
}: { }: {
imports = imports = [
[(import ./gtk.nix)] ./gtk.nix
++ [(import ./spicetify.nix)] ./spicetify.nix
++ [(import ./stylix.nix)] ./stylix.nix
++ [(import ./starship.nix)] ./starship.nix
++ [(import ./userpkgs.nix)] ./userpkgs.nix
++ [(import ./zshell.nix)] ./zshell.nix
++ [(import ./swaync.nix)] ./swaync.nix
++ [(import ./waybar)] ./hyprland.nix
++ [(import ./hyprland)]; ./waybar.nix
];
} }

View File

@@ -1,35 +1,36 @@
{ {lib, config, pkgs, ... }: {
pkgs, options = {
config, gtkConfig.enable = lib.mkEnableOption "enable my gtk options";
... };
}: { config = lib.mkIf config.gtkConfig.enable {
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
home.packages = with pkgs; [ home.packages = with pkgs; [
(nerdfonts.override { (nerdfonts.override {
fonts = [ fonts = [
"JetBrainsMono" "JetBrainsMono"
"CascadiaCode" "CascadiaCode"
"NerdFontsSymbolsOnly" "NerdFontsSymbolsOnly"
]; ];
}) })
]; ];
gtk = { gtk = {
enable = true; enable = true;
iconTheme = { iconTheme = {
name = "Papirus-Dark"; name = "Papirus-Dark";
package = pkgs.papirus-nord.override { package = pkgs.papirus-nord.override {
accent = "frostblue4"; accent = "frostblue4";
};
}; };
#cursorTheme = {
# name = "Bibata-Modern-Ice";
# package = pkgs.bibata-cursors;
# size = 16;
#};
#font = {
# name = "Iosevka Nerd Font";
# package = pkgs.nerdfonts.override {fonts = ["Iosevka"];};
#};
}; };
#cursorTheme = {
# name = "Bibata-Modern-Ice";
# package = pkgs.bibata-cursors;
# size = 16;
#};
#font = {
# name = "Iosevka Nerd Font";
# package = pkgs.nerdfonts.override {fonts = ["Iosevka"];};
#};
}; };
} }

View File

@@ -0,0 +1,242 @@
{inputs, pkgs, lib, config, username, host, ... }: let
desktop = host == "oganesson";
screenshot_bind =
if desktop
then [
# My laptop does not have a printscreen button
"super, print, exec, grimblast copy area"
]
else [
"super, insert, exec, grimblast copy area"
];
in {
options = {
hyprlandConfig.enable = lib.mkEnableOption "enables my hyprland config";
};
config = lib.mkIf config.hyprlandConfig.enable {
home.packages = with pkgs; [
swaybg
inputs.hypr-contrib.packages.${pkgs.system}.grimblast
hyprpicker
grim
slurp
wl-clip-persist
wf-recorder
glib
wayland
direnv
];
systemd.user.targets.hyprland-session.Unit.Wants = ["xdg-desktop-autostart.target"];
wayland.windowManager.hyprland = {
enable = true;
xwayland = {
enable = true;
};
systemd.enable = true;
};
wayland.windowManager.hyprland = {
settings = {
monitor =
if (host == "oganesson")
then [
"DP-1, 1920x1080@144, 1920x0, 1"
"HDMI-A-1, 1920x1080, 0x0, 1"
]
else [
"eDP-1, 1600x900, 0x0, 1"
];
exec-once = [
"waybar &"
"swaync &"
"wl-paste --type text --watch cliphist store &"
"wl-paste --type image --watch cliphist store &"
"wl-clip-persist --clipboard both"
"systemctl --user import-environment &"
"hash dbus-update-activation-environment 2>/dev/null &"
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &"
"aplay /home/${username}/sound/sys/login.wav &"
];
workspace =
if desktop
then [
"1,persistent=true,monitor:HDMI-A-1"
"2,persistent=true,monitor:HDMI-A-1"
"3,persistent=true,monitor:HDMI-A-1"
"4,persistent=true,monitor:DP-1"
"5,persistent=true,monitor:DP-1"
"6,persistent=true,monitor:DP-1"
]
else [
"1,persistent=true,monitor:eDP-1"
"2,persistent=true,monitor:eDP-1"
"3,persistent=true,monitor:eDP-1"
"4,persistent=true,monitor:eDP-1"
];
env = [
"XDG_CONFIG_HOME,$HOME/.config"
"XDG_DATA_HOME,$HOME/.local/share"
"XDG_CACHE_HOME,$HOME/.cache"
];
layerrule = [
"blur,waybar"
"ignorezero,waybar"
"blur,launcher"
];
windowrule = [
"opacity 0.8,nemo"
];
input = {
kb_layout = "us";
follow_mouse = 1;
accel_profile = "flat";
force_no_accel = 1;
sensitivity = 0;
};
general = {
"$mainMod" = "super";
layout = "dwindle";
gaps_in = 4;
gaps_out = 8;
border_size = 2;
#"col.inactive_border" = "0xff${scheme.base01}";
#"col.active_border" = "0xff${scheme.base0F}";
border_part_of_window = false;
no_border_on_floating = false;
};
misc = {
disable_autoreload = true;
disable_hyprland_logo = true;
always_follow_on_dnd = true;
layers_hog_keyboard_focus = true;
animate_manual_resizes = false;
enable_swallow = true;
focus_on_activate = true;
};
dwindle = {
no_gaps_when_only = false;
force_split = 0;
special_scale_factor = 1.0;
split_width_multiplier = 1.0;
use_active_for_splits = true;
pseudotile = "yes";
preserve_split = "yes";
};
master = {
new_status = "master";
special_scale_factor = 1;
no_gaps_when_only = false;
};
decoration = {
rounding = 7;
# active_opacity = 0.90;
# inactive_opacity = 0.90;
# fullscreen_opacity = 1.0;
blur = {
enabled = true;
# size = 1;
# passes = 1;
size = 4;
passes = 1;
brightness = 1;
contrast = 1.400;
ignore_opacity = true;
popups = true;
noise = 0;
new_optimizations = true;
xray = true;
};
drop_shadow = true;
shadow_ignore_window = true;
shadow_offset = "0 2";
shadow_range = 20;
shadow_render_power = 3;
};
animations = {
enabled = true;
bezier = [
"fluent_decel, 0, 0.2, 0.4, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutCubic, 0.33, 1, 0.68, 1"
"easeinoutsine, 0.37, 0, 0.63, 1"
];
animation = [
# Windows
"windowsIn, 1, 3, easeOutCubic, popin 30%" # window open
"windowsOut, 1, 3, fluent_decel, popin 70%" # window close.
"windowsMove, 1, 2, easeinoutsine, slide" # everything in between, moving, dragging, resizing.
# Fade
"fadeIn, 1, 3, easeOutCubic" # fade in (open) -> layers and windows
"fadeOut, 1, 2, easeOutCubic" # fade out (close) -> layers and windows
"fadeSwitch, 0, 1, easeOutCirc" # fade on changing activewindow and its opacity
"fadeShadow, 1, 10, easeOutCirc" # fade on changing activewindow for shadows
"fadeDim, 1, 4, fluent_decel" # the easing of the dimming of inactive windows
"border, 1, 2.7, easeOutCirc" # for animating the border's color switch speed
"borderangle, 1, 30, fluent_decel, once" # for animating the border's gradient angle - styles: once (default), loop
"workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert
];
bind =
[
"super, up, exec, pactl set-sink-volume @default_sink@ +10%"
"super, down, exec, pactl set-sink-volume @default_sink@ -10%"
"super, t, exec, swaync-client -t -sw"
"super, a, exec, firefox"
"super, q, exec, kitty --title Kitty"
"super shift, q, exec, [float;size 40% 30%;move onscreen cursor -50% -50%] kitty --title Kitty"
"super, c, killactive,"
"super, e, exec, nemo"
"super, p, exec, [float;size 40% 25%;move onscreen cursor] [ ! -f /tmp/keyringfile ] && kitty toolbelt"
"super shift, m, exit,"
"super, m, exec, fuzzel"
"super, r, exec, neovide"
"super, b, togglesplit, # dwindle"
"super, f, togglefloating"
"super, g, fullscreen"
"super, h, movefocus, l"
"super, l, movefocus, r"
"super, k, movefocus, u"
"super, j, movefocus, d"
"super shift, h, movewindow, l"
"super shift, l, movewindow, r"
"super shift, k, movewindow, u"
"super shift, j, movewindow, d"
"super, d, exec, switchmon"
"super, 1, exec, hyprctl 'dispatch workspace 1'"
"super, 2, exec, hyprctl 'dispatch workspace 2'"
"super, 3, exec, hyprctl 'dispatch workspace 3'"
"super, 4, exec, hyprctl 'dispatch workspace 4'"
"super, 5, exec, hyprctl 'dispatch workspace 5'"
"super, 6, exec, hyprctl 'dispatch workspace 6'"
"super shift, 1, movetoworkspace, 1"
"super shift, 2, movetoworkspace, 2"
"super shift, 3, movetoworkspace, 3"
"super shift, 4, movetoworkspace, 4"
"super shift, 5, movetoworkspace, 5"
"super shift, 6, movetoworkspace, 6"
"super, s, togglespecialworkspace, magic"
"super shift, s, movetoworkspace, special:magic"
]
++ screenshot_bind;
bindm = [
"super, mouse:272, movewindow"
"super, mouse:273, resizewindow"
];
};
};
};
};
}

View File

@@ -1,221 +0,0 @@
{
username,
host,
...
}: let
desktop = host == "oganesson";
screenshot_bind =
if desktop
then [
# My laptop does not have a printscreen button
"super, print, exec, grimblast copy area"
]
else [
"super, insert, exec, grimblast copy area"
];
in {
wayland.windowManager.hyprland = {
settings = {
monitor =
if (host == "oganesson")
then [
"DP-1, 1920x1080@144, 1920x0, 1"
"HDMI-A-1, 1920x1080, 0x0, 1"
]
else [
"eDP-1, 1600x900, 0x0, 1"
];
exec-once = [
"waybar &"
"swaync &"
"wl-paste --type text --watch cliphist store &"
"wl-paste --type image --watch cliphist store &"
"wl-clip-persist --clipboard both"
"systemctl --user import-environment &"
"hash dbus-update-activation-environment 2>/dev/null &"
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP &"
"aplay /home/${username}/sound/sys/login.wav &"
];
workspace =
if desktop
then [
"1,persistent=true,monitor:HDMI-A-1"
"2,persistent=true,monitor:HDMI-A-1"
"3,persistent=true,monitor:HDMI-A-1"
"4,persistent=true,monitor:DP-1"
"5,persistent=true,monitor:DP-1"
"6,persistent=true,monitor:DP-1"
]
else [
"1,persistent=true,monitor:eDP-1"
"2,persistent=true,monitor:eDP-1"
"3,persistent=true,monitor:eDP-1"
"4,persistent=true,monitor:eDP-1"
];
env = [
"XDG_CONFIG_HOME,$HOME/.config"
"XDG_DATA_HOME,$HOME/.local/share"
"XDG_CACHE_HOME,$HOME/.cache"
];
layerrule = [
"blur,waybar"
"ignorezero,waybar"
"blur,launcher"
];
windowrule = [
"opacity 0.8,nemo"
];
input = {
kb_layout = "us";
follow_mouse = 1;
accel_profile = "flat";
force_no_accel = 1;
sensitivity = 0;
};
general = {
"$mainMod" = "super";
layout = "dwindle";
gaps_in = 4;
gaps_out = 8;
border_size = 2;
#"col.inactive_border" = "0xff${scheme.base01}";
#"col.active_border" = "0xff${scheme.base0F}";
border_part_of_window = false;
no_border_on_floating = false;
};
misc = {
disable_autoreload = true;
disable_hyprland_logo = true;
always_follow_on_dnd = true;
layers_hog_keyboard_focus = true;
animate_manual_resizes = false;
enable_swallow = true;
focus_on_activate = true;
};
dwindle = {
no_gaps_when_only = false;
force_split = 0;
special_scale_factor = 1.0;
split_width_multiplier = 1.0;
use_active_for_splits = true;
pseudotile = "yes";
preserve_split = "yes";
};
master = {
new_status = "master";
special_scale_factor = 1;
no_gaps_when_only = false;
};
decoration = {
rounding = 7;
# active_opacity = 0.90;
# inactive_opacity = 0.90;
# fullscreen_opacity = 1.0;
blur = {
enabled = true;
# size = 1;
# passes = 1;
size = 4;
passes = 1;
brightness = 1;
contrast = 1.400;
ignore_opacity = true;
popups = true;
noise = 0;
new_optimizations = true;
xray = true;
};
drop_shadow = true;
shadow_ignore_window = true;
shadow_offset = "0 2";
shadow_range = 20;
shadow_render_power = 3;
};
animations = {
enabled = true;
bezier = [
"fluent_decel, 0, 0.2, 0.4, 1"
"easeOutCirc, 0, 0.55, 0.45, 1"
"easeOutCubic, 0.33, 1, 0.68, 1"
"easeinoutsine, 0.37, 0, 0.63, 1"
];
animation = [
# Windows
"windowsIn, 1, 3, easeOutCubic, popin 30%" # window open
"windowsOut, 1, 3, fluent_decel, popin 70%" # window close.
"windowsMove, 1, 2, easeinoutsine, slide" # everything in between, moving, dragging, resizing.
# Fade
"fadeIn, 1, 3, easeOutCubic" # fade in (open) -> layers and windows
"fadeOut, 1, 2, easeOutCubic" # fade out (close) -> layers and windows
"fadeSwitch, 0, 1, easeOutCirc" # fade on changing activewindow and its opacity
"fadeShadow, 1, 10, easeOutCirc" # fade on changing activewindow for shadows
"fadeDim, 1, 4, fluent_decel" # the easing of the dimming of inactive windows
"border, 1, 2.7, easeOutCirc" # for animating the border's color switch speed
"borderangle, 1, 30, fluent_decel, once" # for animating the border's gradient angle - styles: once (default), loop
"workspaces, 1, 4, easeOutCubic, fade" # styles: slide, slidevert, fade, slidefade, slidefadevert
];
bind =
[
"super, up, exec, pactl set-sink-volume @default_sink@ +10%"
"super, down, exec, pactl set-sink-volume @default_sink@ -10%"
"super, t, exec, swaync-client -t -sw"
"super, a, exec, firefox"
"super, q, exec, kitty --title Kitty"
"super shift, q, exec, [float;size 40% 30%;move onscreen cursor -50% -50%] kitty --title Kitty"
"super, c, killactive,"
"super, e, exec, nemo"
"super, p, exec, [float;size 40% 25%;move onscreen cursor] [ ! -f /tmp/keyringfile ] && kitty toolbelt"
"super shift, m, exit,"
"super, m, exec, fuzzel"
"super, r, exec, neovide"
"super, b, togglesplit, # dwindle"
"super, f, togglefloating"
"super, g, fullscreen"
"super, h, movefocus, l"
"super, l, movefocus, r"
"super, k, movefocus, u"
"super, j, movefocus, d"
"super shift, h, movewindow, l"
"super shift, l, movewindow, r"
"super shift, k, movewindow, u"
"super shift, j, movewindow, d"
"super, d, exec, switchmon"
"super, 1, exec, hyprctl 'dispatch workspace 1'"
"super, 2, exec, hyprctl 'dispatch workspace 2'"
"super, 3, exec, hyprctl 'dispatch workspace 3'"
"super, 4, exec, hyprctl 'dispatch workspace 4'"
"super, 5, exec, hyprctl 'dispatch workspace 5'"
"super, 6, exec, hyprctl 'dispatch workspace 6'"
"super shift, 1, movetoworkspace, 1"
"super shift, 2, movetoworkspace, 2"
"super shift, 3, movetoworkspace, 3"
"super shift, 4, movetoworkspace, 4"
"super shift, 5, movetoworkspace, 5"
"super shift, 6, movetoworkspace, 6"
"super, s, togglespecialworkspace, magic"
"super shift, s, movetoworkspace, special:magic"
]
++ screenshot_bind;
bindm = [
"super, mouse:272, movewindow"
"super, mouse:273, resizewindow"
];
};
};
};
}

View File

@@ -1,9 +0,0 @@
{
inputs,
host,
...
}: {
imports =
[(import ./hyprland.nix)]
++ [(import ./config.nix)];
}

View File

@@ -1,26 +0,0 @@
{
inputs,
pkgs,
...
}: {
home.packages = with pkgs; [
swaybg
inputs.hypr-contrib.packages.${pkgs.system}.grimblast
hyprpicker
grim
slurp
wl-clip-persist
wf-recorder
glib
wayland
direnv
];
systemd.user.targets.hyprland-session.Unit.Wants = ["xdg-desktop-autostart.target"];
wayland.windowManager.hyprland = {
enable = true;
xwayland = {
enable = true;
};
systemd.enable = true;
};
}

View File

@@ -1,43 +1,40 @@
{ {lib, config, pkgs, inputs, scheme, ... }: let
pkgs,
lib,
inputs,
scheme,
...
}: let
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
in { in {
nixpkgs.config.allowUnfreePredicate = pkg: options = {
builtins.elem (lib.getName pkg) [ spicetifyConfig.enable = lib.mkEnableOption "enable my spicetify options";
"spotify" };
]; config = lib.mkIf config.spicetifyConfig.enable {
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [
"spotify"
];
imports = [inputs.spicetify-nix.homeManagerModules.default]; programs.spicetify = {
enable = true;
enabledExtensions = with spicePkgs.extensions; [
adblock
hidePodcasts
shuffle # shuffle+ (special characters are sanitized out of extension names)
];
#colorScheme = "custom";
programs.spicetify = { #customColorScheme = {
enable = true; # text = scheme.base06;
enabledExtensions = with spicePkgs.extensions; [ # subtext = scheme.base04;
adblock # sidebar-text = scheme.base04;
hidePodcasts # main = scheme.base00;
shuffle # shuffle+ (special characters are sanitized out of extension names) # sidebar = scheme.base01;
]; # shadow = scheme.base01;
#colorScheme = "custom"; # selected-row = scheme.base08;
# button = scheme.base0D;
#customColorScheme = { # button-active = scheme.base0C;
# text = scheme.base06; # button-disabled = scheme.base02;
# subtext = scheme.base04; # tab-active = scheme.base0E;
# sidebar-text = scheme.base04; # notification = scheme.base0A;
# main = scheme.base00; # notification-error = scheme.base09;
# sidebar = scheme.base01; # misc = scheme.base0F;
# shadow = scheme.base01; #};
# selected-row = scheme.base08; };
# button = scheme.base0D;
# button-active = scheme.base0C;
# button-disabled = scheme.base02;
# tab-active = scheme.base0E;
# notification = scheme.base0A;
# notification-error = scheme.base09;
# misc = scheme.base0F;
#};
}; };
} }

View File

@@ -1,64 +1,65 @@
{ {config, lib, inputs, ... }: {
lib, options = {
inputs, starshipConfig.enable = lib.mkEnableOption "enables my starship configuration";
... };
}: { config = lib.mkIf config.starshipConfig.enable {
programs.starship = { programs.starship = {
enable = true; enable = true;
enableZshIntegration = false; enableZshIntegration = false;
settings = { settings = {
add_newline = true; add_newline = true;
right_format = "($custom)"; right_format = "($custom)";
format = lib.concatStrings [ format = lib.concatStrings [
"($username)($ssh_symbol)($hostname)(bold white)($cmd_duration)($character)" "($ssh_symbol)($username)($hostname)(bold white)($cmd_duration)($character)"
"($git_branch)($git_status)($rust)($nix-shell)" "($git_branch)($git_status)($rust)($nix-shell)"
"($directory)" "($directory)"
"$line_break[ > ](bold #89b4fa)" "$line_break[ > ](bold #89b4fa)"
]; ];
username = { username = {
show_always = true; show_always = true;
style_user = "bold white"; style_user = "bold white";
format = "[$user]($style)"; format = "[$user]($style)";
}; };
directory = { directory = {
format = "\n[$path](bold cyan)[/](bold green) "; format = "\n[$path](bold cyan)[/](bold green) ";
style = "bold #b4befe"; style = "bold #b4befe";
}; };
character = { character = {
success_symbol = "[ -> ](bold green)"; success_symbol = "[ -> ](bold green)";
error_symbol = "[ -> ](bold red)"; error_symbol = "[ -> ](bold red)";
# error_symbol = "[ ](bold #89dceb)[ ✗](bold red)"; # error_symbol = "[ ](bold #89dceb)[ ✗](bold red)";
}; };
cmd_duration = { cmd_duration = {
format = "[ 󰔛 $duration]($style)"; format = "[ 󰔛 $duration]($style)";
disabled = false; disabled = false;
style = "bg:none fg:#f9e2af"; style = "bg:none fg:#f9e2af";
show_notifications = false; show_notifications = false;
min_time_to_notify = 60000; min_time_to_notify = 60000;
}; };
git_branch = { git_branch = {
format = "\non [$symbol$branch](bold purple)"; format = "\non [$symbol$branch](bold purple)";
symbol = " "; symbol = " ";
truncation_length = 15; truncation_length = 15;
style = "bold purple"; style = "bold purple";
}; };
hostname = { hostname = {
ssh_symbol = "🌐"; ssh_symbol = "🌐";
ssh_only = false; ssh_only = false;
format = "[$ssh_symbol](bold blue)[$hostname](bold red)"; format = "[@](bold blue)[$hostname](bold red)";
}; };
custom.shellver = { custom.shellver = {
command = "zsh --version"; command = "zsh --version";
when = ''test $SHELL = "/run/current-system/sw/bin/zsh"''; when = ''test $SHELL = "/run/current-system/sw/bin/zsh"'';
symbol = ""; symbol = "";
style = "bold magenta"; style = "bold magenta";
};
}; };
}; };
}; };

View File

@@ -1,18 +1,18 @@
{ {lib, config, pkgs, scheme, wallpaper, ... }: {
pkgs, options = {
scheme, stylixHomeConfig.enable = lib.mkEnableOption "enables my stylix Home-Manager options";
wallpaper, };
... config = lib.mkIf config.stylixHomeConfig.enable {
}: { stylix = {
stylix = { enable = true;
enable = true; autoEnable = true;
autoEnable = true; targets = {
targets = { # fzf.enable = true;
# fzf.enable = true; # kitty.enable = true;
# kitty.enable = true; # vesktop.enable = true;
# vesktop.enable = true; waybar.enable = false;
waybar.enable = false; btop.enable = false;
btop.enable = false; };
}; };
}; };
} }

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,4 @@
{ {lib, config, pkgs, host, ... }: let
pkgs,
host,
...
}: let
desktop = host == "oganesson"; desktop = host == "oganesson";
extraFigletFonts = pkgs.fetchFromGitHub { extraFigletFonts = pkgs.fetchFromGitHub {
owner = "xero"; owner = "xero";
@@ -32,35 +28,40 @@
] ]
else []; else [];
in { in {
home.packages = with pkgs; options = {
[ userPkgs.enable = lib.mkEnableOption "enables my default user packages";
chafa };
nemo config = lib.mkIf config.userPkgs.enable {
flavours home.packages = with pkgs;
ags [
sassc chafa
gtk3 nemo
sqlite flavours
gimp ags
imagemagick sassc
yt-dlp gtk3
vlc sqlite
lolcat gimp
speedtest-cli imagemagick
vesktop yt-dlp
qbittorrent vlc
neovide lolcat
zsh speedtest-cli
zsh-syntax-highlighting vesktop
zsh-history-substring-search qbittorrent
zsh-autosuggestions neovide
audacity zsh
rustup zsh-syntax-highlighting
libreoffice zsh-history-substring-search
gtrash zsh-autosuggestions
ripgrep audacity
toilet-extrafonts rustup
python3 libreoffice
] gtrash
++ desktop_pkgs; ripgrep
toilet-extrafonts
python3
]
++ desktop_pkgs;
};
} }

View File

@@ -0,0 +1,518 @@
{pkgs, scheme, host, lib, config, ...}:
let
desktop = host == "oganesson";
workspaces = {
format = "{icon}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
};
persistent-workspaces =
if desktop
then {
"HDMI-A-1" = [1 2 3];
"DP-1" = [4 5 6];
}
else {
"eDP-1" = [1 2 3 4];
};
};
bg = {
darkester = scheme.base00;
darkest = scheme.base01;
darker = scheme.base02;
dark = scheme.base03;
};
fg = {
lightester = scheme.base07;
lightest = scheme.base06;
lighter = scheme.base05;
light = scheme.base04;
};
colors = {
color0 = scheme.base08;
color1 = scheme.base09;
color2 = scheme.base0A;
color3 = scheme.base0B;
color4 = scheme.base0C;
color5 = scheme.base0D;
color6 = scheme.base0E;
color7 = scheme.base0F;
};
monitors =
if desktop
then [
"DP-1"
"HDMI-A-1"
]
else [
"eDP-1"
];
in {
options = {
waybarConfig.enable = lib.mkEnableOption "enables my waybar configuration";
};
config = {
programs.waybar = {
enable = true;
package = pkgs.waybar.overrideAttrs (oa: {
mesonFlags = (oa.mesonFlags or []) ++ ["-Dexperimental=true"];
});
settings = {
mainBar = {
layer = "bottom";
output = builtins.elemAt monitors 0;
position = "top";
name = "mainBar";
margin-left = 8;
margin-top = 5;
margin-right =
if desktop
then 8
else 5;
mode = "dock";
"gtk-layer-shell" = true;
modules-left = [
"hyprland/workspaces"
"cava"
];
modules-center = [
"hyprland/window"
];
modules-right = [
"group/hardware"
"clock"
"group/powerbtns"
];
"hyprland/workspaces" = workspaces;
cava = {
framerate = 30;
autosens = 1;
sensitivity = 1;
bars = 14;
lower_cutoff_freq = 50;
higher_cutoff_freq = 10000;
method = "pulse";
source = "auto";
hide_on_silence = true;
stereo = true;
reverse = true;
bar_delimiter = 0;
monstercat = false;
waves = false;
noise_reduction = 0.77;
input_delay = 2;
format-icons = ["" "" "" "" "" "" "" ""];
};
"group/hardware" = {
orientation = "inherit";
modules = [
"custom/disk-icon"
"memory"
"cpu"
];
};
"custom/disk-icon" = {
exec = ''
df /dev/disk/by-partlabel/disk-main-home /dev/disk/by-partlabel/disk-main-nix | awk '
function format(size) {
if (size >= 1024) return sprintf("%.1fTB", size / 1024)
else return sprintf("%.1fGB", size)
}
$6 == "/home" {
home_usage = $3 / 1024 / 1024
home_total = $2 / 1024 / 1024
home_percent = $5
sub(/%/,"",home_percent)
}
$6 == "/nix" {
nix_usage = $3 / 1024 / 1024
nix_total = $2 / 1024 / 1024
nix_percent = $5
}
END {
printf "{\"class\": \"disk-icon\", \"tooltip\": \"/home: %s / %s\\n/nix: %s / %s\", \"percentage\": \"%s\"}\n",
format(home_usage), format(home_total), format(nix_usage), format(nix_total), home_percent
}' | jq --unbuffered --compact-output
'';
interval = 60;
return-type = "json";
rotate = 270;
format = "{icon}";
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
};
memory = {
interval = 1;
rotate = 270;
format = "{icon}";
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
max-length = 10;
tooltip-format = "RAM: {used:0.1f} GB / {total:0.1f} GB";
};
cpu = {
interval = 1;
rotate = 270;
format = "{icon}";
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
tooltip-format = "CPU: {usage:0.1f}%";
};
"custom/power" = {
on-click = "shutdown now";
tooltip = false;
format = " ";
};
"custom/logout" = {
on-click = "hyprctl dispatch exit";
tooltip = false;
format = "󰗽 ";
};
"custom/reboot" = {
on-click = "reboot";
tooltip = false;
format = " ";
};
"group/powerbtns" = {
orientation = "horizontal";
drawer = {
transition-duration = 500;
children-class = "power-drawer";
transition-left-to-right = false;
};
modules = [
"custom/power"
"custom/logout"
"custom/reboot"
];
};
clock = {
format = "{:%I:%M %p}";
tooltip = false;
};
};
sideBar = {
layer = "bottom";
output =
if desktop
then builtins.elemAt monitors 1
else builtins.elemAt monitors 0;
position = "right";
margin-top = 8;
margin-right = 5;
margin-bottom = 8;
name = "sideBar";
mode = "dock";
"gtk-layer-shell" = true;
modules-left =
if desktop
then [
"hyprland/workspaces"
]
else [
"group/brightness"
"battery"
];
modules-center = [
];
modules-right = [
"network"
"group/audio"
];
"hyprland/workspaces" = workspaces;
"pulseaudio/slider" = {
orientation = "vertical";
};
"group/audio" = {
orientation = "vertical";
modules = [
"pulseaudio/slider"
"pulseaudio"
];
};
pulseaudio = {
format = "{icon}";
format-muted = " ";
format-icons = {
default = [
" "
" "
];
};
on-click = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
on-click-right = "hyprctl dispatch exec '[float;size 40% 55%] pavucontrol'";
};
network = {
interval = 30;
format-wifi = "󰖩 ";
tooltip-format-wifi = "{essid} ({signalStrength}%)";
format-ethernet = " ";
tooltip-format-ethernet = "{ifname}";
format-disconnected = "󰖪 ";
tooltip-format-disconnected = "Disconnected";
on-click = "hyprctl dispatch exec '[float;size 40% 55%] kitty nmtui'";
};
battery = {
bat = "BAT1";
interval = 1;
tooltip-format = "{capacity}%\nTil empty: {time}";
tooltip-format-charging = "{capacity}%\nTil full: {time}";
format = "{icon}";
format-icons = [
"󰁺"
"󰁻"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
format-charging = "󰂄";
};
"group/brightness" = {
orientation = "vertical";
modules = [
"backlight"
"backlight/slider"
];
};
backlight = {
format = "󰃠";
tooltip = "{percentage}%";
};
"backlight/slider" = {
min = 10;
max = 100;
orientation = "vertical";
rotate = 180;
};
};
};
style = ''
* {
border: none;
border-radius: 0;
font-size: 16px;
font-family: "JetBrains Mono Nerd Font";
}
window#waybar {
border-radius: 20px;
border: 3px solid #${colors.color7};
background: rgba(46,52,64,0.15);
margin: 20px;
}
window#waybar.empty #window {
background: none;
}
#workspaces {
margin: 3px;
background: #${bg.dark};
border-radius: 20px;
}
#workspaces button:hover {
border-radius: 20px;
}
#workspaces button.active {
background: #${fg.lightester};
border-radius: 20px;
color: #${bg.darkest};
}
#cava {
background: #${bg.dark};
border-radius: 20px;
margin: 3px 3px 3px 6px;
padding: 0px 15px 0px 15px;
color: #${colors.color6};
}
#window {
margin: 3px;
background: #${bg.dark};
border-radius: 20px;
padding: 0 15px 0 15px;
font-weight: bold;
}
#hardware {
margin: 3px;
padding: 0 10px 0 10px;
background: #${bg.dark};
border-radius: 20px;
}
#custom-disk-icon, #cpu, #memory {
margin-bottom: 4px;
font-size: 20px;
font-weight: bold;
}
#custom-disk-icon {
color: #${colors.color4};
}
#memory {
color: #${colors.color1};
}
#cpu {
color: #${colors.color3};
}
#clock {
font-weight: bold;
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 0 10px 0 10px;
font-size: 18px;
}
#powerbtns {
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 0 5px 0 10px;
}
#custom-power {
color: #${colors.color0};
font-size: 18px;
}
#custom-logout {
color: #${colors.color4};
font-size: 18px;
}
#custom-reboot {
color: #${colors.color2};
font-size: 18px;
}
#audio {
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 5px 0 10px 0;
}
#pulseaudio {
color: #${colors.color4};
font-size: 18px;
}
#backlight-slider slider,
#pulseaudio-slider slider {
background: #${colors.color4};
background-color: transparent;
box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
min-width: 9px;
min-height: 90px;
border-radius: 8px;
background: #343434;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
border-radius: 8px;
background-color: #2096C0;
}
#network {
color: #${colors.color3};
font-size: 20px;
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 5px 0 5px 6px;
}
#brightness {
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 10px 0px 5px 0;
}
#backlight {
color: #${colors.color2};
font-size: 18px;
padding: 0 4px 0 0;
}
#battery {
color: #${colors.color4};
font-size: 20px;
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 5px 0 5px 0px;
}
'';
};
};
}

View File

@@ -1,6 +0,0 @@
{...}: {
imports =
[(import ./waybar.nix)]
++ [(import ./settings.nix)]
++ [(import ./style.nix)];
}

View File

@@ -1,323 +0,0 @@
{host, ...}:
# Grocery list:
# Clock
# CPU/MEM meters
# Home folder and Nix store storage tracking?
# Workspaces (per monitor would be nice)
# A separate bar for both monitors
# secondary monitor will have a vertical bar on the left side
# Can contain more info with two bars
let
desktop = host == "oganesson";
workspaces = {
format = "{icon}";
format-icons = {
"1" = "";
"2" = "";
"3" = "";
"4" = "";
"5" = "";
"6" = "";
};
persistent-workspaces =
if desktop
then {
"HDMI-A-1" = [1 2 3];
"DP-1" = [4 5 6];
}
else {
"eDP-1" = [1 2 3 4];
};
};
monitors =
if desktop
then [
"DP-1"
"HDMI-A-1"
]
else [
"eDP-1"
];
in {
programs.waybar.settings.mainBar = {
layer = "bottom";
output = builtins.elemAt monitors 0;
position = "top";
name = "mainBar";
margin-left = 8;
margin-top = 5;
margin-right =
if desktop
then 8
else 5;
mode = "dock";
"gtk-layer-shell" = true;
modules-left = [
"hyprland/workspaces"
"cava"
];
modules-center = [
"hyprland/window"
];
modules-right = [
"group/hardware"
"clock"
"group/powerbtns"
];
"hyprland/workspaces" = workspaces;
cava = {
framerate = 30;
autosens = 1;
sensitivity = 1;
bars = 14;
lower_cutoff_freq = 50;
higher_cutoff_freq = 10000;
method = "pulse";
source = "auto";
hide_on_silence = true;
stereo = true;
reverse = true;
bar_delimiter = 0;
monstercat = false;
waves = false;
noise_reduction = 0.77;
input_delay = 2;
format-icons = ["" "" "" "" "" "" "" ""];
};
"group/hardware" = {
orientation = "inherit";
modules = [
"custom/disk-icon"
"memory"
"cpu"
];
};
"custom/disk-icon" = {
exec = ''
df /dev/disk/by-partlabel/disk-main-home /dev/disk/by-partlabel/disk-main-nix | awk '
function format(size) {
if (size >= 1024) return sprintf("%.1fTB", size / 1024)
else return sprintf("%.1fGB", size)
}
$6 == "/home" {
home_usage = $3 / 1024 / 1024
home_total = $2 / 1024 / 1024
home_percent = $5
sub(/%/,"",home_percent)
}
$6 == "/nix" {
nix_usage = $3 / 1024 / 1024
nix_total = $2 / 1024 / 1024
nix_percent = $5
}
END {
printf "{\"class\": \"disk-icon\", \"tooltip\": \"/home: %s / %s\\n/nix: %s / %s\", \"percentage\": \"%s\"}\n",
format(home_usage), format(home_total), format(nix_usage), format(nix_total), home_percent
}' | jq --unbuffered --compact-output
'';
interval = 60;
return-type = "json";
rotate = 270;
format = "{icon}";
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
};
memory = {
interval = 1;
rotate = 270;
format = "{icon}";
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
max-length = 10;
tooltip-format = "RAM: {used:0.1f} GB / {total:0.1f} GB";
};
cpu = {
interval = 1;
rotate = 270;
format = "{icon}";
format-icons = [
"󰝦"
"󰪞"
"󰪟"
"󰪠"
"󰪡"
"󰪢"
"󰪣"
"󰪤"
"󰪥"
];
tooltip-format = "CPU: {usage:0.1f}%";
};
"custom/power" = {
on-click = "shutdown now";
tooltip = false;
format = " ";
};
"custom/logout" = {
on-click = "hyprctl dispatch exit";
tooltip = false;
format = "󰗽 ";
};
"custom/reboot" = {
on-click = "reboot";
tooltip = false;
format = " ";
};
"group/powerbtns" = {
orientation = "horizontal";
drawer = {
transition-duration = 500;
children-class = "power-drawer";
transition-left-to-right = false;
};
modules = [
"custom/power"
"custom/logout"
"custom/reboot"
];
};
clock = {
format = "{:%I:%M %p}";
tooltip = false;
};
};
# ------------------------------------------
programs.waybar.settings.sideBar = {
layer = "bottom";
output =
if desktop
then builtins.elemAt monitors 1
else builtins.elemAt monitors 0;
position = "right";
margin-top = 8;
margin-right = 5;
margin-bottom = 8;
name = "sideBar";
mode = "dock";
"gtk-layer-shell" = true;
modules-left =
if desktop
then [
"hyprland/workspaces"
]
else [
"group/brightness"
"battery"
];
modules-center = [
];
modules-right = [
"network"
"group/audio"
];
"hyprland/workspaces" = workspaces;
"pulseaudio/slider" = {
orientation = "vertical";
};
"group/audio" = {
orientation = "vertical";
modules = [
"pulseaudio/slider"
"pulseaudio"
];
};
pulseaudio = {
format = "{icon}";
format-muted = " ";
format-icons = {
default = [
" "
" "
];
};
on-click = "pactl set-sink-mute @DEFAULT_SINK@ toggle";
on-click-right = "hyprctl dispatch exec '[float;size 40% 55%] pavucontrol'";
};
network = {
interval = 30;
format-wifi = "󰖩 ";
tooltip-format-wifi = "{essid} ({signalStrength}%)";
format-ethernet = " ";
tooltip-format-ethernet = "{ifname}";
format-disconnected = "󰖪 ";
tooltip-format-disconnected = "Disconnected";
on-click = "hyprctl dispatch exec '[float;size 40% 55%] kitty nmtui'";
};
battery = {
bat = "BAT1";
interval = 1;
tooltip-format = "{capacity}%\nTil empty: {time}";
tooltip-format-charging = "{capacity}%\nTil full: {time}";
format = "{icon}";
format-icons = [
"󰁺"
"󰁻"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
format-charging = "󰂄";
};
"group/brightness" = {
orientation = "vertical";
modules = [
"backlight"
"backlight/slider"
];
};
backlight = {
format = "󰃠";
tooltip = "{percentage}%";
};
"backlight/slider" = {
min = 10;
max = 100;
orientation = "vertical";
rotate = 180;
};
};
}

View File

@@ -1,195 +0,0 @@
{scheme, ...}: let
bg = {
darkester = scheme.base00;
darkest = scheme.base01;
darker = scheme.base02;
dark = scheme.base03;
};
fg = {
lightester = scheme.base07;
lightest = scheme.base06;
lighter = scheme.base05;
light = scheme.base04;
};
colors = {
color0 = scheme.base08;
color1 = scheme.base09;
color2 = scheme.base0A;
color3 = scheme.base0B;
color4 = scheme.base0C;
color5 = scheme.base0D;
color6 = scheme.base0E;
color7 = scheme.base0F;
};
in {
programs.waybar.style = ''
* {
border: none;
border-radius: 0;
font-size: 16px;
font-family: "JetBrains Mono Nerd Font";
}
window#waybar {
border-radius: 20px;
border: 3px solid #${colors.color7};
background: rgba(46,52,64,0.15);
margin: 20px;
}
window#waybar.empty #window {
background: none;
}
#workspaces {
margin: 3px;
background: #${bg.dark};
border-radius: 20px;
}
#workspaces button:hover {
border-radius: 20px;
}
#workspaces button.active {
background: #${fg.lightester};
border-radius: 20px;
color: #${bg.darkest};
}
#cava {
background: #${bg.dark};
border-radius: 20px;
margin: 3px 3px 3px 6px;
padding: 0px 15px 0px 15px;
color: #${colors.color6};
}
#window {
margin: 3px;
background: #${bg.dark};
border-radius: 20px;
padding: 0 15px 0 15px;
font-weight: bold;
}
#hardware {
margin: 3px;
padding: 0 10px 0 10px;
background: #${bg.dark};
border-radius: 20px;
}
#custom-disk-icon, #cpu, #memory {
margin-bottom: 4px;
font-size: 20px;
font-weight: bold;
}
#custom-disk-icon {
color: #${colors.color4};
}
#memory {
color: #${colors.color1};
}
#cpu {
color: #${colors.color3};
}
#clock {
font-weight: bold;
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 0 10px 0 10px;
font-size: 18px;
}
#powerbtns {
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 0 5px 0 10px;
}
#custom-power {
color: #${colors.color0};
font-size: 18px;
}
#custom-logout {
color: #${colors.color4};
font-size: 18px;
}
#custom-reboot {
color: #${colors.color2};
font-size: 18px;
}
#audio {
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 5px 0 10px 0;
}
#pulseaudio {
color: #${colors.color4};
font-size: 18px;
}
#backlight-slider slider,
#pulseaudio-slider slider {
background: #${colors.color4};
background-color: transparent;
box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
min-width: 9px;
min-height: 90px;
border-radius: 8px;
background: #343434;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
border-radius: 8px;
background-color: #2096C0;
}
#network {
color: #${colors.color3};
font-size: 20px;
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 5px 0 5px 6px;
}
#brightness {
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 10px 0px 5px 0;
}
#backlight {
color: #${colors.color2};
font-size: 18px;
padding: 0 4px 0 0;
}
#battery {
color: #${colors.color4};
font-size: 20px;
background: #${bg.dark};
border-radius: 20px;
margin: 3px;
padding: 5px 0 5px 0px;
}
'';
}

View File

@@ -1,8 +0,0 @@
{pkgs, ...}: {
programs.waybar = {
enable = true;
};
programs.waybar.package = pkgs.waybar.overrideAttrs (oa: {
mesonFlags = (oa.mesonFlags or []) ++ ["-Dexperimental=true"];
});
}

View File

@@ -1,187 +1,201 @@
{self, ...}: { {lib, config, self, ...}: {
programs.zoxide = { options = {
enable = true; zshConfig.enable = lib.mkEnableOption "enables my zsh configuration";
enableZshIntegration = true;
}; };
programs.zsh = { config = lib.mkIf config.zshConfig.enable {
enable = true; programs.zoxide = {
sessionVariables = {
SOUNDS_ENABLED = "1";
EDITOR = "nvim";
SUDO_EDITOR = "nvim";
VISUAL = "nvim";
LANG = "en_US.UTF-8";
BROWSER = "firefox";
FLAKEPATH = "$HOME/.sysflake";
};
oh-my-zsh = {
enable = true; enable = true;
plugins = ["git" "fzf"]; enableZshIntegration = true;
}; };
programs.zsh = {
enableCompletion = true;
history = {
path = "$HOME/.zsh_history";
save = 10000;
size = 10000;
share = true;
};
autosuggestion = {
enable = true; enable = true;
highlight = "fg=#4C566A,underline";
};
shellAliases = { shellAliases = {
grep = "grep --color=auto"; grep = "grep --color=auto";
yazi = "y"; yazi = "y";
vi = "nvim"; vi = "nvim";
mv = "mv -v"; mv = "mv -v";
cp = "cp -vr"; cp = "cp -vr";
gt = "gtrash"; gt = "gtrash";
gtp = "playshellsound ${self}/assets/sound/rm.wav; gtrash put"; gtp = "playshellsound ${self}/assets/sound/rm.wav; gtrash put";
sr = "source ~/.zshrc"; sr = "source ~/.zshrc";
".." = "cd .."; ".." = "cd ..";
rm = "echo 'use \"gtp\" instead'"; rm = "echo 'use \"gtp\" instead'";
psg = "ps aux | grep -v grep | grep -i -e VSZ -e"; psg = "ps aux | grep -v grep | grep -i -e VSZ -e";
mkdir = "mkdir -p"; mkdir = "mkdir -p";
pk = "pkill -9 -f"; pk = "pkill -9 -f";
svcu = "systemctl --user"; svcu = "systemctl --user";
svc = "sudo systemctl"; svc = "sudo systemctl";
viflake = "nvim flake.nix"; viflake = "nvim flake.nix";
#git #git
"ga" = "playshellsound ${self}/assets/sound/gitadd.wav; git add"; "ga" = "playshellsound ${self}/assets/sound/gitadd.wav; git add";
gcomm = "gitcommit_sfx"; gcomm = "gitcommit_sfx";
gpush = "gitpush_sfx"; gpush = "gitpush_sfx";
gpull = "gitpull_sfx"; gpull = "gitpull_sfx";
greb = "gitrebase_sfx"; greb = "gitrebase_sfx";
}; };
initExtra = ''
playshellsound() {
if [ $# -ne 1 ]; then
echo "Usage: playshellsound <path/to/sound>"
return 1
fi
if ! scheck; then
return 0
else
runbg aplay "$1"
fi
}
gitrebase_sfx() {
if git rebase "$@"; then
playshellsound ${self}/assets/sound/gitrebase.wav
return 0
else
playshellsound ${self}/assets/sound/error.wav
return 1
fi
}
gitcommit_sfx() {
if git commit "$@"; then
playshellsound ${self}/assets/sound/gitcommit.wav
return 0
else
playshellsound ${self}/assets/sound/error.wav
return 1
fi
}
gitpush_sfx() {
if git push "$@"; then
playshellsound ${self}/assets/sound/gitpush.wav
return 0
else
playshellsound ${self}/assets/sound/error.wav
return 1
fi
}
gitpull_sfx() {
if git pull "$@"; then
playshellsound ${self}/assets/sound/gitpull.wav
return 0
else
playshellsound ${self}/assets/sound/error.wav
return 1
fi
}
unalias ls
ls() {
eza -1 --group-directories-first --icons "$@"
playshellsound ${self}/assets/sound/ls.wav
return 0
}
mkcd() {
mkdir -p "$1" && cd "$1"
}
y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
yazi "$@" --cwd-file="$tmp"
if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
builtin cd -- "$cwd"
fi
rm -f -- "$tmp"
}
cd() {
local prev_sounds_enabled="$SOUNDS_ENABLED"
SOUNDS_ENABLED=0
eza -1 --group-directories-first --icons "$@"
SOUNDS_ENABLED=$prev_sounds_enabled
builtin cd "$@"
playshellsound /nix/store/7a9w7np3qrvmzxjbs7xj05qq2yccgfsj-source/assets/sound/cd.wav
return 0
}
if [ ! -e $HOME/.zsh_history ]; then
touch $HOME/.zsh_history
chmod 600 $HOME/.zsh_history
fi
setopt APPEND_HISTORY # Append history to the history file (don't overwrite)
setopt INC_APPEND_HISTORY # Append to the history file incrementally
setopt SHARE_HISTORY # Share history between all zsh sessions
sessionVariables = { sessionVariables = {
setopt CORRECT SOUNDS_ENABLED = "1";
setopt NO_NOMATCH EDITOR = "nvim";
setopt LIST_PACKED SUDO_EDITOR = "nvim";
setopt ALWAYS_TO_END VISUAL = "nvim";
setopt GLOB_COMPLETE LANG = "en_US.UTF-8";
setopt COMPLETE_ALIASES BROWSER = "firefox";
setopt COMPLETE_IN_WORD FLAKEPATH = "$HOME/.sysflake";
setopt AUTO_CD };
setopt AUTO_CONTINUE
setopt LONG_LIST_JOBS
setopt HIST_VERIFY
setopt SHARE_HISTORY
setopt HIST_IGNORE_SPACE
setopt HIST_SAVE_NO_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt EXTENDED_GLOB
setopt TRANSIENT_RPROMPT
setopt INTERACTIVE_COMMENTS
autoload -U compinit # completion oh-my-zsh = {
autoload -U terminfo # terminfo keys enable = true;
zmodload -i zsh/complist # menu completion plugins = ["git" "fzf"];
autoload -U promptinit # prompt };
autoload -U up-line-or-beginning-search; zle -N up-line-or-beginning-search enableCompletion = true;
autoload -U down-line-or-beginning-search; zle -N down-line-or-beginning-search history = {
path = "$HOME/.zsh_history";
save = 10000;
size = 10000;
share = true;
};
bindkey -v autosuggestion = {
type starship_zle-keymap-select >/dev/null || \ enable = true;
{ highlight = "fg=#4C566A,underline";
eval "$(starship init zsh)" };
}
unalias ls initExtra = ''
clear playshellsound() {
splash if [ $# -ne 1 ]; then
playshellsound ${self}/assets/sound/sh-source.wav echo "Usage: playshellsound <path/to/sound>"
[ ! -f $FLAKEPATH/flake.nix ] && echo "WARNING: flake.nix not found at \$FLAKEPATH. Shell aliases for editing config files won't work correctly!" && echo "Edit the FLAKEPATH session variable in zshell.nix to point to the path where you saved the system configuration flake." return 1
''; fi
if ! scheck; then
return 0
else
runbg aplay "$1"
fi
}
gitcheckout_sfx() {
if git checkout "$@"; then
playshellsound ${self}/assets/sound/gitcheckout.wav
return 0
else
playshellsound ${self}/assets/sound/error.wav
return 1
fi
}
gitrebase_sfx() {
if git rebase "$@"; then
playshellsound ${self}/assets/sound/gitrebase.wav
return 0
else
playshellsound ${self}/assets/sound/error.wav
return 1
fi
}
gitcommit_sfx() {
if git commit "$@"; then
playshellsound ${self}/assets/sound/gitcommit.wav
return 0
else
playshellsound ${self}/assets/sound/error.wav
return 1
fi
}
gitpush_sfx() {
if git push "$@"; then
playshellsound ${self}/assets/sound/gitpush.wav
return 0
else
playshellsound ${self}/assets/sound/error.wav
return 1
fi
}
gitpull_sfx() {
if git pull "$@"; then
playshellsound ${self}/assets/sound/gitpull.wav
return 0
else
playshellsound ${self}/assets/sound/error.wav
return 1
fi
}
unalias ls
ls() {
eza -1 --group-directories-first --icons "$@"
playshellsound ${self}/assets/sound/ls.wav
return 0
}
mkcd() {
mkdir -p "$1" && cd "$1"
}
y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
yazi "$@" --cwd-file="$tmp"
if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
builtin cd -- "$cwd"
fi
rm -f -- "$tmp"
}
cd() {
local prev_sounds_enabled="$SOUNDS_ENABLED"
SOUNDS_ENABLED=0
eza -1 --group-directories-first --icons "$@"
SOUNDS_ENABLED=$prev_sounds_enabled
builtin cd "$@"
playshellsound /nix/store/7a9w7np3qrvmzxjbs7xj05qq2yccgfsj-source/assets/sound/cd.wav
return 0
}
if [ ! -e $HOME/.zsh_history ]; then
touch $HOME/.zsh_history
chmod 600 $HOME/.zsh_history
fi
setopt APPEND_HISTORY # Append history to the history file (don't overwrite)
setopt INC_APPEND_HISTORY # Append to the history file incrementally
setopt SHARE_HISTORY # Share history between all zsh sessions
setopt CORRECT
setopt NO_NOMATCH
setopt LIST_PACKED
setopt ALWAYS_TO_END
setopt GLOB_COMPLETE
setopt COMPLETE_ALIASES
setopt COMPLETE_IN_WORD
setopt AUTO_CD
setopt AUTO_CONTINUE
setopt LONG_LIST_JOBS
setopt HIST_VERIFY
setopt SHARE_HISTORY
setopt HIST_IGNORE_SPACE
setopt HIST_SAVE_NO_DUPS
setopt HIST_IGNORE_ALL_DUPS
setopt EXTENDED_GLOB
setopt TRANSIENT_RPROMPT
setopt INTERACTIVE_COMMENTS
autoload -U compinit # completion
autoload -U terminfo # terminfo keys
zmodload -i zsh/complist # menu completion
autoload -U promptinit # prompt
autoload -U up-line-or-beginning-search; zle -N up-line-or-beginning-search
autoload -U down-line-or-beginning-search; zle -N down-line-or-beginning-search
bindkey -v
type starship_zle-keymap-select >/dev/null || \
{
eval "$(starship init zsh)"
}
unalias ls
clear
splash
playshellsound ${self}/assets/sound/sh-source.wav
[ ! -f $FLAKEPATH/flake.nix ] && echo "WARNING: flake.nix not found at \$FLAKEPATH. Shell aliases for editing config files won't work correctly!" && echo "Edit the FLAKEPATH session variable in zshell.nix to point to the path where you saved the system configuration flake."
'';
};
}; };
} }

View File

@@ -1,109 +1,120 @@
{self, ...}: { { lib, self, config, ... }:
home.file.".config/neofetch/config.conf".text = ''
username=$(whoami)
name_length=''${#username}
total_width=40
side_length=$(( (total_width - name_length - 2) / 2 ))
top_line=$(printf "%.0s" $(seq 1 $side_length)) # This folder is for programs that do not have existing configuration modules in NixOS.
top_line="$top_line $username " # Basically a to-do list for stuff I need to write my own modules for.
top_line+=$(printf "%.0s" $(seq 1 $side_length)) {
options = {
homeFiles.enable = lib.mkEnableOption "enables declared custom files";
};
config = {
home.file = {
".config/neofetch/config.conf".text = ''
username=$(whoami)
name_length=''${#username}
total_width=40
side_length=$(( (total_width - name_length - 2) / 2 ))
if (( (total_width - name_length) % 2 != 0 )); then top_line=$(printf "%.0s" $(seq 1 $side_length))
top_line+="" top_line="$top_line $username "
fi top_line+=$(printf "%.0s" $(seq 1 $side_length))
print_info() { if (( (total_width - name_length) % 2 != 0 )); then
prin "$top_line" top_line+=""
info " " distro fi
info " " kernel
info " " wm
info " " shell
info " " term
info " " term_font
info " 󰏗 " packages
prin ""
info cols
prin "\n \n \n \n \n ''${cl3} \n \n ''${cl5} \n \n ''${cl2} \n \n ''${cl6} \n \n ''${cl4} \n \n ''${cl1} \n \n ''${cl7} \n \n ''${cl0}"
}
kernel_shorthand="on" print_info() {
distro_shorthand="on" prin "$top_line"
os_arch="off" info " " distro
uptime_shorthand="on" info " " kernel
memory_percent="on" info " " wm
package_managers="off" info " " shell
shell_path="off" info " " term
shell_version="on" info " " term_font
speed_type="bios_limit" info " 󰏗 " packages
speed_shorthand="on" prin ""
gtk_shorthand="on" info cols
gtk2="on" prin "\n \n \n \n \n ''${cl3} \n \n ''${cl5} \n \n ''${cl2} \n \n ''${cl6} \n \n ''${cl4} \n \n ''${cl1} \n \n ''${cl7} \n \n ''${cl0}"
gtk3="on" }
colors=(distro)
bold="on"
underline_enabled="on"
underline_char="-"
separator=" "
color_blocks="off"
block_range=(0 15) # Colorblocks
# Colors for custom colorblocks kernel_shorthand="on"
magenta="\033[1;35m" distro_shorthand="on"
green="\033[1;32m" os_arch="off"
white="\033[1;37m" uptime_shorthand="on"
blue="\033[1;34m" memory_percent="on"
red="\033[1;31m" package_managers="off"
black="\033[1;40;30m" shell_path="off"
yellow="\033[1;33m" shell_version="on"
cyan="\033[1;36m" speed_type="bios_limit"
reset="\033[0m" speed_shorthand="on"
bgyellow="\033[1;43;33m" gtk_shorthand="on"
bgwhite="\033[1;47;37m" gtk2="on"
cl0="''${reset}" gtk3="on"
cl1="''${magenta}" colors=(distro)
cl2="''${green}" bold="on"
cl3="''${white}" underline_enabled="on"
cl4="''${blue}" underline_char="-"
cl5="''${red}" separator=" "
cl6="''${yellow}" color_blocks="off"
cl7="''${cyan}" block_range=(0 15) # Colorblocks
cl8="''${black}"
cl9="''${bgyellow}"
cl10="''${bgwhite}"
block_width=4 # Colors for custom colorblocks
block_height=1 magenta="\033[1;35m"
green="\033[1;32m"
white="\033[1;37m"
blue="\033[1;34m"
red="\033[1;31m"
black="\033[1;40;30m"
yellow="\033[1;33m"
cyan="\033[1;36m"
reset="\033[0m"
bgyellow="\033[1;43;33m"
bgwhite="\033[1;47;37m"
cl0="''${reset}"
cl1="''${magenta}"
cl2="''${green}"
cl3="''${white}"
cl4="''${blue}"
cl5="''${red}"
cl6="''${yellow}"
cl7="''${cyan}"
cl8="''${black}"
cl9="''${bgyellow}"
cl10="''${bgwhite}"
bar_char_elapsed="-" block_width=4
bar_char_total="=" block_height=1
bar_border="on"
bar_length=15
bar_color_elapsed="distro"
bar_color_total="distro"
cpu_display="on" bar_char_elapsed="-"
memory_display="on" bar_char_total="="
battery_display="on" bar_border="on"
disk_display="on" bar_length=15
bar_color_elapsed="distro"
bar_color_total="distro"
image_backend="kitty" cpu_display="on"
image_source="${self}/assets/images/nixos-logo.png" memory_display="on"
image_size="250px" battery_display="on"
image_loop="off" disk_display="on"
aascii_distro="auto" image_backend="kitty"
ascii_colors=(distro) image_source="${self}/assets/images/nixos-logo.png"
ascii_bold="on" image_size="250px"
image_loop="off"
crop_mode="normal" aascii_distro="auto"
crop_offset="center" ascii_colors=(distro)
ascii_bold="on"
gap=2 crop_mode="normal"
crop_offset="center"
yoffset=0 gap=2
xoffset=0
stdout="off" yoffset=0
''; xoffset=0
stdout="off"
'';
};
};
} }

View File

@@ -1,59 +0,0 @@
{
host,
pkgs,
self,
inputs,
username,
wallpaper,
scheme,
config,
...
}: let
nur = config.nur;
desktop = (host == "oganesson");
in {
imports = [inputs.home-manager.nixosModules.home-manager];
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
backupFileExtension = "backup";
extraSpecialArgs = {inherit self inputs host wallpaper scheme username nur;};
users.${username} = {
dconf.settings = if desktop then {
"org/virt-manager/virt-manager/connections" = {
autoconnect = ["qemu:///system"];
uris = ["qemu:///system"];
};
} else {};
programs.home-manager.enable = true;
imports = [
./programs
./environment
./scripts
./files.nix
];
home = {
username = "${username}";
homeDirectory = "/home/${username}";
stateVersion = "24.05";
};
};
};
users = {
groups.persist = {};
users = {
root.initialPassword = "1234";
${username} = {
isNormalUser = true;
initialPassword = "1234";
shell = pkgs.zsh;
extraGroups = ["wheel" "persist" "libvirtd"];
};
};
};
security.sudo.extraConfig = ''
${username} ALL=(ALL) NOPASSWD: /etc/profiles/per-user/${username}/bin/rebuild
'';
nix.settings.allowed-users = ["${username}"];
}

View File

@@ -1,6 +1,11 @@
{...}: { {lib, config, ...}: {
programs.autojump = { options = {
enable = true; autojumpConfig.enable = lib.mkEnableOption "enables my autojump options";
enableZshIntegration = true; };
config = lib.mkIf config.autojumpConfig.enable {
programs.autojump = {
enable = true;
enableZshIntegration = true;
};
}; };
} }

View File

@@ -1,8 +1,13 @@
{inputs, ...}: { {lib, config, inputs, ...}: {
programs.bat = { options = {
enable = true; batConfig.enable = lib.mkEnableOption "enables my bat options";
config = { };
pager = "less -FR"; config = lib.mkIf config.batConfig.enable {
programs.bat = {
enable = true;
config = {
pager = "less -FR";
};
}; };
}; };
} }

View File

@@ -1,19 +1,24 @@
{pkgs, ...}: { {lib, config, pkgs, ...}: {
programs.btop = { options = {
enable = true; btopConfig.enable = lib.mkEnableOption "enables my btop config";
settings = {
update_ms = 500;
vim_keys = true;
color_theme = "nord";
theme_background = true;
temp_scale = "fahrenheit";
graph_symbol = "block";
disks_filter = "exclude=/boot /";
show_swap = false;
swap_disk = false;
};
}; };
config = lib.mkIf config.btopConfig.enable {
programs.btop = {
enable = true;
home.packages = with pkgs; [nvtopPackages.intel]; settings = {
update_ms = 500;
vim_keys = true;
color_theme = "nord";
theme_background = true;
temp_scale = "fahrenheit";
graph_symbol = "block";
disks_filter = "exclude=/boot /";
show_swap = false;
swap_disk = false;
};
};
home.packages = with pkgs; [nvtopPackages.intel];
};
} }

View File

@@ -1,9 +1,10 @@
{ {lib, config, inputs, pkgs, ... }: {
inputs, options = {
pkgs, cavaConfig.enable = lib.mkEnableOption "enables my cava settings";
... };
}: { config = lib.mkIf config.cavaConfig.enable {
programs.cava = { programs.cava = {
enable = true; enable = true;
};
}; };
} }

View File

@@ -1,9 +1,14 @@
{...}: { {lib, config, ...}: {
programs.eza = { options = {
enable = true; ezaConfig.enable = lib.mkEnableOption "enables my eza options";
enableZshIntegration = false; };
extraOptions = ["-1" "-h" "--group-directories-first"]; config = lib.mkIf config.ezaConfig.enable {
icons = "auto"; programs.eza = {
git = true; enable = true;
enableZshIntegration = false;
extraOptions = ["-1" "-h" "--group-directories-first"];
icons = "auto";
git = true;
};
}; };
} }

View File

@@ -1,127 +1,127 @@
{ {lib, config, nur, username, self, ... }: {
nur, options = {
username, firefoxConfig.enable = lib.mkEnableOption "enables my firefox configuration";
self, };
... config = lib.mkIf config.firefoxConfig.enable {
}: { programs.firefox = {
programs.firefox = { enable = true;
enable = true; policies = {
policies = { DisableTelemetry = true;
DisableTelemetry = true; DisableFirefoxStudies = true;
DisableFirefoxStudies = true; EnableTrackingProtection = {
EnableTrackingProtection = { Value = true;
Value = true; Locked = true;
Locked = true; Cryptomining = true;
Cryptomining = true; Fingerprinting = 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" isDefault = true;
};
profiles.${username} = {
name = "${username}";
bookmarks = [
{
name = "Nix Sites";
toolbar = true;
bookmarks = [
{
name = "NixOS Wiki";
url = "https://nixos.wiki/wiki/Main_Page";
}
{
name = "Nixpkgs Reference Manual";
url = "https://nixos.org/manual/nixpkgs/stable/";
}
{
name = "NixOS Manual";
url = "https://nixos.org/manual/nixos/stable/";
}
{
name = "NixOS Options";
url = "https://search.nixos.org/options";
}
{
name = "Home Manager Options";
url = "https://home-manager-options.extranix.com/";
}
{
name = "Nixpkgs Package Search";
url = "https://search.nixos.org/packages";
}
{
name = "Noogle - Nixpkgs Function Docs";
url = "https://noogle.dev";
}
{
name = "Nixvim Docs";
url = "https://nix-community.github.io/nixvim/";
}
];
}
{
name = "Rust Manual";
url = "https://doc.rust-lang.org/book/ch01-03-hello-cargo.html";
}
{
name = "ChatGPT";
url = "https://chatgpt.com/";
}
{
name = "DataAnnotation";
url = "https://app.dataannotation.tech/users/sign_in";
}
{
name = "Nerd Fonts Cheatsheet";
url = "https://www.nerdfonts.com/cheat-sheet";
}
];
extensions = with nur.repos.rycee.firefox-addons; [
darkreader
adnauseam
cookie-autodelete
disconnect
firefox-color
vimium
firenvim
privacy-badger
new-tab-override
];
extraConfig = ''
"browser.startup.homepage" = "${self}/glasshouse-desktop/home/firefox/homepage.html";
"browser.active_color" = "#EE0000";
"browser.active_color.dark" = "#FF6666";
"browser.anchor_color" = "#0000EE";
"browser.anchor_color.dark" = "#8C8CFF";
"browser.display.background_color" = "#FFFFFF";
"browser.display.background_color.dark" = "#1C1B22";
"browser.display.document_color_use" = "1";
"browser.display.foreground_color" = "#000000";
"browser.display.foreground_color.dark" = "#FBFBFE";
"browser.display.suppress_canvas_background_image_on_forced_colors" = "true";
"browser.display.use_system_colors" = "false";
"browser.newtabpage.activity-stream.newNewtabExperience.colors" = "#0090ED,#FF4F5F,#2AC3A2,#FF7139,#A172FF,#FFA437,#FF2A8A";
"browser.theme.colorway-closet" = "true";
"browser.theme.colorway-migration" = "true";
"browser.theme.windows.accent-color-in-tabs.enabled" = "false";
"browser.visited_color" = "#551A8B";
"browser.visited_color.dark" = "#FFADFF";
"browser.newtabpage.pinned" = [{
title = "Homepage";
url = "${self}/glasshouse-desktop/home/firefox/homepage.html";
}];
"devtools.defaultColorUnit" = "authored";
"editor.background_color" = "#FFFFFF";
"editor.use_custom_colors" = "false";
'';
}; };
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" isDefault = true;
};
profiles.${username} = {
name = "${username}";
bookmarks = [
{
name = "Nix Sites";
toolbar = true;
bookmarks = [
{
name = "NixOS Wiki";
url = "https://nixos.wiki/wiki/Main_Page";
}
{
name = "Nixpkgs Reference Manual";
url = "https://nixos.org/manual/nixpkgs/stable/";
}
{
name = "NixOS Manual";
url = "https://nixos.org/manual/nixos/stable/";
}
{
name = "NixOS Options";
url = "https://search.nixos.org/options";
}
{
name = "Home Manager Options";
url = "https://home-manager-options.extranix.com/";
}
{
name = "Nixpkgs Package Search";
url = "https://search.nixos.org/packages";
}
{
name = "Noogle - Nixpkgs Function Docs";
url = "https://noogle.dev";
}
{
name = "Nixvim Docs";
url = "https://nix-community.github.io/nixvim/";
}
];
}
{
name = "Rust Manual";
url = "https://doc.rust-lang.org/book/ch01-03-hello-cargo.html";
}
{
name = "ChatGPT";
url = "https://chatgpt.com/";
}
{
name = "DataAnnotation";
url = "https://app.dataannotation.tech/users/sign_in";
}
{
name = "Nerd Fonts Cheatsheet";
url = "https://www.nerdfonts.com/cheat-sheet";
}
];
extensions = with nur.repos.rycee.firefox-addons; [
darkreader
adnauseam
cookie-autodelete
disconnect
firefox-color
vimium
firenvim
privacy-badger
new-tab-override
];
extraConfig = ''
"browser.startup.homepage" = "${self}/glasshouse-desktop/home/firefox/homepage.html";
"browser.active_color" = "#EE0000";
"browser.active_color.dark" = "#FF6666";
"browser.anchor_color" = "#0000EE";
"browser.anchor_color.dark" = "#8C8CFF";
"browser.display.background_color" = "#FFFFFF";
"browser.display.background_color.dark" = "#1C1B22";
"browser.display.document_color_use" = "1";
"browser.display.foreground_color" = "#000000";
"browser.display.foreground_color.dark" = "#FBFBFE";
"browser.display.suppress_canvas_background_image_on_forced_colors" = "true";
"browser.display.use_system_colors" = "false";
"browser.newtabpage.activity-stream.newNewtabExperience.colors" = "#0090ED,#FF4F5F,#2AC3A2,#FF7139,#A172FF,#FFA437,#FF2A8A";
"browser.theme.colorway-closet" = "true";
"browser.theme.colorway-migration" = "true";
"browser.theme.windows.accent-color-in-tabs.enabled" = "false";
"browser.visited_color" = "#551A8B";
"browser.visited_color.dark" = "#FFADFF";
"browser.newtabpage.pinned" = [{
title = "Homepage";
url = "${self}/glasshouse-desktop/home/firefox/homepage.html";
}];
"devtools.defaultColorUnit" = "authored";
"editor.background_color" = "#FFFFFF";
"editor.use_custom_colors" = "false";
'';
}; };
}; };
} }

View File

@@ -1,23 +1,28 @@
{lib, ...}: { {config, lib, ...}: {
programs.fuzzel = { options = {
enable = true; fuzzelConfig.enable = lib.mkEnableOption "enables my fuzzel configuration";
settings = { };
main = { config = lib.mkIf config.fuzzelConfig.enable {
line-height = 25; programs.fuzzel = {
fields = "name,generic,comment,categories,filename,keywords"; enable = true;
terminal = "kitty"; settings = {
prompt = "' '"; main = {
layer = "top"; line-height = 25;
lines = 10; fields = "name,generic,comment,categories,filename,keywords";
width = 35; terminal = "kitty";
horizontal-pad = 25; prompt = "' '";
inner-pad = 5; layer = "top";
lines = 10;
width = 35;
horizontal-pad = 25;
inner-pad = 5;
};
border = {
radius = 15;
width = 3;
};
colors.background = lib.mkForce "2e344080";
}; };
border = {
radius = 15;
width = 3;
};
colors.background = lib.mkForce "2e344080";
}; };
}; };
} }

View File

@@ -1,6 +1,11 @@
{...}: { {lib, config, ...}: {
programs.fzf = { options = {
enable = true; fzfConfig.enable = lib.mkEnableOption "enables my fzf options";
enableZshIntegration = true; };
config = lib.mkIf config.fzfConfig.enable {
programs.fzf = {
enable = true;
enableZshIntegration = true;
};
}; };
} }

View File

@@ -1,7 +1,12 @@
{username, ...}: { {lib, config, username, ...}: {
programs.git = { options = {
enable = true; gitConfig.enable = lib.mkEnableOption "enables my git configuration";
userEmail = "${username}@gmail.com"; };
userName = "${username}"; config = lib.mkIf config.gitConfig.enable {
programs.git = {
enable = true;
userEmail = "${username}@gmail.com";
userName = "${username}";
};
}; };
} }

View File

@@ -1,73 +1,74 @@
{ {lib, config, pkgs, scheme, ... }: {
pkgs, options = {
scheme, kittyConfig.enable = lib.mkEnableOption "enables my kitty configuration";
... };
}: { config = lib.mkIf config.kittyConfig.enable {
programs.kitty = { programs.kitty = {
enable = true; enable = true;
settings = { settings = {
confirm_os_window_close = 0; confirm_os_window_close = 0;
window_padding_width = 4; window_padding_width = 4;
scrollback_lines = 10000; scrollback_lines = 10000;
enable_audio_bell = false; enable_audio_bell = false;
allow_remote_control = true; allow_remote_control = true;
mouse_hide_wait = 60; mouse_hide_wait = 60;
## Tabs ## Tabs
tab_title_template = "{index}"; tab_title_template = "{index}";
active_tab_font_style = "normal"; active_tab_font_style = "normal";
inactive_tab_font_style = "normal"; inactive_tab_font_style = "normal";
tab_bar_style = "powerline"; tab_bar_style = "powerline";
tab_powerline_style = "round"; tab_powerline_style = "round";
};
keybindings = {
## Tabs
"alt+1" = "goto_tab 1";
"alt+2" = "goto_tab 2";
"alt+3" = "goto_tab 3";
"alt+4" = "goto_tab 4";
## Unbind
"ctrl+shift+left" = "no_op";
"ctrl+shift+right" = "no_op";
};
extraConfig = ''
background #${scheme.base00}
foreground #${scheme.base05}
selection_background #${scheme.base05}
selection_foreground #${scheme.base00}
url_color #${scheme.base04}
cursor #${scheme.base05}
active_border_color #${scheme.base03}
inactive_border_color #${scheme.base01}
active_tab_background #${scheme.base00}
active_tab_foreground #${scheme.base05}
inactive_tab_background #${scheme.base01}
inactive_tab_foreground #${scheme.base04}
tab_bar_background #${scheme.base01}
# normal
color0 #${scheme.base01}
color1 #${scheme.base08}
color2 #${scheme.base0B}
color3 #${scheme.base0A}
color4 #${scheme.base0D}
color5 #${scheme.base0E}
color6 #${scheme.base0C}
color7 #${scheme.base05}
# bright
color8 #${scheme.base03}
color9 #${scheme.base09}
color10 #${scheme.base01}
color11 #${scheme.base02}
color12 #${scheme.base04}
color13 #${scheme.base06}
color14 #${scheme.base0F}
color15 #${scheme.base07}
'';
}; };
keybindings = {
## Tabs
"alt+1" = "goto_tab 1";
"alt+2" = "goto_tab 2";
"alt+3" = "goto_tab 3";
"alt+4" = "goto_tab 4";
## Unbind
"ctrl+shift+left" = "no_op";
"ctrl+shift+right" = "no_op";
};
extraConfig = ''
background #${scheme.base00}
foreground #${scheme.base05}
selection_background #${scheme.base05}
selection_foreground #${scheme.base00}
url_color #${scheme.base04}
cursor #${scheme.base05}
active_border_color #${scheme.base03}
inactive_border_color #${scheme.base01}
active_tab_background #${scheme.base00}
active_tab_foreground #${scheme.base05}
inactive_tab_background #${scheme.base01}
inactive_tab_foreground #${scheme.base04}
tab_bar_background #${scheme.base01}
# normal
color0 #${scheme.base01}
color1 #${scheme.base08}
color2 #${scheme.base0B}
color3 #${scheme.base0A}
color4 #${scheme.base0D}
color5 #${scheme.base0E}
color6 #${scheme.base0C}
color7 #${scheme.base05}
# bright
color8 #${scheme.base03}
color9 #${scheme.base09}
color10 #${scheme.base01}
color11 #${scheme.base02}
color12 #${scheme.base04}
color13 #${scheme.base06}
color14 #${scheme.base0F}
color15 #${scheme.base07}
'';
}; };
} }

View File

@@ -1,10 +1,15 @@
{username, ...}: let {lib, config, username, ...}: let
home = "/home/${username}"; home = "/home/${username}";
in { in {
programs.password-store = { options = {
enable = true; passConfig.enable = lib.mkEnableOption "enables my pass config";
settings = { };
PASSWORD_STORE_DIR = "${home}/.password-store"; config = lib.mkIf config.passConfig.enable {
programs.password-store = {
enable = true;
settings = {
PASSWORD_STORE_DIR = "${home}/.password-store";
};
}; };
}; };
} }

View File

@@ -1,6 +1,11 @@
{...}: { {lib, config, ...}: {
programs.yazi = { options = {
enable = true; yaziConfig.enable = lib.mkEnableOption "enables my yazi config";
enableZshIntegration = true; };
config = lib.mkIf config.yaziConfig.enable {
programs.yazi = {
enable = true;
enableZshIntegration = true;
};
}; };
} }

View File

@@ -1,70 +1,94 @@
{ {
host, host,
lib,
config,
self, self,
pkgs, pkgs,
... ...
}: let }: let
keyring = import ./wm-controls/keyring.nix { keyring = import ./wm-controls/keyring.nix { inherit self pkgs; };
self = self; invoke = import ./commands/invoke.nix { inherit self pkgs; };
pkgs = pkgs; splash = import ./commands/splash.nix { inherit self pkgs; };
}; runbg = import ./commands/runbg.nix { inherit self pkgs; };
invoke = import ./commands/invoke.nix { garbage-collect = import ./nix/garbage-collect.nix { inherit self pkgs; };
self = self; nsp = import ./nix/nsp.nix { inherit self pkgs; };
pkgs = pkgs; scheck = import ./wm-controls/s_check.nix { inherit self pkgs; };
}; switchmon = import ./wm-controls/switchmon.nix { inherit self pkgs; };
splash = import ./commands/splash.nix { rebuild = import ./nix/rebuild.nix { inherit host self pkgs; };
self = self; moveonscreen = import ./wm-controls/moveonscreen.nix { inherit pkgs; };
pkgs = pkgs; toolbelt = import ./commands/toolbelt.nix { inherit pkgs; };
}; viconf = import ./commands/viconf.nix { inherit pkgs; };
scheck = import ./commands/s_check.nix { chscheme = import ./wm-controls/chscheme.nix { inherit pkgs; };
self = self; chpaper = import ./wm-controls/chpaper.nix { inherit pkgs; };
pkgs = pkgs; scriptOverride =
}; doc:
runbg = import ./commands/runbg.nix { group:
self = self; name:
pkgs = pkgs; lib.mkEnableOption
}; "${doc}" // {
garbage-collect = import ./nix/garbage-collect.nix { default = config.movScripts.enable && config.movScripts.${group}.enable;
self = self; };
pkgs = pkgs;
};
nsp = import ./nix/nsp.nix {
self = self;
pkgs = pkgs;
};
switchmon = import ./wm-controls/switchmon.nix {
self = self;
pkgs = pkgs;
};
rebuild = import ./nix/rebuild.nix {
host = host;
self = self;
pkgs = pkgs;
};
moveonscreen = import ./wm-controls/moveonscreen.nix {pkgs = pkgs;};
toolbelt = import ./commands/toolbelt.nix {pkgs = pkgs;};
viconf = import ./commands/viconf.nix {
pkgs = pkgs;
};
chscheme = import ./wm-controls/chscheme.nix {
pkgs = pkgs;
};
chpaper = import ./wm-controls/chpaper.nix {pkgs = pkgs;};
in { in {
home.packages = [ options = {
chpaper movScripts.enable = lib.mkEnableOption "Enables all pagedmov's scripts";
chscheme
keyring # Enable or disable by group
garbage-collect movScripts.commandScripts.enable =
invoke lib.mkEnableOption "Enables all command scripts";
rebuild movScripts.hyprlandControls.enable =
nsp lib.mkEnableOption "Enables all Hyprland control scripts";
runbg movScripts.nixShortcuts.enable =
scheck lib.mkEnableOption "Enables all Nix shortcut scripts";
splash
switchmon # Individual options using scriptOverride or mkEnableOption directly
moveonscreen movScripts.commandScripts.invoke.enable =
toolbelt scriptOverride "Enables the invoke command" "commandScripts" "invoke";
viconf movScripts.commandScripts.runbg.enable =
]; scriptOverride "Enables the runbg command - written by FrostPhoenix" "commandScripts" "runbg";
movScripts.commandScripts.splash.enable =
scriptOverride "Enables the splash screen when opening a terminal" "commandScripts" "splash";
movScripts.commandScripts.toolbelt.enable =
scriptOverride "Enables the toolbelt command" "commandScripts" "toolbelt";
movScripts.commandScripts.viconf.enable =
scriptOverride "Enables the viconf command" "commandScripts" "viconf";
movScripts.hyprlandControls.chpaper.enable =
scriptOverride "Enables the chpaper command" "hyprlandControls" "chpaper";
movScripts.hyprlandControls.scheck.enable =
scriptOverride "Enables the scheck command" "hyprlandControls" "scheck";
movScripts.hyprlandControls.chscheme.enable =
scriptOverride "Enables the chscheme command" "hyprlandControls" "chscheme";
movScripts.hyprlandControls.keyring.enable =
scriptOverride "Enables the keyring command" "hyprlandControls" "keyring";
movScripts.hyprlandControls.moveonscreen.enable =
scriptOverride "Ensures floating windows remain on screen" "hyprlandControls" "moveonscreen";
movScripts.hyprlandControls.switchmon.enable =
scriptOverride "Moves cursor to the center of the second monitor" "hyprlandControls" "switchmon";
movScripts.nixShortcuts.garbage-collect.enable =
scriptOverride "Enables the garbage-collect script" "nixShortcuts" "garbage-collect";
movScripts.nixShortcuts.nsp.enable =
scriptOverride "Enables nsp as an alias for 'nix-shell -p'" "nixShortcuts" "nsp";
movScripts.nixShortcuts.rebuild.enable =
scriptOverride "Enables rebuild as an alias for 'sudo nixos-rebuild switch'" "nixShortcuts" "rebuild";
};
config = lib.mkIf config.movScripts.enable {
home.packages = lib.optionals config.movScripts.commandScripts.invoke.enable [ invoke ]
++ lib.optionals config.movScripts.commandScripts.runbg.enable [ runbg ]
++ lib.optionals config.movScripts.commandScripts.splash.enable [ splash ]
++ lib.optionals config.movScripts.commandScripts.toolbelt.enable [ toolbelt ]
++ lib.optionals config.movScripts.commandScripts.viconf.enable [ viconf ]
++ lib.optionals config.movScripts.hyprlandControls.chpaper.enable [ chpaper ]
++ lib.optionals config.movScripts.hyprlandControls.scheck.enable [ scheck ]
++ lib.optionals config.movScripts.hyprlandControls.chscheme.enable [ chscheme ]
++ lib.optionals config.movScripts.hyprlandControls.keyring.enable [ keyring ]
++ lib.optionals config.movScripts.hyprlandControls.moveonscreen.enable [ moveonscreen ]
++ lib.optionals config.movScripts.hyprlandControls.switchmon.enable [ switchmon ]
++ lib.optionals config.movScripts.nixShortcuts.garbage-collect.enable [ garbage-collect ]
++ lib.optionals config.movScripts.nixShortcuts.nsp.enable [ nsp ]
++ lib.optionals config.movScripts.nixShortcuts.rebuild.enable [ rebuild ];
};
} }

View File

@@ -1,16 +0,0 @@
{
inputs,
nixpkgs,
config,
self,
username,
host,
...
}: {
imports = [
./hardware
./software
./environment
../home/home-manager.nix
];
}

30
modules/sys/default.nix Normal file
View File

@@ -0,0 +1,30 @@
{
inputs,
nixpkgs,
config,
self,
username,
host,
lib,
...
}: {
imports = [
./hardware
./software
./environment
];
networkModule.enable = lib.mkDefault false;
nixSettings.enable = lib.mkDefault false;
bootLoader.enable = lib.mkDefault false;
issue.enable = lib.mkDefault false;
sddmConfig.enable = lib.mkDefault false;
stylixConfig.enable = lib.mkDefault false;
gamingPkgs.enable = lib.mkDefault false;
steamConfig.enable = lib.mkDefault false;
sysPkgs.enable = lib.mkDefault false;
sysProgs.enable = lib.mkDefault false;
sysServices.enable = lib.mkDefault false;
virtConfig.enable = lib.mkDefault false;
powerProfiles.enable = lib.mkDefault false;
}

View File

@@ -11,5 +11,6 @@
imports = imports =
[(import ./sddm.nix)] [(import ./sddm.nix)]
++ [(import ./issue.nix)] ++ [(import ./issue.nix)]
++ [(import ./nix.nix)]
++ [(import ./stylix.nix)]; ++ [(import ./stylix.nix)];
} }

View File

@@ -1,29 +1,34 @@
{...}: { {lib, config, ...}: {
environment.etc."issue".text = '' options = {
issue.enable = lib.mkEnableOption "enables custom /etc/issue splash screen for the tty";
};
config = lib.mkIf config.issue.enable {
environment.etc."issue".text = ''
\e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m
\e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;81m \e[38;5;27m
\e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m
\e[38;5;27m\e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;81m \e[38;5;27m\e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;81m
\e[38;5;27m\e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;81m \e[38;5;27m\e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;81m
\e[38;5;81m \e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;81m \e[38;5;81m \e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;81m
\e[38;5;81m \e[38;5;81m\e[38;5;27m \e[38;5;27m \e[38;5;81m \e[38;5;81m \e[38;5;81m\e[38;5;27m \e[38;5;27m \e[38;5;81m
\e[38;5;81m \e[38;5;81m\e[38;5;27m \e[38;5;27m \e[38;5;81m \e[38;5;81m \e[38;5;81m\e[38;5;27m \e[38;5;27m \e[38;5;81m
\e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;27m \e[38;5;81m \e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;27m \e[38;5;81m
\e[38;5;81m\e[38;5;27m \e[38;5;27m \e[38;5;27m \e[38;5;81m \e[38;5;81m\e[38;5;27m \e[38;5;27m \e[38;5;27m \e[38;5;81m
\e[38;5;81m\e[38;5;27m \e[38;5;27m \e[38;5;27m \e[38;5;81m \e[38;5;81m\e[38;5;27m \e[38;5;27m \e[38;5;27m \e[38;5;81m
\e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;27m \e[38;5;81m \e[38;5;81m \e[38;5;27m \e[38;5;27m \e[38;5;27m \e[38;5;81m
\e[38;5;81m \e[38;5;27m\e[38;5;81m \e[38;5;27m \e[38;5;81m \e[38;5;81m \e[38;5;27m\e[38;5;81m \e[38;5;27m \e[38;5;81m
\e[38;5;81m \e[38;5;27m\e[38;5;81m \e[38;5;27m \e[38;5;81m \e[38;5;81m \e[38;5;27m\e[38;5;81m \e[38;5;27m \e[38;5;81m
\e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m
\e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m
\e[38;5;27m \e[38;5;81m \e[38;5;27m \e[38;5;81m
\e[1;32mSystem Maintainer\e[0m: Kyler Clay \e[1;32mSystem Maintainer\e[0m: Kyler Clay
\e[1;32mContact\e[0m: kylerclay@proton.me \e[1;32mContact\e[0m: kylerclay@proton.me
470-403-8522 470-403-8522
Run '\e[1;35mnixos-help\e[0m' for the NixOS manual. Run '\e[1;35mnixos-help\e[0m' for the NixOS manual.
Run '\e[1;35mHyprland\e[0m' to enter the desktop environment. Run '\e[1;35mHyprland\e[0m' to enter the desktop environment.
''; '';
};
} }

View File

@@ -0,0 +1,21 @@
{lib, config, ... }: {
options = {
nixSettings.enable = lib.mkEnableOption "enables my nixos settings";
};
config = lib.mkIf config.nixSettings.enable {
nix = {
settings = {
auto-optimise-store = true;
experimental-features = ["nix-command" "flakes"];
substituters = ["https://nix-gaming.cachix.org"];
};
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
};
time.timeZone = "America/New_York";
i18n.defaultLocale = "en_US.UTF-8";
};
}

View File

@@ -1,24 +1,30 @@
{ {
pkgs, pkgs,
self, self,
lib,
config, config,
... ...
}: { }: {
environment.systemPackages = [ options = {
( sddmConfig.enable = lib.mkEnableOption "enables custom sddm configuration";
pkgs.catppuccin-sddm.override { };
flavor = "mocha"; config = lib.mkIf config.sddmConfig.enable {
font = "JetBrains Mono Nerd Font"; environment.systemPackages = [
fontSize = "14"; (
loginBackground = true; pkgs.catppuccin-sddm.override {
background = "${self}/assets/wallpapers/dark-waves.jpg"; flavor = "mocha";
} font = "JetBrains Mono Nerd Font";
) fontSize = "14";
]; loginBackground = true;
services.displayManager.sddm = { background = "${self}/assets/wallpapers/dark-waves.jpg";
enable = true; }
wayland.enable = true; )
theme = "catppuccin-mocha"; ];
package = pkgs.kdePackages.sddm; services.displayManager.sddm = {
enable = true;
wayland.enable = true;
theme = "catppuccin-mocha";
package = pkgs.kdePackages.sddm;
};
}; };
} }

View File

@@ -2,44 +2,51 @@
pkgs, pkgs,
scheme, scheme,
wallpaper, wallpaper,
lib,
config,
... ...
}: { }: {
stylix = { options = {
enable = true; stylixConfig.enable = lib.mkEnableOption "enables custom stylix options";
base16Scheme = scheme; };
image = wallpaper; config = lib.mkIf config.stylixConfig.enable {
polarity = "dark"; stylix = {
autoEnable = true; enable = true;
opacity.terminal = 0.5; base16Scheme = scheme;
targets = { image = wallpaper;
console.enable = true; polarity = "dark";
feh.enable = true; autoEnable = true;
grub.enable = true; opacity.terminal = 0.5;
gtk.enable = true; targets = {
nixos-icons.enable = true; console.enable = true;
}; feh.enable = true;
cursor = { grub.enable = true;
package = pkgs.bibata-cursors; gtk.enable = true;
name = "Bibata-Modern-Ice"; nixos-icons.enable = true;
};
fonts = {
monospace = {
package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];};
name = "JetBrains Mono Nerd Font";
}; };
sansSerif = { cursor = {
package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}; package = pkgs.bibata-cursors;
name = "JetBrains Mono Nerd Font"; name = "Bibata-Modern-Ice";
}; };
serif = { fonts = {
package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}; monospace = {
name = "JetBrains Mono Nerd Font"; package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];};
}; name = "JetBrains Mono Nerd Font";
sizes = { };
desktop = 10; sansSerif = {
applications = 14; package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];};
terminal = 14; name = "JetBrains Mono Nerd Font";
popups = 16; };
serif = {
package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];};
name = "JetBrains Mono Nerd Font";
};
sizes = {
desktop = 10;
applications = 14;
terminal = 14;
popups = 16;
};
}; };
}; };
}; };

View File

@@ -1,8 +1,14 @@
{pkgs, ...}: { {pkgs, lib, config, ...}: {
boot = { options = {
loader.systemd-boot.enable = true; # make this enabled by default!!!
loader.efi.canTouchEfiVariables = true; bootLoader.enable = lib.mkEnableOption "enables bootloader config";
loader.systemd-boot.configurationLimit = 10; };
kernelPackages = pkgs.linuxPackages_latest; config = lib.mkIf config.bootLoader.enable {
boot = {
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
loader.systemd-boot.configurationLimit = 10;
kernelPackages = pkgs.linuxPackages_latest;
};
}; };
} }

View File

@@ -10,5 +10,6 @@
}: { }: {
imports = imports =
[(import ./bootloader.nix)] [(import ./bootloader.nix)]
++ [(import ./network.nix)]; ++ [(import ./network.nix)]
++ [(import ./powerprofiles.nix)];
} }

View File

@@ -1,20 +1,24 @@
{host, ...}: let {host, lib, config, ...}: let
desktop = host == "oganesson"; desktop = host == "oganesson";
in { in {
networking = { options = {
networkmanager.enable = true; networkModule.enable = lib.mkEnableOption "enables network configuration";
hostName = };
if desktop config = lib.mkIf config.networkModule.enable {
then "oganesson" networking = {
else "mercury"; networkmanager.enable = true;
hosts = { hostName =
"192.168.1.201" = ["glasshaus"]; if desktop
"192.168.1.111" = ["argon"]; then "oganesson"
"192.168.1.223" = ["mercury"]; else "mercury";
}; hosts = {
firewall = { "192.168.1.201" = ["xenon"];
enable = true; "192.168.1.111" = ["argon"];
allowedTCPPorts = [30000]; "192.168.1.223" = ["mercury"];
};
firewall = {
enable = true;
};
}; };
}; };
} }

View File

@@ -0,0 +1,43 @@
{lib, config, ... }: {
options = {
powerProfiles.enable = lib.mkEnableOption "enables power profiles";
};
config = lib.mkIf config.powerProfiles.enable {
services = {
power-profiles-daemon.enable = true;
upower = {
enable = true;
percentageLow = 20;
percentageCritical = 5;
percentageAction = 3;
criticalPowerAction = "PowerOff";
};
tlp.settings = {
CPU_ENERGY_PERF_POLICY_ON_AC = "power";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
CPU_BOOST_ON_AC = 1;
CPU_BOOST_ON_BAT = 1;
CPU_HWP_DYN_BOOST_ON_AC = 1;
CPU_HWP_DYN_BOOST_ON_BAT = 1;
PLATFORM_PROFILE_ON_AC = "performance";
PLATFORM_PROFILE_ON_BAT = "performance";
INTEL_GPU_MIN_FREQ_ON_AC = 500;
INTEL_GPU_MIN_FREQ_ON_BAT = 500;
# INTEL_GPU_MAX_FREQ_ON_AC=0;
# INTEL_GPU_MAX_FREQ_ON_BAT=0;
# INTEL_GPU_BOOST_FREQ_ON_AC=0;
# INTEL_GPU_BOOST_FREQ_ON_BAT=0;
PCIE_ASPM_ON_AC = "default";
PCIE_ASPM_ON_BAT = "powersupersave";
};
};
};
}

View File

@@ -6,17 +6,13 @@
username, username,
host, host,
... ...
}: let }: {
desktop = host == "oganesson";
desktop_modules =
if desktop
then [(import ./virtualization.nix)] ++ [(import ./gaming)]
else [];
in {
imports = imports =
[(import ./packages.nix)] [(import ./packages.nix)]
++ [(import ./programs.nix)] ++ [(import ./programs.nix)]
++ [(import ./services.nix)] ++ [(import ./services.nix)]
++ [(import ./nixvim)] ++ [(import ./nixvim)]
++ desktop_modules; ++ [(import ./module-test.nix)]
++ [(import ./virtualization.nix)]
++ [(import ./gaming)];
} }

View File

@@ -1,5 +1,10 @@
{pkgs, ...}: { {lib, config, pkgs, ...}: {
environment.systemPackages = with pkgs; [ options = {
snes9x-gtk gamingPkgs.enable = lib.mkEnableOption "enables gaming packages";
]; };
config = lib.mkIf config.gamingPkgs.enable {
environment.systemPackages = with pkgs; [
snes9x-gtk
];
};
} }

View File

@@ -1,6 +1,11 @@
{...}: { {lib, config, ...}: {
programs.steam = { options = {
enable = true; steamConfig.enable = lib.mkEnableOption "enables steam configuration";
remotePlay.openFirewall = true; };
config = lib.mkIf config.steamConfig.enable {
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
};
}; };
} }

View File

@@ -0,0 +1,11 @@
{ pkgs, lib, config, ... }:
{
options = {
testmodule.enable = lib.mkEnableOption "enables test module";
};
config = lib.mkIf config.testmodule.enable {
environment.systemPackages = with pkgs; [
hello
];
};
}

View File

@@ -1,79 +1,82 @@
{ {lib, config, pkgs, inputs, ... }: {
pkgs, options = {
inputs, sysPkgs.enable = lib.mkEnableOption "enables default system packages";
... };
}: { config = lib.mkIf config.sysPkgs.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
alejandra alejandra
alsa-lib alsa-lib
alsa-utils alsa-utils
bc bc
cava cava
cabal-install cabal-install
clang clang
clang-tools clang-tools
cliphist cliphist
cmake cmake
fail2ban fail2ban
feh feh
ffmpeg-full ffmpeg-full
fuse fuse
git git
gnumake gnumake
gst_all_1.gstreamer gst_all_1.gstreamer
htop htop
hyprland hyprland-workspaces
hyprland-workspaces hyprpicker
hyprpicker imagemagick
imagemagick inetutils
inetutils kitty
kitty libclang
libclang libcxx
libcxx lolcat
lolcat lsof
lsof lua-language-server
lua-language-server luarocks
luarocks mesa
mesa mpd
mpd mullvad
mullvad mesa
mesa neofetch
neofetch nh
nh nix-index
nix-index nix-output-monitor
nix-output-monitor nix-prefetch-scripts
nix-prefetch-scripts nixos-option
nixos-option nix-search-cli
nix-search-cli nix-template
nvd mkdocs
openssl python3Packages.mkdocs-material
p7zip nvd
jq openssl
pamixer p7zip
parted jq
pavucontrol pamixer
pkg-config parted
playerctl pavucontrol
protonmail-bridge pkg-config
protontricks playerctl
pyright protonmail-bridge
socat protontricks
sox pyright
stress socat
tor sox
tree stress
unrar tor
unzip tree
usbutils unrar
vim unzip
vscode-langservers-extracted usbutils
vulkan-loader vim
wget vscode-langservers-extracted
wine vulkan-loader
wl-clipboard wget
xpad wine
libnotify wl-clipboard
file xpad
libvirt-glib libnotify
]; file
libvirt-glib
];
};
} }

View File

@@ -1,17 +1,22 @@
{pkgs, ...}: { {lib, config, pkgs, ...}: {
programs = { options = {
hyprland.enable = true; sysProgs.enable = lib.mkEnableOption "enables default system programs";
zsh.enable = true; };
nix-ld = { config = lib.mkIf config.sysProgs.enable {
enable = true; programs = {
libraries = with pkgs; [ hyprland.enable = true;
stdenv.cc.cc zsh.enable = true;
ffmpeg-full nix-ld = {
]; enable = true;
}; libraries = with pkgs; [
gnupg.agent = { stdenv.cc.cc
enable = true; ffmpeg-full
enableSSHSupport = true; ];
};
gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
}; };
}; };
} }

View File

@@ -1,19 +1,33 @@
{...}: { {lib, config, ...}: {
services = { options = {
pipewire = { sysServices.enable = lib.mkEnableOption "enables default system services";
enable = true; };
pulse.enable = true; config = lib.mkIf config.sysServices.enable {
wireplumber.enable = true; services = {
alsa.enable = true; keyd = {
alsa.support32Bit = true; enable = true;
}; keyboards.default = {
udev.enable = true; ids = ["*"];
dbus.enable = true; settings.main = {
mullvad-vpn.enable = true; capslock = "esc";
blueman.enable = true; };
openssh = { };
enable = true; };
allowSFTP = true; pipewire = {
enable = true;
pulse.enable = true;
wireplumber.enable = true;
alsa.enable = true;
alsa.support32Bit = true;
};
udev.enable = true;
dbus.enable = true;
mullvad-vpn.enable = true;
blueman.enable = true;
openssh = {
enable = true;
allowSFTP = true;
};
}; };
}; };
} }

View File

@@ -1,4 +1,9 @@
{username, ...}: { {lib, config, username, ...}: {
virtualisation.libvirtd.enable = true; options = {
programs.virt-manager.enable = true; virtConfig.enable = lib.mkEnableOption "enables virtualization";
};
config = lib.mkIf config.virtConfig.enable {
virtualisation.libvirtd.enable = true;
programs.virt-manager.enable = true;
};
} }