commit bcc4e549cf494929723f2c0ae9036330801e8bd6 Author: lucy Date: Tue Mar 3 20:15:06 2026 +0100 sesbian lex diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..577b0a0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +hardware-configuration.nix diff --git a/configuration.nix b/configuration.nix new file mode 100755 index 0000000..fc5510c --- /dev/null +++ b/configuration.nix @@ -0,0 +1,175 @@ +# 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, + pkgs, + ... +}: + +{ + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + ./stylix.nix + ]; + fonts = { + packages = with pkgs; [ + noto-fonts-cjk-sans + noto-fonts + nerd-fonts._0xproto + ]; + }; + services.displayManager.gdm.enable = true; + services.desktopManager.gnome.enable = true; + + boot = { + + plymouth = { + enable = true; + }; + + # Enable "Silent boot" + consoleLogLevel = 3; + initrd.verbose = false; + kernelParams = [ + "quiet" + "splash" + "boot.shell_on_fail" + "udev.log_priority=3" + "rd.systemd.show_status=auto" + ]; + # Hide the OS choice for bootloaders. + # It's still possible to open the bootloader list by pressing any key + # It will just not appear on screen unless a key is pressed + loader.timeout = 0; + + }; + hardware.graphics.enable = true; + nix = { + extraOptions = "experimental-features = nix-command flakes"; + optimise.automatic = true; + optimise.dates = [ "12:00" ]; + gc = { + automatic = true; + }; + }; + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + security.sudo.enable = true; + + # Use latest kernel. + boot.kernelPackages = pkgs.linuxPackages_latest; + services.power-profiles-daemon.enable = false; + services.upower.enable = true; + services.tlp.enable = true; + services.auto-cpufreq.enable = true; + + networking.hostName = "wired"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + # Sound + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + }; + + # Enable networking + networking.networkmanager.enable = true; + + # Home manager angy grrr + + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + }; + + # Configure console keymap + console.keyMap = "us"; + + # Define a user account. Don't forget to set a password with ‘passwd’. + programs.direnv.enable = true; + programs.zsh.enable = true; + users.users.lucy = { + isNormalUser = true; + description = "lucy"; + shell = pkgs.zsh; + extraGroups = [ + "networkmanager" + "wheel" + ]; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.pathsToLink = [ + "/share/applications" + "/share/xdg-desktop-portal" + ]; + environment.systemPackages = with pkgs; [ + openssl + fastfetch + gnomeExtensions.blur-my-shell + gnomeExtensions.appindicator + ]; + + programs.steam = { + enable = true; + extraCompatPackages = with pkgs; [ proton-ge-bin ]; + + }; + programs.git.enable = true; + systemd.user.services.polkit-gnome-authentication-agent-1 = { + description = "polkit-gnome-authentication-agent-1"; + wantedBy = [ "graphical-session.target" ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + Restart = "on-failure"; + }; + }; + + # 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; + + # 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. It‘s 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 = "25.05"; # Did you read the comment? + +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..86ca40a --- /dev/null +++ b/flake.lock @@ -0,0 +1,493 @@ +{ + "nodes": { + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1765809053, + "narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1760703920, + "narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "d646af9b7d14bff08824538164af99d0c521b185", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1764873433, + "narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767609335, + "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "250481aafeb741edfe23d29195671c19b36b6dca", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "host": "gitlab.gnome.org", + "lastModified": 1767737596, + "narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "ef02db02bf0ff342734d525b5767814770d85b49", + "type": "gitlab" + }, + "original": { + "host": "gitlab.gnome.org", + "owner": "GNOME", + "ref": "gnome-49", + "repo": "gnome-shell", + "type": "gitlab" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1772516620, + "narHash": "sha256-2r4cKdqCVlQkvcTcLUMxmsmAYZZxCMd//w/PnDnukTE=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "2b9504d5a0169d4940a312abe2df2c5658db8de9", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1770841267, + "narHash": "sha256-9xejG0KoqsoKEGp2kVbXRlEYtFFcDTHjidiuX8hGO44=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ec7c70d12ce2fc37cb92aff673dcdca89d187bae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1772433332, + "narHash": "sha256-izhTDFKsg6KeVBxJS9EblGeQ8y+O8eCa6RcW874vxEc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "cf59864ef8aa2e178cccedbe2c178185b0365705", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1770380644, + "narHash": "sha256-P7dWMHRUWG5m4G+06jDyThXO7kwSk46C1kgjEWcybkE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ae67888ff7ef9dff69b3cf0cc0fbfbcd3a722abe", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1772198003, + "narHash": "sha256-UCaQQ8zmHUocQIgCl+53Jj6NuwqrVKtmv7obE9r6wnw=", + "rev": "dd9b079222d43e1943b6ebd802f04fd959dc8e61", + "type": "tarball", + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre955442.dd9b079222d4/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1767767207, + "narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5912c1772a44e31bf1c63c0390b90501e5026886", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_3", + "systems": "systems" + }, + "locked": { + "lastModified": 1772402258, + "narHash": "sha256-3DmCFOdmbkFML1/G9gj8Wb+rCCZFPOQtNoMCpqOF8SA=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "21ae25e13b01d3b4cdc750b5f9e7bad68b150c10", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": [ + "stylix", + "flake-parts" + ], + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767810917, + "narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=", + "owner": "nix-community", + "repo": "NUR", + "rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs_2", + "nixvim": "nixvim", + "spicetify-nix": "spicetify-nix", + "stylix": "stylix" + } + }, + "spicetify-nix": { + "inputs": { + "nixpkgs": "nixpkgs_4", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1772494187, + "narHash": "sha256-6ksgNAFXVK+Cg/6ww7bB2nJUPZlnS75UwZC7G+L03EE=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "915ab06b046d05613041780c575c62a32fe67cea", + "type": "github" + }, + "original": { + "owner": "Gerg-L", + "repo": "spicetify-nix", + "type": "github" + } + }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-parts": "flake-parts_2", + "gnome-shell": "gnome-shell", + "nixpkgs": "nixpkgs_5", + "nur": "nur", + "systems": "systems_3", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1772296853, + "narHash": "sha256-pAtzPsgHRKw/2Kv8HgAjSJg450FDldHPWsP3AKG/Xj0=", + "owner": "danth", + "repo": "stylix", + "rev": "c4b8e80a1020e09a1f081ad0f98ce804a6e85acf", + "type": "github" + }, + "original": { + "owner": "danth", + "repo": "stylix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tinted-foot": { + "flake": false, + "locked": { + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "type": "github" + } + }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1767710407, + "narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1767489635, + "narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1767488740, + "narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100755 index 0000000..f3f94e7 --- /dev/null +++ b/flake.nix @@ -0,0 +1,59 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + stylix.url = "github:danth/stylix"; + spicetify-nix.url = "github:Gerg-L/spicetify-nix"; + nixvim.url = "github:nix-community/nixvim"; + home-manager.url = "github:nix-community/home-manager"; + + }; + + outputs = + { + nixpkgs, + stylix, + spicetify-nix, + nixvim, + home-manager, + ... + }: + let + system = "x86_64-linux"; + pkgs = import nixpkgs { inherit system; }; + in + { + nixosConfigurations.wired = nixpkgs.lib.nixosSystem { + inherit system; + + modules = [ + stylix.nixosModules.stylix + home-manager.nixosModules.home-manager + ./configuration.nix + + { + home-manager.useUserPackages = true; + home-manager.useGlobalPkgs = true; + home-manager.users.lucy = { + imports = [ + nixvim.homeModules.nixvim + spicetify-nix.homeManagerModules.spicetify + ./home/home.nix + + ]; + }; + } + + ]; + }; + + homeConfigurations.lucy = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ + stylix.homeModules.stylix + nixvim.homeModules.nixvim + ./home/home.nix + ./home/programs.nix + ]; + }; + }; +} diff --git a/home/home.nix b/home/home.nix new file mode 100755 index 0000000..9e119f8 --- /dev/null +++ b/home/home.nix @@ -0,0 +1,45 @@ +{ config, pkgs, ... }: +{ + imports = [ + ./hyprland.nix + ./programs.nix + ./waybar.nix + ./nixvim/nixvim.nix + ./stylix.nix + ]; + home.username = "lucy"; + home.homeDirectory = "/home/lucy"; + + # 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 incompatible changes. + # + # You should not change this value, even if you update Home Manager. If you do + # want to update the value, then make sure to first check the Home Manager + # release notes. + + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + shellAliases = { + nsr = "sudo nixos-rebuild switch"; + ncb = "sudo nix-collect-garbage -d"; + }; + oh-my-zsh = { + enable = true; + plugins = [ + "git" + ]; + theme = "gentoo"; + }; + }; + + home.stateVersion = "24.05"; # Please read the comment before changing. + home.shell.enableShellIntegration = true; + home.shellAliases = { + nrs = "sudo nixos-rebuild switch --flake /home/lucy/nixos-conf/"; + }; + +} diff --git a/home/hyprland.nix b/home/hyprland.nix new file mode 100755 index 0000000..a7e27ef --- /dev/null +++ b/home/hyprland.nix @@ -0,0 +1,136 @@ +{ config, ... }: +{ + wayland.windowManager.hyprland.enable = true; + wayland.windowManager.hyprland.settings = { + "$mod" = "SUPER"; + "monitor" = ",preferred,auto,1"; + general = { + border_size = 2; + gaps_in = 5; + gaps_out = 10; + layout = "dwindle"; + }; + + decoration = { + rounding = 15; + blur = { + enabled = true; + size = 3; + passes = 2; + ignore_opacity = 0; + }; + shadow = { + enabled = false; + }; + }; + + animations = { + enabled = true; + bezier = [ + "smoothIn, 0.25, 1, 0.5, 1" + "smoothOut, 0.25, 1, 0.5, 1" + "overshot, 0.4, 0.8, 0.5, 1" + "candy, 0.68, -0.6, 0.32, 1.5" + ]; + + animation = [ + "fade, 1, 10, overshot" + "fadeIn, 1, 5, overshot" + "fadeOut, 1, 5, overshot" + "fadeDim, 1, 5, overshot" + "windows, 1, 1, smoothIn, popin" + "border, 1, 10, default" + "workspaces, 1, 6, overshot, slide" + "specialWorkspace, 1, 8, smoothOut, slidevert" + ]; + }; + input = { + kb_layout = "de"; + kb_options = "nodeadkeys"; + sensitivity = 0.3; + accel_profile = "flat"; + natural_scroll = true; + }; + + exec-once = [ + "swww-daemon" + "dunst" + ]; + + "bind" = [ + "$mod, Return, exec, foot" + "$mod, space, exec, fuzzel" + "$mod, Q, killactive" + "$mod, v, togglefloating" + "$mod, w, exec, waypaper" + "$mod SHIFT, Q, exit" + "$mod, J, togglesplit" + "$mod, minus, togglespecialworkspace, magic" + "$mod SHIFT, minus, movetoworkspace, special:magic" + "$mod, B, exec, pkill -SIGUSR1 waybar" + + "$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 SHIFT, 1, movetoworkspace, 1" + "$mod SHIFT, 2, movetoworkspace, 2" + "$mod SHIFT, 3, movetoworkspace, 3" + "$mod SHIFT, 4, movetoworkspace, 4" + "$mod SHIFT, 5, movetoworkspace, 5" + "$mod SHIFT, 6, movetoworkspace, 6" + "$mod SHIFT, 7, movetoworkspace, 7" + "$mod SHIFT, 8, movetoworkspace, 8" + "$mod SHIFT, 9, movetoworkspace, 9" + "$mod SHIFT, 0, movetoworkspace, 10" + + # Screenshots + "Alt, S, exec, hyprshot -m output -m active --clipboard-only --freeze" + "$mod SHIFT, S, exec, hyprshot -m region --clipboard-only --freeze" + "Control_L&Alt, S, exec, hyprshot -m window --clipboard-only --freeze" + + "$mod, left, movefocus, l" + "$mod, right, movefocus, r" + "$mod, up, movefocus, u" + "$mod, down, movefocus, d" + "$mod SHIFT, left, movewindow, l" + "$mod SHIFT, right, movewindow, r" + "$mod SHIFT, up, movewindow, u" + "$mod SHIFT, down, movewindow, d" + + "$mod, P, exec, /home/lucy/.local/bin/powermenu" + ]; + + binde = [ + ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" + ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPause, exec, playerctl play-pause" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioPrev, exec, playerctl previous" + ", XF86MonBrightnessDown, exec, brightnessctl s 10%-" + ", XF86MonBrightnessUp, exec, brightnessctl s 10%+" + ]; + bindm = [ + "$mod, mouse:272, movewindow" + "alt, mouse:272, resizewindow" + ]; + layerrule = [ + "noanim, walker" + ]; + windowrule = [ + "float, class:^(waypaper)" + "float, class:^(Ryujinx)" + "suppressevent maximize, class:.*" + "nofocus, class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0" + ]; + }; +} diff --git a/home/nixvim/coding.nix b/home/nixvim/coding.nix new file mode 100755 index 0000000..65e3183 --- /dev/null +++ b/home/nixvim/coding.nix @@ -0,0 +1,50 @@ +{ pkgs, ... }: +{ + programs.nixvim = { + diagnostic.settings = { + virtual_text = true; + }; + + plugins = { + lsp = { + enable = true; + inlayHints = true; + + servers = { + bashls.enable = true; + qmlls.enable = true; + qmlls.package = null; + qmlls.cmd = [ + "qmlls" + "-E" + ]; + clangd.package = null; + clangd.enable = true; + clangd.cmd = [ + "clangd" + "--background-index" + "--query-driver=${pkgs.clang}/bin/clang++" + "--query-driver=${pkgs.clang}/bin/clang" + ]; + nixd.enable = true; + }; + }; + + conform-nvim = { + enable = true; + settings = { + formatters_by_ft = { + lua = [ "stylua" ]; + nix = [ "nixfmt" ]; + c = [ "clang-format" ]; + cpp = [ "clang-format" ]; + }; + }; + }; + blink-cmp = { + enable = true; + }; + }; + + }; +} diff --git a/home/nixvim/keymaps.nix b/home/nixvim/keymaps.nix new file mode 100755 index 0000000..e09ea83 --- /dev/null +++ b/home/nixvim/keymaps.nix @@ -0,0 +1,95 @@ +{ + programs.nixvim.keymaps = [ + { + key = ""; + mode = "t"; + action = ''''; + options.silent = true; + } + { + key = ""; + mode = "n"; + action = ":BufferLineGoToBuffer 1"; + } + { + key = ""; + mode = "n"; + action = ":BufferLineGoToBuffer 2"; + } + { + key = ""; + mode = "n"; + action = ":BufferLineGoToBuffer 3"; + } + { + key = ""; + mode = "n"; + action = ":BufferLineGoToBuffer 4"; + } + { + key = ""; + mode = "n"; + action = ":BufferLineGoToBuffer 5"; + } + { + key = ""; + mode = "n"; + action = ":BufferLineGoToBuffer 6"; + } + { + key = ""; + mode = "n"; + action = ":BufferLineGoToBuffer 7"; + } + { + key = ""; + mode = "n"; + action = ":BufferLineGoToBuffer 8"; + } + { + key = ""; + mode = "n"; + action = ":BufferLineGoToBuffer 9"; + } + { + key = ""; + mode = "n"; + action = ":BufferLineGoToBuffer last"; + } + { + key = "w"; + mode = "n"; + action = "bdelete!"; + } + { + key = ""; + mode = "n"; + action = ":NvimTreeFocus"; + } + { + key = ""; + mode = "n"; + action = ":NvimTreeToggle"; + } + { + key = ""; + mode = "n"; + action = "lua require('conform').format({ async = true, lsp_fallback = true }) "; + } + { + key = "t"; + mode = "n"; + action = "terminal"; + } + { + key = "ff"; + mode = "n"; + action = ":lua Snacks.picker.files() "; + } + { + key = "lg"; + mode = "n"; + action = ":lua Snacks.picker.grep() "; + } + ]; +} diff --git a/home/nixvim/nixvim.nix b/home/nixvim/nixvim.nix new file mode 100755 index 0000000..669c00d --- /dev/null +++ b/home/nixvim/nixvim.nix @@ -0,0 +1,32 @@ +{ + config, + pkgs, + lib, + ... +}: +{ + imports = [ + ./plugins.nix + ./keymaps.nix + ./coding.nix + ]; + programs.nixvim = { + enable = true; + extraPackages = with pkgs; [ + nixd + nixpkgs-fmt + stylua + ]; + globals.mapleader = " "; + defaultEditor = true; + wrapRc = true; + opts = { + number = true; + relativenumber = true; + shiftwidth = 4; + termguicolors = true; + cursorline = true; + laststatus = 0; + }; + }; +} diff --git a/home/nixvim/plugins.nix b/home/nixvim/plugins.nix new file mode 100755 index 0000000..1c23090 --- /dev/null +++ b/home/nixvim/plugins.nix @@ -0,0 +1,138 @@ +let + button = shortcut: text: action: { + type = "button"; + val = text; + on_press.__raw = "function() vim.cmd([[${action}]]) end"; + opts = { + keymap = [ + "n" + shortcut + action + { + noremap = true; + silent = true; + } + ]; + shortcut = shortcut; + position = "center"; + width = 30; + align_shortcut = "right"; + hl_shortcut = "Keyword"; + }; + }; +in +{ + programs.nixvim.plugins = { + neocord.enable = true; + colorizer.enable = true; + nvim-autopairs.enable = true; + + treesitter = { + enable = true; + settings = { + highlighting.enable = true; + auto_install = true; + ignore_install = [ "ipkg" ]; + }; + }; + + nvim-tree.enable = true; + + alpha = { + enable = true; + settings.layout = [ + { + type = "padding"; + val = 2; + } + { + type = "text"; + val = [ + "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⣠⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣡⣾⣿⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣟⠻⣿⣿⣿⣿⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⣿⣿⡿⢫⣷⣿⣿⣿⣿⣿⣿⣿⣾⣯⣿⡿⢧⡚⢷⣌⣽⣿⣿⣿⣿⣿⣶⡌⣿⣿⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⣿⣿⠇⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣮⣇⣘⠿⢹⣿⣿⣿⣿⣿⣻⢿⣿⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⣿⣿⠀⢸⣿⣿⡇⣿⣿⣿⣿⣿⣿⣿⣿⡟⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣻⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⣿⡇⠀⣬⠏⣿⡇⢻⣿⣿⣿⣿⣿⣿⣿⣷⣼⣿⣿⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⢻⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⣿⠀⠈⠁⠀⣿⡇⠘⡟⣿⣿⣿⣿⣿⣿⣿⣿⡏⠿⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⣇⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⡏⠀⠀⠐⠀⢻⣇⠀⠀⠹⣿⣿⣿⣿⣿⣿⣩⡶⠼⠟⠻⠞⣿⡈⠻⣟⢻⣿⣿⣿⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⢿⠀⡆⠀⠘⢿⢻⡿⣿⣧⣷⢣⣶⡃⢀⣾⡆⡋⣧⠙⢿⣿⣿⣟⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⡥⠂⡐⠀⠁⠑⣾⣿⣿⣾⣿⣿⣿⡿⣷⣷⣿⣧⣾⣿⣿⣿⣿⣿⣿⣿" + "⣿⣿⡿⣿⣍⡴⠆⠀⠀⠀⠀⠀⠀⠀⠀⣼⣄⣀⣷⡄⣙⢿⣿⣿⣿⣿⣯⣶⣿⣿⢟⣾⣿⣿⢡⣿⣿⣿⣿⣿" + "⣿⡏⣾⣿⣿⣿⣷⣦⠀⠀⠀⢀⡀⠀⠀⠠⣭⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⣡⣾⣿⣿⢏⣾⣿⣿⣿⣿⣿" + "⣿⣿⣿⣿⣿⣿⣿⣿⡴⠀⠀⠀⠀⠀⠠⠀⠰⣿⣿⣿⣷⣿⠿⠿⣿⣿⣭⡶⣫⠔⢻⢿⢇⣾⣿⣿⣿⣿⣿⣿" + "⣿⣿⣿⡿⢫⣽⠟⣋⠀⠀⠀⠀⣶⣦⠀⠀⠀⠈⠻⣿⣿⣿⣾⣿⣿⣿⣿⡿⣣⣿⣿⢸⣾⣿⣿⣿⣿⣿⣿⣿" + "⡿⠛⣹⣶⣶⣶⣾⣿⣷⣦⣤⣤⣀⣀⠀⠀⠀⠀⠀⠀⠉⠛⠻⢿⣿⡿⠫⠾⠿⠋⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿" + "⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣀⡆⣠⢀⣴⣏⡀⠀⠀⠀⠉⠀⠀⢀⣠⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿" + "⠿⠛⠛⠛⠛⠛⠛⠻⢿⣿⣿⣿⣿⣯⣟⠷⢷⣿⡿⠋⠀⠀⠀⠀⣵⡀⢠⡿⠋⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿" + "⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠛⢿⣿⣿⠂⠀⠀⠀⠀⠀⢀⣽⣿⣿⣿⣿⣿⣿⣿⣍⠛⠿⣿⣿⣿⣿⣿⣿" + ]; + opts = { + position = "center"; + hl = "Type"; + }; + } + { + type = "padding"; + val = 2; + } + { + type = "group"; + opts = { + position = "center"; + }; + val = [ + (button "f" " Find File" "lua Snacks.picker.files()") + (button "g" " Find Text" "lua Snacks.picker.grep()") + (button "r" " Recent Files" "lua Snacks.dashboard.pick('oldfiles')") + (button "q" " Quit" "qa") + ]; + } + ]; + }; + snacks = { + enable = true; + settings = { + notifier.enabled = true; + picker.enabled = true; + indent.enabled = true; + }; + }; + + lualine = { + enable = true; + settings = { + options = { + globalstatus = true; + section_separators = { + left = ""; + right = ""; + }; + component_separators = { + left = ""; + right = ""; + }; # Fixed: Added missing braces + }; + sections = { + lualine_a = [ "mode" ]; + lualine_b = [ "diagnostics" ]; + lualine_c = [ + "filename" + "branch" + "navic" + ]; + lualine_x = [ + "filetype" + "lsp_status" + ]; + lualine_y = [ "progress" ]; + lualine_z = [ "location" ]; + }; + }; + }; + + bufferline.enable = true; + web-devicons.enable = true; + }; +} diff --git a/home/programs.nix b/home/programs.nix new file mode 100755 index 0000000..cd7b606 --- /dev/null +++ b/home/programs.nix @@ -0,0 +1,185 @@ +{ + config, + pkgs, + ... +}: +{ + home.packages = with pkgs; [ + nixfmt + google-chrome + swww + waypaper + nemo + cava + pavucontrol + brightnessctl + hyprshot + evince + dconf + fd + ripgrep + ani-cli + cinny-desktop + (discord.override { + withOpenASAR = true; # can do this here too + withVencord = true; + }) + ]; + programs.git = { + enable = true; + settings = { + user.name = "lucy"; + user.email = "lucykaufmann@protonmail.com"; + }; + }; + + programs.spicetify.enable = true; + programs.fastfetch = { + enable = true; + settings = { + logo = { + source = "~/.config/fastfetch/logo.txt"; + }; + display = { + separator = "  "; + }; + modules = [ + { + type = "title"; + key = "User"; + } + { + type = "custom"; + text = ""; + } + + { + type = "os"; + key = "OS"; + } + { + type = "custom"; + text = ""; + } + + { + type = "kernel"; + key = "Kernel"; + } + { + type = "custom"; + text = ""; + } + + { + type = "packages"; + key = "Packages"; + } + { + type = "custom"; + text = ""; + } + + { + type = "cpu"; + key = "CPU"; + } + { + type = "custom"; + text = ""; + } + + { + type = "gpu"; + key = "GPU"; + } + { + type = "custom"; + text = ""; + } + + { + type = "memory"; + key = "Memory"; + } + { + type = "custom"; + text = ""; + } + + { + type = "disk"; + key = "Disk"; + } + { + type = "custom"; + text = ""; + } + + { + type = "display"; + key = "Resolution"; + } + { + type = "custom"; + text = ""; + } + + { + type = "shell"; + key = "Shell"; + } + ]; + }; + }; + + programs.foot = { + enable = true; + settings = { + cursor = { + style = "underline"; + }; + main = { + pad = "14x14"; + initial-window-size-pixels = "800x600"; + }; + }; + }; + + programs.fuzzel = { + enable = true; + settings = { + main = { + lines = 10; + horizontal-pad = 30; + vertical-pad = 15; + }; + border = { + width = 2; + radius = 0; + }; + }; + }; + programs.vesktop = { + enable = true; + settings = { + staticTitle = true; + arRPC = true; + customTitleBar = false; + }; + vencord.settings.plugins = { + MessageLogger.enabled = true; + MessageClickActions.enabled = true; + }; + }; + services.dunst = { + enable = true; + settings = { + global = { + offset = "10x32"; + corner_radius = config.wayland.windowManager.hyprland.settings.decoration.rounding; + frame_width = config.wayland.windowManager.hyprland.settings.general.border_size; + }; + }; + }; +} diff --git a/home/stylix.nix b/home/stylix.nix new file mode 100755 index 0000000..4eaee78 --- /dev/null +++ b/home/stylix.nix @@ -0,0 +1,12 @@ +{ + stylix = { + image = ./wallpaper.png; + targets = { + waybar.enable = true; + waybar.addCss = false; + hyprland.enable = true; + hyprland.hyprpaper.enable = false; + gnome.image.enable = false; + }; + }; +} diff --git a/home/wallpaper.png b/home/wallpaper.png new file mode 100755 index 0000000..c18eb2a Binary files /dev/null and b/home/wallpaper.png differ diff --git a/home/waybar.nix b/home/waybar.nix new file mode 100755 index 0000000..0fe393f --- /dev/null +++ b/home/waybar.nix @@ -0,0 +1,153 @@ +{ config, lib, ... }: +{ + programs.waybar = { + enable = true; + systemd.enable = true; + style = '' + + * { + font-size: 14px; + font-weight: 600; + } + + window#waybar { + background-color: transparent; + border-radius: ${builtins.toString config.wayland.windowManager.hyprland.settings.decoration.rounding}; + } + + #workspaces button { + all: unset; + padding: 1px 6px; + margin: 2px; + color: alpha(@base05, 0.5); + border-radius: 1em; + } + + + #workspaces button.active { + color: @base05; + } + + #workspaces { + margin: 0px; + padding: 2px; + background-color: @base00; + border-radius: 1em; + } + #mpris, + #backlight, + #tray, + #pulseaudio, + #window, + #upower, + #clock, + #power-profiles-daemon { + padding: 2px 10px; + background-color: @base00; + color: @base05; + border-radius: ${builtins.toString config.wayland.windowManager.hyprland.settings.decoration.rounding}; + } + + #tray { + padding: 0px 8px; + } + + window#waybar.empty #window { + background: none; + } + #custom-sep { + color: alpha(@base05, 0.5); + } + ''; + settings = { + mainBar = { + margin-top = config.wayland.windowManager.hyprland.settings.general.gaps_out; + margin-left = config.wayland.windowManager.hyprland.settings.general.gaps_out; + margin-right = config.wayland.windowManager.hyprland.settings.general.gaps_out; + layer = "top"; + position = "top"; + spacing = 4; + modules-left = [ + "hyprland/workspaces" + "hyprland/window" + "mpris" + ]; + modules-right = [ + "backlight" + "pulseaudio" + "upower" + "power-profiles-daemon" + "clock" + "tray" + ]; + "custom/sep" = { + format = " | "; + }; + "mpris" = { + player = "spotify"; + format = "{title} - {artist}"; + }; + + "hyprland/window" = { + format = "{}"; + max-length = 40; + }; + + "tray" = { + icon-size = 14; + }; + + "hyprland/workspaces" = { + format = "{name}"; + }; + + "upower" = { + format = "{percentage}"; + format-alt = "{time}"; + icon-size = 12; + hide-if-empty = true; + tooltip = false; + tooltip-spacing = 20; + }; + + "power-profiles-daemon" = { + format = "{profile}"; + format-tooltip = "Power profile: {profile}\nDriver: {driver}"; + }; + + "backlight" = { + format = "{icon} {percent}%"; + format-icons = [ + "" + "" + "" + "" + "" + "" + "" + "" + "" + ]; + }; + + "pulseaudio" = { + format = "{icon} {volume}%"; + format-muted = "󰝟 {volume}%"; + on-click = "pavucontrol"; + format-icons = [ + "󰕿" + "󰖀" + "󰕾" + ]; + }; + + "clock" = { + interval = 1; + format = "{:%H:%M | %d.%m.%Y}"; + format-alt = "{:%H:%M | %d.%m.%Y}"; + tooltip-format = "{:%Y %B}\n{calendar}"; + }; + }; + }; + }; +} diff --git a/stylix.nix b/stylix.nix new file mode 100755 index 0000000..7a5c21a --- /dev/null +++ b/stylix.nix @@ -0,0 +1,58 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + stylix.opacity = { + terminal = 0.8; + desktop = 1.0; + popups = 1.0; + }; + stylix.cursor = { + name = "macOS"; + package = pkgs.apple-cursor; + size = 24; + }; + stylix.icons = { + enable = true; + dark = "Papirus-Dark"; + light = "Papirus-Light"; + package = pkgs.papirus-icon-theme; + }; + stylix = { + enable = true; + autoEnable = true; + base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml"; + polarity = "dark"; + image = ./home/wallpaper.png; + targets = { + qt.platform = lib.mkForce "qtct"; + }; + fonts = { + sizes = { + terminal = 10; + popups = 10; + desktop = 10; + }; + serif = { + package = config.stylix.fonts.monospace.package; + name = config.stylix.fonts.monospace.name; + }; + sansSerif = { + package = config.stylix.fonts.monospace.package; + name = config.stylix.fonts.monospace.name; + }; + monospace = { + package = pkgs.maple-mono.NF; + name = "Maple Mono NF"; + }; + + emoji = { + package = pkgs.noto-fonts-color-emoji; + name = "Noto Color Emoji"; + }; + }; + }; +}