Compare commits

..

No commits in common. "c3354e36097ab3fc30f37614dbd2f0cb440bc4e2" and "8be52370c8a77991de889cf21a6abde394540505" have entirely different histories.

58 changed files with 507 additions and 1218 deletions

0
LICENSE Executable file → Normal file
View file

31
README.md Executable file → Normal file
View file

@ -1,33 +1,6 @@
# liminalOS
# NixOS Configuration Files
This is a repository that implements liminalOS, my personal Linux distribution based on [NixOS](https://nixos.org/).
Traditional Linux distributions are either _rolling_ or _fixed_ release. liminalOS operates on a new kind of release schedule: _liminal_ release.
> **lim·i·nal**
> 2. relating to a transitional or initial stage of a process.
Users who install liminalOS may feel a sense of eeriness similar to a [liminal space](<https://en.wikipedia.org/wiki/Liminal_space_(aesthetic)>) - the system has clearly been configured exactly according to someone's preferences and specifications, yet they stand alone in an empty OS, with the usual user nowhere to be found, and a home directory devoid of human presence. System updates are released at random times, and upon installing, it appears that someone has adjusted minute configuration details, yet no other users exist in the system.
## Installation guide
TBD. May use `deploy-rs` or the in-house [dartgun](https://github.com/youwen5/dartgun) tool for easy deployment.
## FAQ
### This looks like a collection of NixOS configuration files and modules. What makes it a distinct distribution?
Most Linux[^1] users will agree that any self-respecting distribution must include at least the following: installer, package manager, and some set of default packages. Therefore, anything that implements the aforementioned items must also be a Linux distribution.
liminalOS comes with the Nix package manager (nobody said you need a _unique_ package manager - Ubuntu and Debian are distinct distributions yet both use `apt`), a custom desktop environment composed of Waybar, Hyprland, rofi, as well as various applications installed by default, and [the means to generate an installer](https://nixos.wiki/wiki/Creating_a_NixOS_live_CD). Therefore, liminalOS is a Linux distribution. QED.[^2]
### Should I actually install this?
No.
[^1]: also known as GNU/Linux, GNU+Linux, Freedesktop/systemd/musl/busybox Linux, Linux+friends, etc
[^2]: disclaimer: this is unfortunately not actually how the converse works. A => B does not necessarily imply B => A. I hope this satiates the rigor-hungry mathematicians reading.
This repository directly mirrors `/etc/nixos` on my main NixOS machine. In the future, it will be modularized to support deployment across multiple machines.
## Keybinds

View file

View file

@ -1,27 +1,5 @@
{
"nodes": {
"apple-silicon": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1722469787,
"narHash": "sha256-P20oAmbgXHl1E77TXPXiAj1Ntycc1mf7fZMI7X13VYw=",
"owner": "tpwrules",
"repo": "nixos-apple-silicon",
"rev": "8a665fee82901878edaeb8ee120296a979db2dd2",
"type": "github"
},
"original": {
"owner": "tpwrules",
"repo": "nixos-apple-silicon",
"type": "github"
}
},
"bleedingpkgs": {
"locked": {
"lastModified": 1722979953,
@ -92,21 +70,6 @@
}
},
"flake-compat": {
"locked": {
"lastModified": 1688025799,
"narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=",
"owner": "nix-community",
"repo": "flake-compat",
"rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "flake-compat",
"type": "github"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
@ -289,14 +252,14 @@
"lanzaboote": {
"inputs": {
"crane": "crane",
"flake-compat": "flake-compat_2",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
"rust-overlay": "rust-overlay_2"
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1718178907,
@ -497,7 +460,6 @@
},
"root": {
"inputs": {
"apple-silicon": "apple-silicon",
"bleedingpkgs": "bleedingpkgs",
"catppuccin": "catppuccin",
"home-manager": "home-manager",
@ -512,22 +474,6 @@
}
},
"rust-overlay": {
"flake": false,
"locked": {
"lastModified": 1686795910,
"narHash": "sha256-jDa40qRZ0GRQtP9EMZdf+uCbvzuLnJglTUI2JoHfWDc=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "5c2b97c0a9bc5217fc3dfb1555aae0fb756d99f9",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_2": {
"inputs": {
"flake-utils": [
"lanzaboote",

View file

@ -32,30 +32,30 @@
"https://git.lix.systems/lix-project/nixos-module/archive/2.90.0.tar.gz";
inputs.nixpkgs.follows = "nixpkgs";
};
apple-silicon = {
url = "github:tpwrules/nixos-apple-silicon";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, home-manager, catppuccin, lanzaboote, stablepkgs
, bleedingpkgs, lix-module, nix-darwin, nix-homebrew, apple-silicon, ...
}@inputs: rec {
, bleedingpkgs, lix-module, nix-darwin, nix-homebrew, ... }@inputs: rec {
formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt;
nixosConfigurations = {
demeter = nixpkgs.lib.nixosSystem {
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
system = "x86_64-linux";
modules = [
./hosts/nixos
./modules/nixos/gaming
./modules/nixos/audio
./modules/nixos/networking
./modules/common/fonts
./modules/nixos/nixos-configuration.nix
./modules/nixos/secureboot.nix
./modules/nixos/gaming.nix
./modules/nixos/audio.nix
./modules/nixos/nvidia.nix
./modules/nixos/networking.nix
./modules/common/fonts.nix
./machines/nixos/hardware-configuration.nix
catppuccin.nixosModules.catppuccin
lix-module.nixosModules.default
lanzaboote.nixosModules.lanzaboote
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
@ -63,48 +63,18 @@
home-manager.backupFileExtension = "backup";
home-manager.users.youwen = {
imports = [
./users/youwen/linux/desktop
./users/youwen/linux/packages/x86_64
./users/youwen/linux/programs
./users/youwen/common
./modules/home-manager/linux/linux-home.nix
./modules/home-manager/linux/desktop.nix
./modules/home-manager/linux/programs.nix
./modules/home-manager/common/core.nix
./modules/home-manager/linux/catppuccin.nix
inputs.catppuccin.homeManagerModules.catppuccin
];
};
}
];
};
callisto = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
system = "aarch64-linux";
modules = [
./hosts/callisto
./modules/nixos/audio
./modules/nixos/networking
./modules/common/fonts
apple-silicon.nixosModules.apple-silicon-support
catppuccin.nixosModules.catppuccin
lix-module.nixosModules.default
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.users.youwen = {
imports = [
./users/youwen/common
./users/youwen/linux/laptop
./users/youwen/linux/packages/aarch-64
inputs.catppuccin.homeManagerModules.catppuccin
];
};
}
];
};
};
formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.nixfmt;
formatter.aarch64-linux = nixpkgs.legacyPackages.aarch64-linux.nixfmt;
# Build darwin flake using:
# $ darwin-rebuild build --flake .#Youwens-MacBook-Pro
darwinConfigurations."Youwens-MacBook-Pro" = nix-darwin.lib.darwinSystem {
@ -116,8 +86,8 @@
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.youwen.imports = [
./users/youwen/darwin/darwin-home.nix
./users/youwen/common/core.nix
./modules/home-manager/darwin/darwin-home.nix
./modules/home-manager/common/core.nix
];
home-manager.backupFileExtension = "backup";

View file

@ -1,196 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, inputs, pkgs, ... }:
{
imports = [ # Include the results of the hardware scan.
./hardware-configuration.nix
# ./apple-silicon-support
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = false;
hardware.asahi = {
peripheralFirmwareDirectory = ./firmware;
useExperimentalGPUDriver = true;
experimentalGPUInstallMode = "overlay";
};
boot.extraModprobeConfig = ''
options hid_apple iso_layout=0
'';
boot.kernelParams = [ "apple_dcp.show_notch=1" ];
networking.hostName = "callisto"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking.wireless.iwd = {
enable = true;
settings.General.EnableNetworkConfiguration = true;
};
nixpkgs.overlays = [ inputs.apple-silicon.overlays.apple-silicon-overlay ];
programs.light.enable = true;
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
# networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "America/Los_Angeles";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_US.UTF-8";
LC_IDENTIFICATION = "en_US.UTF-8";
LC_MEASUREMENT = "en_US.UTF-8";
LC_MONETARY = "en_US.UTF-8";
LC_NAME = "en_US.UTF-8";
LC_NUMERIC = "en_US.UTF-8";
LC_PAPER = "en_US.UTF-8";
LC_TELEPHONE = "en_US.UTF-8";
LC_TIME = "en_US.UTF-8";
};
# Enable the X11 windowing system.
# You can disable this if you're only using the Wayland session.
services.xserver.enable = false;
programs.nix-ld = {
enable = true;
libraries = with pkgs; [ icu xorg.libXtst xorg.libXi ];
};
# Enable the KDE Plasma Desktop Environment.
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
theme = "catppuccin-mocha";
package = pkgs.kdePackages.sddm;
};
# services.desktopManager.plasma6.enable = true;
# Configure keymap in X11
services.xserver = {
xkb.layout = "us";
xkb.variant = "";
};
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.youwen = {
isNormalUser = true;
description = "Youwen Wu";
extraGroups = [ "networkmanager" "wheel" "nixos" "realtime" ];
};
users.groups.realtime = { };
nix.settings = {
trusted-users = [ "root" "youwen" ];
experimental-features = [ "nix-command" "flakes" ];
};
services.udev.extraRules = ''
KERNEL=="cpu_dma_latency", GROUP="realtime"
'';
security.pam.loginLimits = [
{
domain = "@realtime";
type = "-";
item = "rtprio";
value = 98;
}
{
domain = "@realtime";
type = "-";
item = "memlock";
value = "unlimited";
}
{
domain = "@realtime";
type = "-";
item = "nice";
value = -11;
}
];
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
neovim
wget
git
curl
# librewolf
# gnumake
# clang
# gcc
# cachix
# nodejs_22
# cargo
# rustc
# gnupg
# openssh
# python3
(pkgs.catppuccin-sddm.override { flavor = "mocha"; })
# steam-run
# # deps for neovim compilation
# lua51Packages.lua
# lua51Packages.luarocks
# tree-sitter
];
environment.variables = {
EDITOR = "nvim";
NIX_AUTO_RUN = 1;
};
# tells electron apps to use Wayland
environment.sessionVariables.NIXOS_OZONE_WL = "1";
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
programs.dconf.enable = true;
programs.hyprland.enable = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.11"; # Did you read the comment?
programs.zsh.enable = false;
programs.fish.enable = true;
users.users.youwen.shell = pkgs.fish;
}

View file

@ -1,94 +0,0 @@
# Edit this configuration file to define what should be installed on your system. Help is available in the configuration.nix(5) man page, on https://search.nixos.org/options and in
# the NixOS manual (`nixos-help`).
{ config, lib, pkgs, ... }:
{ imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
./apple-silicon-support
];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = false;
hardware.asahi.peripheralFirmwareDirectory = ./firmware;
boot.extraModprobeConfig = ''
options hid_apple iso_layout=0
'';
networking.wireless.iwd = {
enable = true;
settings.General.EnableNetworkConfiguration = true;
};
networking.hostName = "callisto"; # Define your hostname. Pick only one of the below networking options. networking.wireless.enable = true; # Enables wireless support via
# wpa_supplicant. networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
Set your time zone. time.timeZone = "America/Amsterdam";
# Configure network proxy if necessary networking.proxy.default = "http://user:password@proxy:port/"; networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16"; keyMap = "us"; useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system. services.xserver.enable = true;
# Configure keymap in X11 services.xserver.xkb.layout = "us"; services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents. services.printing.enable = true;
# Enable sound. hardware.pulseaudio.enable = true; OR services.pipewire = {
# enable = true; pulse.enable = true;
# };
# Enable touchpad support (enabled default in most desktopManager). services.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd. users.users.alice = {
# isNormalUser = true; extraGroups = [ "wheel" ]; # Enable sudo for the user. packages = with pkgs; [
# firefox tree
# ];
# };
# List packages installed in system profile. To search, run: $ nix search wget environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. wget
# ];
# Some programs need SUID wrappers, can be configured further or are started in user sessions. programs.mtr.enable = true; programs.gnupg.agent = {
# enable = true; enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon. services.openssh.enable = true;
# Open ports in the firewall. networking.firewall.allowedTCPPorts = [ ... ]; networking.firewall.allowedUDPPorts = [ ... ]; Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system (/run/current-system/configuration.nix). This is useful in case you accidentally delete
# configuration.nix. system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine, and is used to maintain compatibility with application data (e.g. databases)
# created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason, even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from, so changing it will NOT upgrade your system - see
# https://nixos.org/manual/nixos/stable/#sec-upgrading for how to actually do that.
#
# This value being lower than the current NixOS release does NOT mean your system is out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "24.11"; # Did you read the comment?
}

View file

@ -1,35 +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 = [ "usb_storage" "sdhci_pci" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/bc88058e-6e3a-4987-b78e-e19cb5611608";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/852F-07F1";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
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.wlan0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
}

View file

0
modules/darwin/darwin-configuration.nix Executable file → Normal file
View file

0
modules/darwin/homebrew.nix Executable file → Normal file
View file

0
modules/darwin/yabai.nix Executable file → Normal file
View file

View file

@ -1,6 +1,6 @@
{ pkgs, ... }: {
programs.bash.enable = true;
programs.nushell = {
programs.bash.enable = pkgs.lib.mkDefault true;
programs.nushell = pkgs.lib.mkDefault {
enable = true;
configFile.text = ''
$env.config = {
@ -10,21 +10,21 @@
'';
};
programs.fzf = { enable = true; };
programs.fzf = pkgs.lib.mkDefault { enable = true; };
programs.git = {
programs.git = pkgs.lib.mkDefault {
enable = true;
userName = "Youwen Wu";
userEmail = "youwenw@gmail.com";
delta.enable = true;
extraConfig = {
init.defaultBranch = "main";
commit.gpgsign = pkgs.lib.mkDefault "true";
commit.gpgsign = "true";
user.signingkey = "8F5E6C1AF90976CA7102917A865658ED1FE61EC3";
};
};
programs.lazygit = {
programs.lazygit = pkgs.lib.mkDefault {
enable = true;
settings = {
git.paging = {
@ -34,28 +34,28 @@
};
};
programs.bat.enable = true;
programs.bat.enable = pkgs.lib.mkDefault true;
programs.ripgrep.enable = true;
programs.ripgrep.enable = pkgs.lib.mkDefault true;
programs.readline = {
enable = true;
extraConfig = "set editing-mode vi";
};
programs.zoxide = {
programs.zoxide = pkgs.lib.mkDefault {
enable = true;
# enableZshIntegration = true;
enableFishIntegration = true;
enableNushellIntegration = true;
};
programs.gh = {
programs.gh = pkgs.lib.mkDefault {
enable = true;
extensions = [ pkgs.github-copilot-cli ];
};
programs.oh-my-posh = {
programs.oh-my-posh = pkgs.lib.mkDefault {
enable = true;
# enableZshIntegration = true;
enableFishIntegration = true;
@ -124,9 +124,9 @@
];
};
programs.fd.enable = true;
programs.fd.enable = pkgs.lib.mkDefault true;
programs.btop = {
programs.btop = pkgs.lib.mkDefault {
enable = true;
settings = {
color_theme = "tokyo-night";
@ -135,13 +135,13 @@
};
};
programs.eza = {
programs.eza = pkgs.lib.mkDefault {
enable = true;
enableFishIntegration = true;
enableBashIntegration = true;
};
programs.neovim = {
programs.neovim = pkgs.lib.mkDefault {
enable = true;
defaultEditor = true;
viAlias = true;

View file

@ -19,7 +19,8 @@
# xxx
# '';
home.file.".config/neofetch/config.conf".source = ../common/neofetch.conf;
home.file.".config/neofetch/config.conf".source =
../../../config/neofetch.conf;
# Packages that should be installed to the user profile.
home.packages = with pkgs; [

View file

@ -0,0 +1,55 @@
{ pkgs, ... }: {
wayland.windowManager.hyprland = import ./hyprland-conf.nix;
# Audio effects and EQ tool
services.easyeffects.enable = true;
services.easyeffects.package = pkgs.easyeffects;
# Notification daemon
services.dunst = {
enable = true;
catppuccin.enable = true;
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
size = "32x32";
};
};
# Currently non-functional
programs.wlogout.enable = true;
gtk = {
enable = true;
catppuccin.enable = true;
cursorTheme = {
name = "Bibata-Modern-Ice";
size = 26;
};
iconTheme = { name = "Papirus-Dark"; };
};
qt = {
enable = true;
platformTheme.name = "qtct";
style.name = "kvantum";
};
xdg.configFile = {
"Kvantum/kvantum.kvconfig".text = ''
[General]
theme=GraphiteNordDark
'';
"Kvantum/GraphiteNord".source =
"${pkgs.graphite-kde-theme}/share/Kvantum/GraphiteNord";
};
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
theme = "gruvbox-dark";
};
programs.waybar = import ./waybar/waybar-conf.nix;
}

View file

@ -0,0 +1,208 @@
{
enable = true;
settings = {
exec-once = [ "waypaper --restore" ];
"$mod" = "SUPER";
"$Left" = "Y";
"$Right" = "O";
"$Up" = "I";
"$Down" = "U";
env = [
"HYPRCURSOR_THEME,Bibata-Modern-Ice"
"HYPRCURSOR_SIZE,26"
"XCURSOR_THEME,Bibata-Modern-Ice"
"XCURSOR_SIZE,26"
];
bind = [
# Application Keybinds
"$mod, F, exec, librewolf"
"$mod, T, exec, kitty"
"$mod, E, exec, dolphin"
"$mod, R, exec, pavucontrol"
# Window actions
"$mod, Q, killactive"
"$mod, W, togglefloating"
"$mod, J, togglesplit"
"$mod, Return, fullscreen"
# Move around
"$mod, $Left, movefocus, l"
"$mod, $Right, movefocus, r"
"$mod, $Up, movefocus, u"
"$mod, $Down, movefocus, d"
"$mod, 1, workspace, 1"
"$mod, 2, workspace, 2"
"$mod, 3, workspace, 3"
"$mod, 4, workspace, 4"
"$mod, 5, workspace, 5"
"$mod, 6, workspace, 6"
"$mod, 7, workspace, 7"
"$mod, 8, workspace, 8"
"$mod, 9, workspace, 9"
"$mod, 0, workspace, 10"
"$mod, S, togglespecialworkspace"
# Move windows around
"$mod+Shift+Ctrl, $Left, movewindow, l"
"$mod+Shift+Ctrl, $Right, movewindow, r"
"$mod+Shift+Ctrl, $Up, movewindow, u"
"$mod+Shift+Ctrl, $Down, movewindow, d"
"$mod+Ctrl+Alt, $Right, movetoworkspace, r+1"
"$mod+Ctrl+Alt, $Left, movetoworkspace, r-1"
"$mod+Ctrl, $Right, workspace, r+1"
"$mod+Ctrl, $Left, workspace, r-1"
"$mod+Alt, S, movetoworkspacesilent, special"
# Utilities
"$mod, Space, exec, pkill -x rofi || rofi -show drun" # Run rofi
''$mod, P, exec, grim -g "$(slurp)" - | swappy -f -'' # Screenshot
"$mod, Backspace, exec, wlogout" # Screenshot
];
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod, Z, movewindow"
"$mod, X, resizewindow"
];
windowrulev2 = [
"opacity 0.90 0.90,class:^(librewolf)$"
"opacity 0.90 0.90,class:^(Brave-browser)$"
"opacity 0.80 0.80,class:^(Steam)$"
"opacity 0.80 0.80,class:^(steam)$"
"opacity 0.80 0.80,class:^(steamwebhelper)$"
"opacity 0.80 0.80,class:^(Spotify)$"
"opacity 0.80 0.80,initialTitle:^(Spotify Premium)$"
"opacity 0.80 0.80,initialTitle:^(Spotify Free)$"
"opacity 0.80 0.80,class:^(code-oss)$"
"opacity 0.80 0.80,class:^(Code)$"
"opacity 0.80 0.80,class:^(code-url-handler)$"
"opacity 0.80 0.80,class:^(code-insiders-url-handler)$"
"opacity 0.80 0.80,class:^(kitty)$"
"opacity 0.80 0.80,class:^(org.kde.dolphin)$"
"opacity 0.80 0.80,class:^(org.kde.ark)$"
"opacity 0.80 0.80,class:^(nwg-look)$"
"opacity 0.80 0.80,class:^(qt5ct)$"
"opacity 0.80 0.80,class:^(qt6ct)$"
"opacity 0.80 0.80,class:^(kvantummanager)$"
"opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk"
"opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk"
"opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk"
"opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt"
"opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk"
"opacity 0.80 0.80,class:^(discord)$ # Discord-Electron"
"opacity 0.80 0.80,class:^(vesktop)$ # Vesktop-Electron"
"opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron"
"opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk"
"opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt"
"opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk"
"opacity 0.80 0.80,class:^(signal)$ # Signal-Gtk"
"opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk"
"opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk"
"opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk"
"opacity 0.80 0.80,class:^(lutris)$ # Lutris game launcher"
"opacity 0.80 0.70,class:^(pavucontrol)$"
"opacity 0.80 0.70,class:^(blueman-manager)$"
"opacity 0.80 0.70,class:^(nm-applet)$"
"opacity 0.80 0.70,class:^(nm-connection-editor)$"
"opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$"
"float,class:^(org.kde.dolphin)$,title:^(Progress Dialog Dolphin)$"
"float,class:^(org.kde.dolphin)$,title:^(Copying Dolphin)$"
"float,title:^(Picture-in-Picture)$"
"float,class:^(librewolf)$,title:^(Library)$"
"float,class:^(vlc)$"
"float,class:^(kvantummanager)$"
"float,class:^(qt5ct)$"
"float,class:^(qt6ct)$"
"float,class:^(nwg-look)$"
"float,class:^(org.kde.ark)$"
"float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk"
"float,class:^(app.drey.Warp)$ # Warp-Gtk"
"float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt"
"float,class:^(yad)$ # Protontricks-Gtk"
"float,class:^(eog)$ # Imageviewer-Gtk"
"float,class:^(io.github.alainm23.planify)$ # planify-Gtk"
"float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk"
"float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk"
"float,class:^(pavucontrol)$"
"float,class:^(blueman-manager)$"
"float,class:^(nm-applet)$"
"float,class:^(nm-connection-editor)$"
"float,class:^(org.kde.polkit-kde-authentication-agent-1)$"
"opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.gtk)$"
"opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.hyprland)$"
];
layerrule = [
"blur,rofi"
"ignorezero,rofi"
"blur,notifications"
"ignorezero,notifications"
"blur,swaync-notification-window"
"ignorezero,swaync-notification-window"
"blur,swaync-control-center"
"ignorezero,swaync-control-center"
"blur,logout_dialog"
];
monitor =
[ "DP-1,2560x1440@165,1920x0,auto" "HDMI-A-1,1920x1080@60,0x0,1" ];
dwindle = {
pseudotile = "yes";
preserve_split = "yes";
};
animations = {
enabled = "yes";
bezier = [
"wind, 0.05, 0.9, 0.1, 1.05"
"winIn, 0.1, 1.1, 0.1, 1.1"
"winOut, 0.3, -0.3, 0, 1"
"liner, 1, 1, 1, 1"
];
animation = [
"windows, 1, 6, wind, slide"
"windowsIn, 1, 6, winIn, slide"
"windowsOut, 1, 5, winOut, slide"
"windowsMove, 1, 5, wind, slide"
"border, 1, 1, liner"
"borderangle, 1, 30, liner, loop"
"fade, 1, 10, default"
"workspaces, 1, 5, wind"
];
};
general = {
gaps_in = "3";
gaps_out = "8";
border_size = "2";
#
# the dot is a hyprland name, not nix syntax, so we escape it
"col.active_border" = "rgba(ca9ee6ff) rgba(f2d5cfff) 45deg";
"col.inactive_border" = "rgba(b4befecc) rgba(6c7086cc) 45deg";
layout = "dwindle";
resize_on_border = "true";
sensitivity = "0.5";
};
decoration = {
rounding = "10";
drop_shadow = "false";
dim_special = "0.3";
blur = {
enabled = "yes";
size = "6";
passes = "3";
new_optimizations = "on";
ignore_opacity = "on";
xray = "false";
special = true;
};
};
};
}

View file

@ -19,11 +19,69 @@
# xxx
# '';
home.file.".config/neofetch/config.conf".source = ../common/neofetch.conf;
home.file.".config/neofetch/config.conf".source =
../../../config/neofetch.conf;
home.file.".wallpapers" = {
source = ../../../wallpapers;
recursive = true;
};
# Packages that should be installed to the user profile.
home.packages = with pkgs; [
neofetch
# archives
zip
xz
unzip
p7zip
# utils
nurl # helps fetch git data for nixpkgs
# nix related
#
# it provides the command `nom` works just like `nix`
# with more details log output
nix-output-monitor
# system tools
pciutils # lspci
usbutils # lsusb
# desktop utils
wl-clipboard
grim
slurp
swappy
pavucontrol
swww
waypaper
# desktop apps
dolphin
bitwarden-desktop
thunderbird
spotify
vesktop
signal-desktop
modrinth-app
lutris
wine
# dev tools
nodePackages_latest.pnpm
rustfmt
rust-analyzer
# desktop ricing
bibata-cursors
libsForQt5.qtstyleplugin-kvantum
libsForQt5.qt5ct
papirus-icon-theme
libsForQt5.qt5ct
];
# This value determines the home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new home Manager release introduces backwards
@ -34,29 +92,6 @@
# the home Manager release notes for a list of state version
# changes in each release.
# Audio effects and EQ tool
services.easyeffects.enable = true;
services.easyeffects.package = pkgs.easyeffects;
# Notification daemon
services.dunst = {
enable = true;
catppuccin.enable = true;
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
size = "32x32";
};
};
# Currently non-functional
programs.wlogout.enable = true;
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
theme = "gruvbox-dark";
};
# Let home Manager install and manage itself.
programs.home-manager.enable = true;
}

View file

@ -0,0 +1,89 @@
{
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 24;
width = 1600;
reload-style-on-change = true;
margin = "10px 0px 0px 0px";
modules-left = [ "hyprland/window" "hyprland/workspaces" ];
modules-right = [ "backlight" "group/adjustable" "custom/weather" ];
modules-center = [ "network" "group/hardware" "clock" ];
"hyprland/workspaces" = {
active-only = false;
all-outputs = false;
format = "{icon}";
persistent-workspaces = {
eDP-1 = [ 1 ];
DP-1 = [ 2 3 4 5 ];
};
};
"group/hardware" = {
orientation = "inherit";
modules = [ "cpu" "memory" "battery" ];
};
"group/adjustable" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
transition-left-to-right = true;
};
modules = [ "pulseaudio" "mpris" ];
};
"custom/weather" = {
orientation = "horizontal";
exec = ''curl wttr.in/?format="%l:%20%t"'';
interval = 10;
};
cpu = {
interval = 10;
format = "{usage}% ";
};
memory = {
interval = 10;
format = "{percentage}% ";
};
# mpris = {
# format-playing = "  {title} ";
# format-paused = " 󰏤 {title} ";
# format-stopped = "Nothing Playing";
# };
tray = { spacing = 10; };
clock = { format = "{:%a %b %d, %I:%M %p} "; };
backlight = {
device = "intel_backlight";
format = "{percent}% {icon}";
format-icons = [ "󰃞" "󰃠" ];
};
battery = {
states = {
good = 95;
warning = 20;
critical = 10;
};
format = "{capacity}% {icon}";
format-icons = [ "󰁻" "󰁽" "󰁿" "󰂀" "󰁹" ];
};
"hyprland/window" = { format = "{class}"; };
network = {
format-wifi = "{essid} ";
format-linked = "{ifname} (No IP) ";
format-disconnected = "Disconnected ";
format-alt = "{ifname}: {ipaddr}/{cidr}";
};
pulseaudio = {
format = "{volume}% {icon} {format_source}";
format-bluetooth = "{volume}% {icon} {format_source}";
format-bluetooth-muted = " {icon} {format_source}";
format-muted = " {format_source}";
format-source = "{volume}% ";
format-source-muted = "";
format-icons = { default = [ "" "" "" ]; };
};
};
};
style = ./waybar.css;
systemd.enable = true;
}

View file

View file

@ -22,10 +22,6 @@
libvorbis
stdenv.cc.cc.lib
libkrb5
(writeShellScriptBin "launch-gamescope" ''
(sleep 1; pgrep gamescope| xargs renice -n -11 -p)&
exec gamescope "$@"
'')
keyutils
];
};

View file

View file

@ -2,33 +2,24 @@
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, inputs, pkgs, lib, ... }:
{ config, inputs, pkgs, ... }:
{
imports = [ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# imports = [ # Include the results of the hardware scan.
# ./hardware-configuration.nix
# ];
# Bootloader.
boot.loader = {
efi.canTouchEfiVariables = true;
timeout = 15;
# Lanzaboote currently replaces the systemd-boot module.
# This setting is usually set to true in configuration.nix
# generated at installation time. So we force it to false
# for now.
systemd-boot = {
enable = false;
enable = true;
consoleMode = "auto";
};
};
boot.lanzaboote = {
enable = true;
pkiBundle = "/etc/secureboot";
};
networking.hostName = "demeter"; # Define your hostname.
networking.hostName = "nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# select kernel
@ -78,20 +69,6 @@
package = pkgs.kdePackages.sddm;
};
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
};
hardware.graphics.enable = true;
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable;
services.xserver.videoDrivers = [ "nvidia" ];
# services.desktopManager.plasma6.enable = true;
# Configure keymap in X11
@ -110,41 +87,14 @@
users.users.youwen = {
isNormalUser = true;
description = "Youwen Wu";
extraGroups = [ "networkmanager" "wheel" "nixos" "realtime" ];
extraGroups = [ "networkmanager" "wheel" "nixos" ];
};
users.groups.realtime = { };
nix.settings = {
trusted-users = [ "root" "youwen" ];
experimental-features = [ "nix-command" "flakes" ];
};
services.udev.extraRules = ''
KERNEL=="cpu_dma_latency", GROUP="realtime"
'';
security.pam.loginLimits = [
{
domain = "@realtime";
type = "-";
item = "rtprio";
value = 98;
}
{
domain = "@realtime";
type = "-";
item = "memlock";
value = "unlimited";
}
{
domain = "@realtime";
type = "-";
item = "nice";
value = -11;
}
];
# Allow unfree packages
nixpkgs.config.allowUnfree = true;

15
modules/nixos/nvidia.nix Normal file
View file

@ -0,0 +1,15 @@
{ config, ... }: {
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
};
hardware.graphics.enable = true;
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.stable;
services.xserver.videoDrivers = [ "nvidia" ];
}

View file

@ -0,0 +1,17 @@
({ pkgs, lib, ... }: {
environment.systemPackages = [
# For debugging and troubleshooting Secure Boot.
pkgs.sbctl
];
# Lanzaboote currently replaces the systemd-boot module.
# This setting is usually set to true in configuration.nix
# generated at installation time. So we force it to false
# for now.
boot.loader.systemd-boot.enable = lib.mkForce false;
boot.lanzaboote = {
enable = true;
pkiBundle = "/etc/secureboot";
};
})

View file

@ -1 +0,0 @@
{ imports = [ ./core.nix ]; }

View file

@ -1,10 +0,0 @@
{
imports = [
../theming
../home.nix
../programs
../hyprland/desktop
../waybar/desktop
];
}

View file

@ -1,210 +0,0 @@
{
wayland.windowManager.hyprland = {
enable = true;
settings = {
exec-once = [ "waypaper --restore" ];
"$mod" = "SUPER";
"$Left" = "Y";
"$Right" = "O";
"$Up" = "I";
"$Down" = "U";
env = [
"HYPRCURSOR_THEME,Bibata-Modern-Ice"
"HYPRCURSOR_SIZE,26"
"XCURSOR_THEME,Bibata-Modern-Ice"
"XCURSOR_SIZE,26"
];
bind = [
# Application Keybinds
"$mod, F, exec, librewolf"
"$mod, T, exec, kitty"
"$mod, E, exec, dolphin"
"$mod, R, exec, pavucontrol"
# Window actions
"$mod, Q, killactive"
"$mod, W, togglefloating"
"$mod, J, togglesplit"
"$mod, Return, fullscreen"
# Move around
"$mod, $Left, movefocus, l"
"$mod, $Right, movefocus, r"
"$mod, $Up, movefocus, u"
"$mod, $Down, movefocus, d"
"$mod, 1, workspace, 1"
"$mod, 2, workspace, 2"
"$mod, 3, workspace, 3"
"$mod, 4, workspace, 4"
"$mod, 5, workspace, 5"
"$mod, 6, workspace, 6"
"$mod, 7, workspace, 7"
"$mod, 8, workspace, 8"
"$mod, 9, workspace, 9"
"$mod, 0, workspace, 10"
"$mod, S, togglespecialworkspace"
# Move windows around
"$mod+Shift+Ctrl, $Left, movewindow, l"
"$mod+Shift+Ctrl, $Right, movewindow, r"
"$mod+Shift+Ctrl, $Up, movewindow, u"
"$mod+Shift+Ctrl, $Down, movewindow, d"
"$mod+Ctrl+Alt, $Right, movetoworkspace, r+1"
"$mod+Ctrl+Alt, $Left, movetoworkspace, r-1"
"$mod+Ctrl, $Right, workspace, r+1"
"$mod+Ctrl, $Left, workspace, r-1"
"$mod+Alt, S, movetoworkspacesilent, special"
# Utilities
"$mod, Space, exec, pkill -x rofi || rofi -show drun" # Run rofi
''$mod, P, exec, grim -g "$(slurp)" - | swappy -f -'' # Screenshot
"$mod, Backspace, exec, wlogout" # Screenshot
];
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod, Z, movewindow"
"$mod, X, resizewindow"
];
windowrulev2 = [
"opacity 0.90 0.90,class:^(librewolf)$"
"opacity 0.90 0.90,class:^(Brave-browser)$"
"opacity 0.80 0.80,class:^(Steam)$"
"opacity 0.80 0.80,class:^(steam)$"
"opacity 0.80 0.80,class:^(steamwebhelper)$"
"opacity 0.80 0.80,class:^(Spotify)$"
"opacity 0.80 0.80,initialTitle:^(Spotify Premium)$"
"opacity 0.80 0.80,initialTitle:^(Spotify Free)$"
"opacity 0.80 0.80,class:^(code-oss)$"
"opacity 0.80 0.80,class:^(Code)$"
"opacity 0.80 0.80,class:^(code-url-handler)$"
"opacity 0.80 0.80,class:^(code-insiders-url-handler)$"
"opacity 0.80 0.80,class:^(kitty)$"
"opacity 0.80 0.80,class:^(org.kde.dolphin)$"
"opacity 0.80 0.80,class:^(org.kde.ark)$"
"opacity 0.80 0.80,class:^(nwg-look)$"
"opacity 0.80 0.80,class:^(qt5ct)$"
"opacity 0.80 0.80,class:^(qt6ct)$"
"opacity 0.80 0.80,class:^(kvantummanager)$"
"opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk"
"opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk"
"opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk"
"opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt"
"opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk"
"opacity 0.80 0.80,class:^(discord)$ # Discord-Electron"
"opacity 0.80 0.80,class:^(vesktop)$ # Vesktop-Electron"
"opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron"
"opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk"
"opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt"
"opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk"
"opacity 0.80 0.80,class:^(signal)$ # Signal-Gtk"
"opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk"
"opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk"
"opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk"
"opacity 0.80 0.80,class:^(lutris)$ # Lutris game launcher"
"opacity 0.80 0.70,class:^(pavucontrol)$"
"opacity 0.80 0.70,class:^(blueman-manager)$"
"opacity 0.80 0.70,class:^(nm-applet)$"
"opacity 0.80 0.70,class:^(nm-connection-editor)$"
"opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$"
"float,class:^(org.kde.dolphin)$,title:^(Progress Dialog Dolphin)$"
"float,class:^(org.kde.dolphin)$,title:^(Copying Dolphin)$"
"float,title:^(Picture-in-Picture)$"
"float,class:^(librewolf)$,title:^(Library)$"
"float,class:^(vlc)$"
"float,class:^(kvantummanager)$"
"float,class:^(qt5ct)$"
"float,class:^(qt6ct)$"
"float,class:^(nwg-look)$"
"float,class:^(org.kde.ark)$"
"float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk"
"float,class:^(app.drey.Warp)$ # Warp-Gtk"
"float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt"
"float,class:^(yad)$ # Protontricks-Gtk"
"float,class:^(eog)$ # Imageviewer-Gtk"
"float,class:^(io.github.alainm23.planify)$ # planify-Gtk"
"float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk"
"float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk"
"float,class:^(pavucontrol)$"
"float,class:^(blueman-manager)$"
"float,class:^(nm-applet)$"
"float,class:^(nm-connection-editor)$"
"float,class:^(org.kde.polkit-kde-authentication-agent-1)$"
"opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.gtk)$"
"opacity 0.80 0.80,class:^(org.freedesktop.impl.portal.desktop.hyprland)$"
];
layerrule = [
"blur,rofi"
"ignorezero,rofi"
"blur,notifications"
"ignorezero,notifications"
"blur,swaync-notification-window"
"ignorezero,swaync-notification-window"
"blur,swaync-control-center"
"ignorezero,swaync-control-center"
"blur,logout_dialog"
];
monitor =
[ "DP-1,2560x1440@165,1920x0,auto" "HDMI-A-1,1920x1080@60,0x0,1" ];
dwindle = {
pseudotile = "yes";
preserve_split = "yes";
};
animations = {
enabled = "yes";
bezier = [
"wind, 0.05, 0.9, 0.1, 1.05"
"winIn, 0.1, 1.1, 0.1, 1.1"
"winOut, 0.3, -0.3, 0, 1"
"liner, 1, 1, 1, 1"
];
animation = [
"windows, 1, 6, wind, slide"
"windowsIn, 1, 6, winIn, slide"
"windowsOut, 1, 5, winOut, slide"
"windowsMove, 1, 5, wind, slide"
"border, 1, 1, liner"
"borderangle, 1, 30, liner, loop"
"fade, 1, 10, default"
"workspaces, 1, 5, wind"
];
};
general = {
gaps_in = "3";
gaps_out = "8";
border_size = "2";
#
# the dot is a hyprland name, not nix syntax, so we escape it
"col.active_border" = "rgba(ca9ee6ff) rgba(f2d5cfff) 45deg";
"col.inactive_border" = "rgba(b4befecc) rgba(6c7086cc) 45deg";
layout = "dwindle";
resize_on_border = "true";
sensitivity = "0.5";
};
decoration = {
rounding = "10";
drop_shadow = "false";
dim_special = "0.3";
blur = {
enabled = "yes";
size = "6";
passes = "3";
new_optimizations = "on";
ignore_opacity = "on";
xray = "false";
special = true;
};
};
};
};
}

View file

@ -1 +0,0 @@
{ imports = [ ../common.nix ]; }

View file

@ -1,18 +0,0 @@
{ lib, ... }:
{
imports = [ ../common.nix ];
wayland.windowManager.hyprland.settings.input.touchpad = {
natural_scroll = true;
disable_while_typing = true;
clickfinger_behavior = true;
tap-to-click = false;
scroll_factor = 0.5;
};
wayland.windowManager.hyprland.settings.general.sensitivity = lib.mkForce 1.0;
wayland.windowManager.hyprland.settings.env = [
"HYPRCURSOR_THEME,Bibata-Modern-Ice"
"HYPRCURSOR_SIZE,24"
"XCURSOR_THEME,Bibata-Modern-Ice"
"XCURSOR_SIZE,24"
];
}

View file

@ -1,14 +0,0 @@
{ pkgs, ... }:
{
imports = [
../theming
../home.nix
../programs
../hyprland/laptop
../waybar/laptop
];
# some overrides for laptop specifically
programs.kitty.settings.font_size = pkgs.lib.mkForce 11;
}

View file

@ -1,3 +0,0 @@
{ pkgs, ... }:
let createCommon = import ../common-packages.nix;
in { home.packages = ((createCommon pkgs) ++ [ ]); }

View file

@ -1,50 +0,0 @@
pkgs:
with pkgs; [
neofetch
# archives
zip
xz
unzip
p7zip
# utils
nurl # helps fetch git data for nixpkgs
# nix related
#
# it provides the command `nom` works just like `nix`
# with more details log output
nix-output-monitor
# system tools
pciutils # lspci
usbutils # lsusb
# desktop utils
wl-clipboard
grim
slurp
swappy
pavucontrol
swww
waypaper
# desktop apps
dolphin
thunderbird
vesktop
signal-desktop
# dev tools
nodePackages_latest.pnpm
rustfmt
rust-analyzer
# desktop ricing
bibata-cursors
libsForQt5.qtstyleplugin-kvantum
libsForQt5.qt5ct
papirus-icon-theme
libsForQt5.qt5ct
]

View file

@ -1,12 +0,0 @@
{ pkgs, ... }:
let createCommon = import ../common-packages.nix;
in {
home.packages = ((createCommon pkgs) ++ (with pkgs; [
spotify
bitwarden-desktop
modrinth-app
lutris
wine
sbctl
]));
}

View file

@ -1,30 +0,0 @@
{ pkgs, ... }: {
imports = [ ./catppuccin.nix ];
gtk = {
enable = true;
catppuccin.enable = true;
cursorTheme = {
name = "Bibata-Modern-Ice";
size = 26;
};
iconTheme = { name = "Papirus-Dark"; };
};
qt = {
enable = true;
platformTheme.name = "qtct";
style.name = "kvantum";
};
xdg.configFile = {
"Kvantum/kvantum.kvconfig".text = ''
[General]
theme=GraphiteNordDark
'';
"Kvantum/GraphiteNord".source =
"${pkgs.graphite-kde-theme}/share/Kvantum/GraphiteNord";
};
}

View file

@ -1,91 +0,0 @@
{
programs.waybar = {
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 24;
width = 1600;
reload-style-on-change = true;
margin = "10px 0px 0px 0px";
modules-left = [ "hyprland/window" "hyprland/workspaces" ];
modules-right = [ "backlight" "group/adjustable" "custom/weather" ];
modules-center = [ "network" "group/hardware" "clock" ];
"hyprland/workspaces" = {
active-only = false;
all-outputs = false;
format = "{icon}";
persistent-workspaces = {
eDP-1 = [ 1 ];
DP-1 = [ 2 3 4 5 ];
};
};
"group/hardware" = {
orientation = "inherit";
modules = [ "cpu" "memory" "battery" ];
};
"group/adjustable" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
transition-left-to-right = true;
};
modules = [ "pulseaudio" "mpris" ];
};
"custom/weather" = {
orientation = "horizontal";
exec = ''curl wttr.in/?format="%l:%20%t"'';
interval = 10;
};
cpu = {
interval = 10;
format = "{usage}% ";
};
memory = {
interval = 10;
format = "{percentage}% ";
};
# mpris = {
# format-playing = "  {title} ";
# format-paused = " 󰏤 {title} ";
# format-stopped = "Nothing Playing";
# };
tray = { spacing = 10; };
clock = { format = "{:%a %b %d, %I:%M %p} "; };
backlight = {
device = "intel_backlight";
format = "{percent}% {icon}";
format-icons = [ "󰃞" "󰃠" ];
};
battery = {
states = {
good = 95;
warning = 20;
critical = 10;
};
format = "{capacity}% {icon}";
format-icons = [ "󰁻" "󰁽" "󰁿" "󰂀" "󰁹" ];
};
"hyprland/window" = { format = "{class}"; };
network = {
format-wifi = "{essid} ";
format-linked = "{ifname} (No IP) ";
format-disconnected = "Disconnected ";
format-alt = "{ifname}: {ipaddr}/{cidr}";
};
pulseaudio = {
format = "{volume}% {icon} {format_source}";
format-bluetooth = "{volume}% {icon} {format_source}";
format-bluetooth-muted = " {icon} {format_source}";
format-muted = " {format_source}";
format-source = "{volume}% ";
format-source-muted = "";
format-icons = { default = [ "" "" "" ]; };
};
};
};
style = ./waybar.css;
systemd.enable = true;
};
}

