commit c02b368ecbc20e53fc6f60d527341f6906b77c6b Author: lucyy Date: Fri Dec 5 11:59:27 2025 +0100 add everything diff --git a/compile_commands.json b/compile_commands.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/compile_commands.json @@ -0,0 +1 @@ +[] diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..7414710 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,167 @@ +# 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 + ]; + + }; + programs.hyprland.enable = true; + services.displayManager.gdm.enable = true; + services.desktopManager.gnome.enable = true; + + # To disable installing GNOME's suite of applications + # and only be left with GNOME shell. + services.gnome.core-apps.enable = false; + services.gnome.core-developer-tools.enable = false; + services.gnome.games.enable = false; + environment.gnome.excludePackages = with pkgs; [ + gnome-tour + gnome-user-docs + ]; + + 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"; + # 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 = true; + services.upower.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"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "de_DE.UTF-8"; + LC_IDENTIFICATION = "de_DE.UTF-8"; + LC_MEASUREMENT = "de_DE.UTF-8"; + LC_MONETARY = "de_DE.UTF-8"; + LC_NAME = "de_DE.UTF-8"; + LC_NUMERIC = "de_DE.UTF-8"; + LC_PAPER = "de_DE.UTF-8"; + LC_TELEPHONE = "de_DE.UTF-8"; + LC_TIME = "de_DE.UTF-8"; + }; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "de"; + variant = "nodeadkeys"; + }; + + # Configure console keymap + console.keyMap = "de-latin1-nodeadkeys"; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.lucy = { + isNormalUser = true; + description = "lucy"; + 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 + ]; + programs.git.enable = true; + + # 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..e142131 --- /dev/null +++ b/flake.lock @@ -0,0 +1,581 @@ +{ + "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": 1754405784, + "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561", + "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": 1764724327, + "narHash": "sha256-OkFLrD3pFR952TrjQi1+Vdj604KLcMnkpa7lkW7XskI=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "66b7c635763d8e6eb86bd766de5a1e1fbfcc1047", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1763759067, + "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1763759067, + "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "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": 1764524476, + "narHash": "sha256-bTmNn3Q4tMQ0J/P0O5BfTQwqEnCiQIzOGef9/aqAZvk=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "c0e1ad9f0f703fd0519033b8f46c3267aab51a22", + "type": "gitlab" + }, + "original": { + "host": "gitlab.gnome.org", + "owner": "GNOME", + "ref": "gnome-49", + "repo": "gnome-shell", + "type": "gitlab" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1764912896, + "narHash": "sha256-ftxQocr098v5ngqB3SXa9tW6aqovBSBOEdIRcLEj44c=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "6bcb2395ab9ed05616052262da526cd7c5b4b123", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "ixx": { + "inputs": { + "flake-utils": [ + "nixvim", + "nuschtosSearch", + "flake-utils" + ], + "nixpkgs": [ + "nixvim", + "nuschtosSearch", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1754860581, + "narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=", + "owner": "NuschtOS", + "repo": "ixx", + "rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "ref": "v0.1.1", + "repo": "ixx", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1764667669, + "narHash": "sha256-7WUCZfmqLAssbDqwg9cUDAXrSoXN79eEEq17qhTNM/Y=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "418468ac9527e799809c900eda37cbff999199b6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1764794580, + "narHash": "sha256-UMVihg0OQ980YqmOAPz+zkuCEb9hpE5Xj2v+ZGNjQ+M=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ebc94f855ef25347c314258c10393a92794e7ab9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1764517877, + "narHash": "sha256-pp3uT4hHijIC8JUK5MEqeAWmParJrgBVzHLNfJDZxg4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2d293cbfa5a793b4c50d17c05ef9e385b90edf6c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": "nixpkgs_3", + "nuschtosSearch": "nuschtosSearch", + "systems": "systems_2" + }, + "locked": { + "lastModified": 1764892502, + "narHash": "sha256-xMDuLmD77k1ZoGjTPA/BELJEGNPDOR1ise6KltYOLtk=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "8e85c25143e5bc625197b96a0265cd6cec3634fc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": [ + "stylix", + "flake-parts" + ], + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1764773531, + "narHash": "sha256-mCBl7MD1WZ7yCG6bR9MmpPO2VydpNkWFgnslJRIT1YU=", + "owner": "nix-community", + "repo": "NUR", + "rev": "1d9616689e98beded059ad0384b9951e967a17fa", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "nuschtosSearch": { + "inputs": { + "flake-utils": "flake-utils", + "ixx": "ixx", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1761730856, + "narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=", + "owner": "NuschtOS", + "repo": "search", + "rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b", + "type": "github" + }, + "original": { + "owner": "NuschtOS", + "repo": "search", + "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_3" + }, + "locked": { + "lastModified": 1764698597, + "narHash": "sha256-4f0y9Fo3AChngd/qRQ7wbcy6FH33NFZbyFXn7IeUI14=", + "owner": "Gerg-L", + "repo": "spicetify-nix", + "rev": "1da6ebbbcf0301ff773e9c43bdd4c051af9523f7", + "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_4", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1764860352, + "narHash": "sha256-bWrh2T6EPiiZC7jY0jK5cWRwkG0hltnPT1etfHIHiXM=", + "owner": "danth", + "repo": "stylix", + "rev": "61a01b75f0a7e58dac486ddf022c628a71528399", + "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" + } + }, + "systems_4": { + "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": 1763914658, + "narHash": "sha256-Hju0WtMf3iForxtOwXqGp3Ynipo0EYx1AqMKLPp9BJw=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "0f6be815d258e435c9b137befe5ef4ff24bea32c", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1764465359, + "narHash": "sha256-lbSVPqLEk2SqMrnpvWuKYGCaAlfWFMA6MVmcOFJjdjE=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "edf89a780e239263cc691a987721f786ddc4f6aa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1764464512, + "narHash": "sha256-rCD/pAhkMdCx6blsFwxIyvBJbPZZ1oL2sVFrH07lmqg=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "907dbba5fb8cf69ebfd90b00813418a412d0a29a", + "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 100644 index 0000000..3beae8c --- /dev/null +++ b/flake.nix @@ -0,0 +1,61 @@ +{ + 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 = + { + self, + nixpkgs, + stylix, + spicetify-nix, + nixvim, + home-manager, + ... + }: + let + system = "x86_64-linux"; + pkgs = import nixpkgs { inherit system; }; + spicetify = spicetify-nix.lib.mkSpicetify pkgs { }; + 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 = [ + #stylix.homeModules.stylix + 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/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..7c37917 --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,53 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ + config, + lib, + pkgs, + modulesPath, + ... +}: + +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ + "xhci_pci" + "nvme" + "usb_storage" + "sd_mod" + "sdhci_pci" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/c16b01ac-175e-4b33-b0e6-6e3324e5d3a7"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/FB24-02BA"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/home/home.nix b/home/home.nix new file mode 100644 index 0000000..4beb515 --- /dev/null +++ b/home/home.nix @@ -0,0 +1,27 @@ +{ 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.bash.enable = true; + 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 100644 index 0000000..e3a1e2d --- /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 = 0; + blur = { + enabled = false; + 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, 0, 1, smoothIn, gnomed" + "border, 1, 10, default" + "workspaces, 1, 6, overshot, fade" + "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, wofi --show drun" + "$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 100644 index 0000000..5fccd28 --- /dev/null +++ b/home/nixvim/coding.nix @@ -0,0 +1,70 @@ +{ pkgs, ... }: +{ + programs.nixvim = { + diagnostic.settings = { + virtual_text = true; + }; + + plugins = { + lsp = { + enable = true; + inlayHints = true; + + servers = { + bashls.enable = true; + clangd.enable = true; + clangd.package = null; + nixd.enable = true; + }; + }; + + conform-nvim = { + enable = true; + settings = { + format_on_save = { + lspFormat = "fallback"; + timeoutMs = 500; + }; + + formatters_by_ft = { + lua = [ "stylua" ]; + nix = [ "nixfmt" ]; + python = [ "ruff_format" ]; + javascript = [ "prettier" ]; + typescript = [ "prettier" ]; + svelte = [ "prettier" ]; + css = [ "prettier" ]; + json = [ "prettier" ]; + html = [ "prettier" ]; + }; + }; + }; + + cmp = { + enable = true; + autoEnableSources = true; + + settings = { + sources = [ + { name = "nvim_lsp"; } + { name = "path"; } + { name = "buffer"; } + ]; + + mapping = { + "" = "cmp.mapping.scroll_docs(-4)"; + "" = "cmp.mapping.scroll_docs(4)"; + "" = "cmp.mapping.complete()"; + "" = "cmp.mapping.abort()"; + "" = "cmp.mapping.confirm({ select = true })"; + "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; + "" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})"; + }; + + window.completion.border = "rounded"; + window.documentation.border = "rounded"; + }; + }; + }; + }; +} diff --git a/home/nixvim/keymaps.nix b/home/nixvim/keymaps.nix new file mode 100644 index 0000000..d186d51 --- /dev/null +++ b/home/nixvim/keymaps.nix @@ -0,0 +1,75 @@ +{ + 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 = ""; + mode = "n"; + action = ":NvimTreeFocus"; + } + { + key = ""; + mode = "n"; + action = ":NvimTreeToggle"; + } + { + key = ""; + mode = "n"; + action = "lua vim.lsp.buf.format()"; + } + ]; +} diff --git a/home/nixvim/nixvim.nix b/home/nixvim/nixvim.nix new file mode 100644 index 0000000..63d89eb --- /dev/null +++ b/home/nixvim/nixvim.nix @@ -0,0 +1,30 @@ +{ + config, + pkgs, + lib, + ... +}: +{ + imports = [ + ./plugins.nix + ./keymaps.nix + ./coding.nix + ]; + programs.nixvim = { + enable = true; + extraPackages = with pkgs; [ + nixd + nixpkgs-fmt + ]; + globals.mapleader = " "; + defaultEditor = true; + wrapRc = true; + opts = { + number = true; + relativenumber = true; + shiftwidth = 4; + termguicolors = true; + cursorline = true; + }; + }; +} diff --git a/home/nixvim/plugins.nix b/home/nixvim/plugins.nix new file mode 100644 index 0000000..c1b8417 --- /dev/null +++ b/home/nixvim/plugins.nix @@ -0,0 +1,152 @@ +{ + 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" ]; + }; + }; + alpha = { + enable = true; + settings.layout = [ + { + type = "padding"; + val = 20; + } + { + type = "text"; + val = [ + " ██████╗ █████╗ ██╗ ██╗██╗ ██╗██╗███╗ ███╗" + " ██╔════╝ ██╔══██╗╚██╗ ██╔╝██║ ██║██║████╗ ████║" + " ██║ ███╗███████║ ╚████╔╝ ██║ ██║██║██╔████╔██║" + " ██║ ██║██╔══██║ ╚██╔╝ ╚██╗ ██╔╝██║██║╚██╔╝██║" + " ╚██████╔╝██║ ██║ ██║ ╚████╔╝ ██║██║ ╚═╝ ██║" + " ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═══╝ ╚═╝╚═╝ ╚═╝" + ]; + opts = { + position = "center"; + hl = "Type"; + }; + } + { + type = "padding"; + val = 2; + } + { + type = "group"; + val = [ + { + type = "button"; + val = "  new file"; + on_press.__raw = "function() vim.cmd[[ene]] end"; + opts = { + position = "center"; + hl = "Keyword"; + }; + } + { + type = "padding"; + val = 2; + } + { + type = "button"; + val = "  search files"; + on_press.__raw = "function() vim.cmd[[Telescope find_files]] end"; + opts = { + position = "center"; + hl = "Keyword"; + }; + } + { + type = "padding"; + val = 2; + } + { + type = "button"; + val = "  live grep"; + on_press.__raw = "function() vim.cmd[[Telescope live_grep]] end"; + opts = { + position = "center"; + hl = "Keyword"; + }; + } + { + type = "padding"; + val = 2; + } + { + type = "button"; + val = "  quit neovim"; + on_press.__raw = "function() vim.cmd[[qa]] end"; + opts = { + position = "center"; + hl = "Keyword"; + }; + } + + ]; + opts = { + position = "center"; + hl = "Keyword"; + }; + } + ]; + }; + nvim-tree.enable = true; + telescope = { + enable = true; + settings = { + pickers = { + find_files = { + find_command = [ "fd" "--unrestricted" "--no-ignore" ]; + }; + }; + defaults = { + sorting_strategy = "ascending"; + selection_caret = "> "; + }; + }; + keymaps = { + "fg" = "live_grep"; + "ff" = "find_files"; + }; + }; + + + lualine = { + enable = true; + settings = { + options = { + section_separators = { + left = ""; + right = ""; + a = ""; + b = ""; + c = ""; + x = ""; + y = ""; + z = ""; + }; + }; + sections = { + lualine_a = [ "mode" ]; + lualine_b = [ "branch" ]; + lualine_c = [ "filename" ]; + lualine_x = [ "diagnostics" "filetype" ]; + 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 100644 index 0000000..e8eff7b --- /dev/null +++ b/home/programs.nix @@ -0,0 +1,82 @@ +{ + config, + pkgs, + ... +}: +{ + home.packages = with pkgs; [ + nixfmt + google-chrome + swww + waypaper + nemo + cava + pavucontrol + brightnessctl + hyprshot + evince + dconf + fd + wofi + ripgrep + ]; + + programs.git = { + enable = true; + settings = { + user.name = "lucy"; + user.email = "lucykaufmann@protonmail.com"; + }; + }; + + programs.spicetify.enable = true; + + programs.foot = { + enable = true; + settings = { + cursor = { + style = "underline"; + }; + main = { + pad = "20x20"; + 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; + }; + 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 100644 index 0000000..6fe8d9e --- /dev/null +++ b/home/stylix.nix @@ -0,0 +1,16 @@ +{ + config, + pkgs, + ... +}: +{ + stylix = { + image = ./wallpaper.png; + targets = { + waybar.enable = true; + waybar.addCss = false; + hyprland.enable = true; + hyprland.hyprpaper.enable = false; + }; + }; +} diff --git a/home/wallpaper.png b/home/wallpaper.png new file mode 100644 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 100644 index 0000000..e8976b3 --- /dev/null +++ b/home/waybar.nix @@ -0,0 +1,152 @@ +{ config, ... }: +{ + programs.waybar = { + enable = true; + systemd.enable = true; + style = '' + + * { + font-family: "0xProto Nerd Font Propo"; + font-size: 14px; + font-weight: 600; + } + + window#waybar { + background-color: transparent; + + } + + #workspaces button { + all: unset; + padding: 1px 6px; + margin: 2px; + color: alpha(@base05, 0.5); + border-radius: 1em; + } + + + #workspaces button.active { + color: @base00; + background-color: @base05; + } + + #workspaces { + margin: 0px; + padding: 2px; + background-color: @base00; + border-radius: 1em; + } + #mpris, + #backlight, + #tray, + #pulseaudio, + #window, + #upower, + #clock, + #power-profiles-daemon { + margin: 0px; + padding: 2px 14px; + border-radius: 1em; + background-color: @base00; + color: @base05; + } + + #tray { + padding: 0px 6px 0px 6px; + } + + window#waybar.empty #window { + background: none; + } + ''; + settings = { + mainBar = { + layer = "top"; + position = "top"; + margin-top = 5; + margin-right = 5; + margin-left = 5; + spacing = 5; + modules-left = [ + "hyprland/workspaces" + "hyprland/window" + ]; + modules-right = [ + "mpris" + "backlight" + "pulseaudio" + "upower" + "power-profiles-daemon" + "clock" + "tray" + ]; + + "mpris" = { + player = "spotify"; + format = "{title} - {artist}"; + }; + + "hyprland/window" = { + format = "{}"; + max-length = 40; + }; + + "tray" = { + spacing = 10; + icon-size = 16; + }; + + "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:%S | %d.%m.%Y}"; + format-alt = "{:%H:%M:%S | %d.%m.%Y}"; + tooltip-format = "{:%Y %B}\n{calendar}"; + }; + }; + }; + }; +} diff --git a/stylix.nix b/stylix.nix new file mode 100644 index 0000000..e62e958 --- /dev/null +++ b/stylix.nix @@ -0,0 +1,54 @@ +{ + config, + 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; + 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.nerd-fonts._0xproto; + name = "0xProto Nerd Font Propo"; + }; + + emoji = { + package = pkgs.noto-fonts-color-emoji; + name = "Noto Color Emoji"; + }; + }; + }; +}