View file

@ -1,93 +0,0 @@
{
programs.waybar = {
enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
height = 24;
# width = 1000;
reload-style-on-change = true;
margin = "5px 0px 0px 0px";
modules-left =
[ "hyprland/window" "hyprland/workspaces" "network" "clock" ];
modules-right =
[ "group/hardware" "backlight" "group/adjustable" "custom/weather" ];
# modules-center = [ "network" "group/hardware" "clock" ];
"hyprland/workspaces" = {
active-only = false;
all-outputs = false;
format = "{icon}";
persistent-workspaces = {
eDP-1 = [ 1 ];
DP-1 = [ 2 3 4 5 ];
};
};
"group/hardware" = {
orientation = "inherit";
modules = [ "cpu" "battery" ];
};
"group/adjustable" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
transition-left-to-right = true;
};
modules = [ "pulseaudio" "mpris" ];
};
"custom/weather" = {
orientation = "horizontal";
exec = ''curl wttr.in/?format="%l:%20%t"'';
interval = 10;
};
cpu = {
interval = 10;
format = "{usage}% ";
};
memory = {
interval = 10;
format = "{percentage}% ";
};
# mpris = {
# format-playing = "  {title} ";
# format-paused = " 󰏤 {title} ";
# format-stopped = "Nothing Playing";
# };
tray = { spacing = 10; };
clock = { format = "{:%a %b %d, %I:%M %p} "; };
backlight = {
device = "intel_backlight";
format = "{percent}% {icon}";
format-icons = [ "󰃞" "󰃠" ];
};
battery = {
states = {
good = 95;
warning = 20;
critical = 10;
};
format = "{capacity}% {icon}";
format-icons = [ "󰁻" "󰁽" "󰁿" "󰂀" "󰁹" ];
};
"hyprland/window" = { format = "{class}"; };
network = {
format-wifi = "{essid} ";
format-linked = "{ifname} (No IP) ";
format-disconnected = "Disconnected ";
format-alt = "{ifname}: {ipaddr}/{cidr}";
};
pulseaudio = {
format = "{volume}% {icon} {format_source}";
format-bluetooth = "{volume}% {icon} {format_source}";
format-bluetooth-muted = " {icon} {format_source}";
format-muted = " {format_source}";
format-source = "{volume}% ";
format-source-muted = "";
format-icons = { default = [ "" "" "" ]; };
};
};
};
style = ./waybar.css;
systemd.enable = true;
};
}

View file

@ -1,108 +0,0 @@
* {
font-size: 12px;
}
window#waybar {
border-bottom: 0px solid #ffffff;
background: transparent;
transition-property: none;
transition-duration: 0s;
}
#workspaces {
background: #24273a;
padding: 0px 5px 0px 5px;
margin: 0px 0px 0px 2px;
border-radius: 5px;
}
#workspaces {
background: #24273a;
padding: 0px 5px 0px 5px;
margin: 0px 0px 0px 2px;
border-radius: 5px;
}
#workspaces button,
#workspaces button:hover {
padding: 0;
background-color: #24273a;
/* color: @color4; */
}
#workspaces button.active,
#workspaces button:hover {
/* color: @color8; */
}
#clock,
#pulseaudio,
#network,
#battery,
#tray,
#mpris,
#cpu,
#memory,
#temperature,
#custom-weather,
#window,
#backlight {
background-color: #24273a;
/* color: @color4; */
opacity: 1;
border-radius: 5px;
padding: 1px 10px 1px 10px;
margin: 0px 5px 0px 0px;
}
#backlight {
margin-right: 0px;
padding-right: 3px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
}
#network {
margin-left: 15px;
padding-right: 15px;
}
#mpris {
padding-left: 0px;
margin-left: 0px;
margin-right: 5px;
padding-right: 0px;
}
#pulseaudio {
padding-left: 5px;
padding-right: 5px;
margin-left: 0px;
margin-right: 5px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
}
#memory,
#cpu {
padding-right: 2px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-right-width: 0px;
}
#memory,
#battery {
margin-left: 0px;
padding-left: 2px;
border-top-left-radius: 0px;
border-bottom-left-radius: 0px;
border-left-width: 0px;
}
#cpu {
margin-right: 0px;
}
#battery {
padding-right: 13px;
}
#custom-weather {
margin-right: 10px;
}
#window {
margin-right: 10px;
margin-left: 10px;
}

0
wallpapers/aesthetic/ign_colorful.png Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 2.1 MiB

After

Width:  |  Height:  |  Size: 2.1 MiB

0
wallpapers/anime/frieren.jpg Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 9.6 MiB

After

Width:  |  Height:  |  Size: 9.6 MiB

0
wallpapers/anime/kudou-chitose-normal.jpg Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 633 KiB

After

Width:  |  Height:  |  Size: 633 KiB

0
wallpapers/anime/kudou-chitose-violet.png Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

0
wallpapers/anime/nixos-sus-anime-wallpaper.png Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 3 MiB

After

Width:  |  Height:  |  Size: 3 MiB

0
wallpapers/anime/nixos-sus-anime.png Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 529 KiB

After

Width:  |  Height:  |  Size: 529 KiB

0
wallpapers/cityscapes/yellow_kyoto.jpg Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 11 MiB

After

Width:  |  Height:  |  Size: 11 MiB

0
wallpapers/nixos/nix-neon.png Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 2.1 MiB

After

Width:  |  Height:  |  Size: 2.1 MiB

0
wallpapers/nixos/nix-wallpaper.png Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

0
wallpapers/nixos/nixos-ascii.png Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

0
wallpapers/nixos/nixos-declarative.jpg Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 235 KiB

0
wallpapers/nixos/nixos-everforest.webp Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

0
wallpapers/nixos/nixos-hm.png Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View file

Before

Width:  |  Height:  |  Size: 376 KiB

After

Width:  |  Height:  |  Size: 376 KiB

0
wallpapers/retro/commodore.jpg Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 457 KiB

After

Width:  |  Height:  |  Size: 457 KiB