diff --git a/flake.lock b/flake.lock index 376eebc..a8b041c 100644 --- a/flake.lock +++ b/flake.lock @@ -198,6 +198,64 @@ "type": "github" } }, + "niri": { + "inputs": { + "niri-stable": "niri-stable", + "niri-unstable": "niri-unstable", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable", + "xwayland-satellite-stable": "xwayland-satellite-stable", + "xwayland-satellite-unstable": "xwayland-satellite-unstable" + }, + "locked": { + "lastModified": 1763967518, + "narHash": "sha256-Gt0QlWp3r5JF+w2iZMbbot58UIR66fPH8LuHRxmHjsA=", + "owner": "sodiboo", + "repo": "niri-flake", + "rev": "69c6216ddacf8a708e4c6e51273772226fab3bc2", + "type": "github" + }, + "original": { + "owner": "sodiboo", + "repo": "niri-flake", + "type": "github" + } + }, + "niri-stable": { + "flake": false, + "locked": { + "lastModified": 1756556321, + "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "ref": "v25.08", + "repo": "niri", + "type": "github" + } + }, + "niri-unstable": { + "flake": false, + "locked": { + "lastModified": 1763964256, + "narHash": "sha256-TNtOfYXppR5ln5Go8ncQFMs5+xa3LqJWkaQq22ymAcI=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "79e41d7d88de44356b48400515076bf5593544e8", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "repo": "niri", + "type": "github" + } + }, "nix-flatpak": { "locked": { "lastModified": 1754777568, @@ -244,6 +302,22 @@ "type": "github" } }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1763622513, + "narHash": "sha256-1jQnuyu82FpiSxowrF/iFK6Toh9BYprfDqfs4BB+19M=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c58bc7f5459328e4afac201c5c4feb7c818d604b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1760423683, @@ -356,6 +430,7 @@ "inputs": { "grub2-themes": "grub2-themes", "home-manager": "home-manager", + "niri": "niri", "nix-flatpak": "nix-flatpak", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs_2", @@ -512,6 +587,39 @@ "type": "github" } }, + "xwayland-satellite-stable": { + "flake": false, + "locked": { + "lastModified": 1755491097, + "narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "388d291e82ffbc73be18169d39470f340707edaa", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "ref": "v0.7", + "repo": "xwayland-satellite", + "type": "github" + } + }, + "xwayland-satellite-unstable": { + "flake": false, + "locked": { + "lastModified": 1763704521, + "narHash": "sha256-ceYEV6PnvUN8Zixao4gpPuN+VT3B0SlAXKuPNHZhqUY=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "f379ff5722a821212eb59ada9cf8e51cb3654aad", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "type": "github" + } + }, "zen-browser": { "inputs": { "home-manager": "home-manager_2", diff --git a/flake.nix b/flake.nix index a9f7e4c..89e363f 100644 --- a/flake.nix +++ b/flake.nix @@ -26,6 +26,11 @@ url = "github:outfoxxed/quickshell"; inputs.nixpkgs.follows = "nixpkgs"; }; + + niri = { + url = "github:sodiboo/niri-flake"; + inputs.nixpkgs.follows = "nixpkgs"; + }; noctalia = { url = "github:noctalia-dev/noctalia-shell"; @@ -38,7 +43,7 @@ grub2-themes.url = "github:vinceliuice/grub2-themes"; }; - outputs = inputs@{ nixpkgs, home-manager, plasma-manager, nixos-hardware ,stylix, zen-browser, grub2-themes, nix-flatpak, ... }: + outputs = inputs@{ nixpkgs, home-manager, plasma-manager, nixos-hardware, stylix, niri, zen-browser, grub2-themes, nix-flatpak, ... }: let username = "cookiez"; hostname = "nixos"; @@ -64,9 +69,9 @@ }; modules = [ ./modules - grub2-themes.nixosModules.default - nix-flatpak.nixosModules.nix-flatpak - stylix.nixosModules.stylix + #grub2-themes.nixosModules.default + #nix-flatpak.nixosModules.nix-flatpak + #stylix.nixosModules.stylix #Conditional Modules! ] ++ (if hyprlandEnabled then [ ./hyprland/hyprland.nix ] else [ ]) ++ [ ] ++ (if plasmaEnabled then [ ./plasma/plasma.nix ] else [ ]) ++ [ diff --git a/hyprland/hyprland-home.nix b/hyprland/home.nix similarity index 50% rename from hyprland/hyprland-home.nix rename to hyprland/home.nix index 6fa40ae..39b020f 100644 --- a/hyprland/hyprland-home.nix +++ b/hyprland/home.nix @@ -2,7 +2,6 @@ { imports = [ - inputs.noctalia.homeModules.default ]; wayland.windowManager.hyprland = { @@ -20,28 +19,4 @@ extraConfig = builtins.readFile ./hyprland.conf; }; - - services = { - hyprpaper = { - enable = true; - - settings = { - preload = [ - "/etc/nixos/other/wallpaper2.png" - ]; - - wallpaper = [ - "eDP-1,/etc/nixos/other/wallpaper2.png" - ]; - }; - }; - }; - - programs = { - noctalia-shell = { - enable = false; - systemd.enable = false; - }; - hyprlock.enable = true; - }; } diff --git a/hyprland/hyprland.nix b/hyprland/hyprland.nix index 8d5799e..03dcbe4 100644 --- a/hyprland/hyprland.nix +++ b/hyprland/hyprland.nix @@ -2,10 +2,13 @@ { imports = [ ./autostart.nix + ../modules/noctalia + ../modules/hyprlock + ../modules/hyprpaper ]; home-manager.sharedModules = [ - ./hyprland-home.nix + ./home.nix ]; environment.systemPackages = with pkgs; @@ -19,7 +22,6 @@ libnotify hyprpaper sway #Sway Wayland compositor - inputs.noctalia.packages.${system}.default #kitty #Terminal (Already Included by default) rofi-wayland #Search bar (Meta + Space) yazi @@ -42,7 +44,6 @@ }; -# services.noctalia-shell.enable = true; #services.xserver.enable = true; #services.xserver.displayManager.sddm.enable = true; diff --git a/modules/configuration.nix b/modules/configuration.nix index de54715..6444764 100644 --- a/modules/configuration.nix +++ b/modules/configuration.nix @@ -51,6 +51,9 @@ [ inputs.home-manager.nixosModules.home-manager ./hardware-configuration.nix + ../plasma/plasma.nix + ../hyprland/hyprland.nix + ../niri/niri.nix ]; specialisation = { @@ -81,6 +84,14 @@ }; }; + "niri" = { + configuration = { + imports = [ + ../niri/niri.nix + ]; + }; + }; + }; # Bootloader. @@ -95,7 +106,12 @@ #devices = [ "nodev" ]; efiSupport = true; useOSProber = true; - #splashImage = + #splashImage = + extraConfig = '' + menuentry "NixOS - Default" { + set hidden=1 + } + ''; }; @@ -190,12 +206,29 @@ openssh.enable = true; }; - fonts.packages = with pkgs; [ - font-awesome - nerd-fonts.jetbrains-mono - meslo-lgs-nf - ]; + fonts = { + packages = with pkgs; [ + font-awesome + nerd-fonts.jetbrains-mono + meslo-lgs-nf + noto-fonts + noto-fonts-cjk-sans + noto-fonts-emoji + inter + ]; + fontconfig = { + enable = true; + + defaultFonts = { + monospace = [ "JetBrainsMono Nerd Font" "MesloLGS NF" ]; + sansSerif = [ "Inter" "Noto Sans" ]; + serif = [ "Noto Serif" ]; + }; + }; + }; + + #In order for dynamically linked executables to work programs.nix-ld.enable = true; diff --git a/modules/default.nix b/modules/default.nix index 2bcb401..1063c00 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,11 +1,69 @@ -{ ... }: +{ config, ... }: { imports = [ - ./configuration.nix - ./firefox.nix - ./boot-splash.nix - ./zsh.nix - ./neovim.nix - ./packages.nix + #./configuration.nix + #./firefox.nix + #./boot-splash.nix + #./zsh.nix + #./neovim.nix + #./packages.nix + + #./hardware-configuration.nix + ./general.nix + ../plasma/plasma.nix + ../hyprland/hyprland.nix + ../niri/niri.nix ]; + + specialisation = { + "plasma" = { + inheritParentConfig = false; + configuration = { + imports = [ + ../plasma/plasma.nix + ./general.nix + ]; + + programs.gamemode.enable = true; + + environment.etc."nixos-tags".text = "plasma"; + }; + }; + + "hyprland" = { + inheritParentConfig = false; + configuration = { + imports = [ + ../hyprland/hyprland.nix + ./general.nix + ]; + + environment.etc."nixos-tags".text = "hyprland"; + }; + }; + + "minimal" = { + inheritParentConfig = false; + configuration = { + imports = [ + ./minimal.nix + ]; + + environment.etc."nixos-tags".text = "minimal"; + }; + }; + + "niri" = { + inheritParentConfig = false; + configuration = { + imports = [ + ../niri/niri.nix + ./general.nix + ]; + + environment.etc."nixos-tags".text = "niri"; + }; + }; + + }; } diff --git a/modules/desktop-entries.nix b/modules/desktop-entries.nix index 694de9b..efd1906 100644 --- a/modules/desktop-entries.nix +++ b/modules/desktop-entries.nix @@ -1,4 +1,4 @@ -{ pkgs, ...}: +{ pkgs, username, ...}: { xdg = { desktopEntries.youtube = { @@ -23,7 +23,7 @@ terminal = false; categories = [ "System" "TerminalEmulator" ]; - icon = "/etc/nixos/other/kitty.app.png"; + icon = "/home/${username}/NixOS/other/kitty.app.png"; }; desktopEntries."org.kde.kinfocenter" = { diff --git a/modules/general.nix b/modules/general.nix new file mode 100644 index 0000000..a54f9f8 --- /dev/null +++ b/modules/general.nix @@ -0,0 +1,318 @@ +# 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’). + +#Access Internet using: +#nmcli device wifi list +#nmcli device wifi connect password +# or if no password (open wifi) +#nmcli device wifi connect + +#Nix flake file limit: ulimit -n 500000 + +{ inputs, config, pkgs, lib, username, host, version, system, grub2-theme, ... }: +{ + stylix = { + enable = false; + image = ../other/wallpaper2.png; + #autoEnable = true; #Auto generate theme based on wallpaper + base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-moon.yaml"; + opacity = { + desktop = 0.5; + terminal = 0.9; + }; + fonts = { + monospace = { + package = pkgs.nerd-fonts.jetbrains-mono; + name = "JetBrainsMono Nerd Font"; + }; + + sansSerif = { + package = pkgs.inter; + name = "Inter"; + }; + + serif = { + package = pkgs.noto-fonts; + name = "Noto Serif"; + }; + }; + targets.grub.enable = false; + }; + +# in configuration.nix + #Assign Swap to the PC + #swapDevices = [{ + # device = "/swapfile"; + # size = 16 * 1024; # 16GB + #}]; + + imports = + [ + inputs.home-manager.nixosModules.home-manager + inputs.grub2-themes.nixosModules.default + inputs.nix-flatpak.nixosModules.nix-flatpak + inputs.stylix.nixosModules.stylix + ./hardware-configuration.nix + + ./firefox.nix + ./boot-splash.nix + ./zsh.nix + ./neovim.nix + ./packages.nix + ]; + + # Bootloader. + boot.loader = { + systemd-boot.enable = false; + efi.canTouchEfiVariables = true; + #boot.loader.efi.efiSysMountPoint = "/boot/efi"; + + grub = { + enable = true; + device = "/dev/nvme0n1"; #Needs to be changed when using a new computer! (Make grub partition - look below!) + #devices = [ "nodev" ]; + efiSupport = true; + useOSProber = true; + #splashImage = +# extraConfig = '' + # menuentry "NixOS - Default" { + # set hidden=1 + # } + # ''; + }; + + + grub2-theme = { + enable = true; + theme = "whitesur"; + footer = true; + }; + + timeout = 10; + }; + + #Ensure there is a grub_bios partition: (gparted) + #Create a new parititon. File System: Unformatted - Size: ~5 Mib + #Apply + #Manage flags -> Add bios_grub + + networking.hostName = host; + # 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"; + + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.${username} = ./home.nix; + backupFileExtension = "backup"; # Automatically backs up conflicting files during activation + extraSpecialArgs = { inherit inputs username version system host; }; + sharedModules = [ inputs.plasma-manager.homeModules.plasma-manager ]; + }; + + # Enable networking + networking.networkmanager.enable = true; + + networking.extraHosts = '' + 100.89.141.79 tail-rpi + ''; + + # 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"; + }; + + # List services that you want to enable: + services = { + ollama = { + enable = true; + # Optional: load models on startup + #loadModels = [ ... ]; + }; + + fprintd.enable = true; + fprintd.tod.enable = true; + fprintd.tod.driver = pkgs.libfprint-2-tod1-goodix; + + fwupd.enable = true; #Allows BIOS updates + + locate = { + enable = true; + package = pkgs.plocate; + }; + + tailscale = { + enable = true; + useRoutingFeatures = "client"; + extraSetFlags = [ + "--operator=${username}" + "--accept-routes" + ]; + }; + + #Enable CUPS to print documents. + printing.enable = true; + + # Enable the OpenSSH daemon. + openssh.enable = true; + }; + + fonts = { + packages = with pkgs; [ + font-awesome + nerd-fonts.jetbrains-mono + meslo-lgs-nf + noto-fonts + noto-fonts-cjk-sans + noto-fonts-emoji + inter + ]; + + fontconfig = { + enable = true; + + defaultFonts = { + monospace = [ "JetBrainsMono Nerd Font" "MesloLGS NF" ]; + sansSerif = [ "Inter" "Noto Sans" ]; + serif = [ "Noto Serif" ]; + }; + }; + }; + + + #In order for dynamically linked executables to work + programs.nix-ld.enable = true; + + programs.ssh.askPassword = lib.mkForce "${pkgs.kdePackages.ksshaskpass}/bin/ksshaskpass"; + + programs.steam.enable = true; + + # Configure console keymap + console.keyMap = "de"; + + hardware.enableRedistributableFirmware = true; + #Enables proprietary, redistributable firmware so hardware devices function properly + + hardware.graphics = { + enable = true; + # Mesa should be enabled by default for Vulkan, but you can be explicit + enable32Bit = true; # For 32-bit applications + }; + + hardware.cpu.amd.updateMicrocode = true; + + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + settings = { + General = { + # Shows battery charge of connected devices on supported + # Bluetooth adapters. Defaults to 'false'. + Experimental = true; + # When enabled other devices can connect faster to us, however + # the tradeoff is increased power consumption. Defaults to + # 'false'. + FastConnectable = true; + }; + Policy = { + # Enable all controllers when they are found. This includes + # adapters present on start as well as adapters that are plugged + # in later on. Defaults to 'true'. + AutoEnable = true; + }; + }; + }; + +# security.rtkit.enable = true; +# services.pipewire = { +# enable = true; +# alsa.enable = true; +# alsa.support32Bit = true; +# pulse.enable = true; +# # If you want to use JACK applications, uncomment this +# #jack.enable = true; +# +# # use the example session manager (no others are packaged yet so this is enabled by default, +# # no need to redefine it in your config for now) +# #media-session.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.${username} = { + isNormalUser = true; + description = "Cookiez"; + extraGroups = [ "networkmanager" "wheel" "docker" ]; + packages = with pkgs; [ + #User Packages Here + ]; + }; + + virtualisation.docker.enable = true; + + environment.etc."gitconfig".text = '' + [init] + defaultBranch = main + ''; + + #So no user in the group Wheel has to input the password in order to use sudo + security.sudo.wheelNeedsPassword = false; + + #Allow Nix Commands + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # Allow unfree packages + nixpkgs.config.allowUnfree = 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; + # }; + + environment.variables = { + EDITOR = "nvim"; + # XKB_DEFAULT_LAYOUT = "de"; + }; + + environment.sessionVariables = { + NIXOS_OZONE_WL = "1"; #For chromium to work under wayland and with virtual Keyboards (Only really needed for virtual keyboards, but doest hurt ...) + TERMINAL = "kitty"; + }; + + + # 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 = version; # Did you read the comment? +} diff --git a/modules/hyprlock/default.nix b/modules/hyprlock/default.nix new file mode 100644 index 0000000..92c34b7 --- /dev/null +++ b/modules/hyprlock/default.nix @@ -0,0 +1,13 @@ +{ config, inputs, pkgs, ... }: +{ + imports = [ + ]; + + home-manager.sharedModules = [ + ./home.nix + ]; + + environment.systemPackages = with pkgs; + [ + ]; +} diff --git a/modules/hyprlock/home.nix b/modules/hyprlock/home.nix new file mode 100644 index 0000000..22d5652 --- /dev/null +++ b/modules/hyprlock/home.nix @@ -0,0 +1,10 @@ +{pkgs, inputs, username, ...}: +{ + + imports = [ + ]; + + programs = { + hyprlock.enable = true; + }; +} diff --git a/modules/hyprpaper/default.nix b/modules/hyprpaper/default.nix new file mode 100644 index 0000000..92c34b7 --- /dev/null +++ b/modules/hyprpaper/default.nix @@ -0,0 +1,13 @@ +{ config, inputs, pkgs, ... }: +{ + imports = [ + ]; + + home-manager.sharedModules = [ + ./home.nix + ]; + + environment.systemPackages = with pkgs; + [ + ]; +} diff --git a/modules/hyprpaper/home.nix b/modules/hyprpaper/home.nix new file mode 100644 index 0000000..ce05143 --- /dev/null +++ b/modules/hyprpaper/home.nix @@ -0,0 +1,22 @@ +{pkgs, inputs, username, ...}: +{ + + imports = [ + ]; + + services = { + hyprpaper = { + enable = true; + + settings = { + preload = [ + "/home/${username}/NixOS/other/wallpaper2.png" + ]; + + wallpaper = [ + "eDP-1,/home/${username}/NixOS/other/wallpaper2.png" + ]; + }; + }; + }; +} diff --git a/modules/ncli.nix b/modules/ncli.nix index a4ec7af..f133621 100644 --- a/modules/ncli.nix +++ b/modules/ncli.nix @@ -127,8 +127,21 @@ in handle_backups echo "Starting NixOS rebuild for current host: $HOST" cd "$HOME/$PROJECT" || { echo "Error: Could not change to $HOME/$PROJECT"; exit 1; } + + current="" + if [ -f /etc/nixos-tags ]; then + current=$(cat /etc/nixos-tags) + fi + if sudo nixos-rebuild switch --flake ".#$HOST"; then echo "✓ Rebuild finished successfully for $HOST" + + if [ -n "$current" ]; then + sudo /run/current-system/specialisation/$current/bin/switch-to-configuration switch + else + echo "No specialization tag found, staying on default system." + fi + else echo "✗ Rebuild failed for $HOST" >&2 exit 1 @@ -147,9 +160,27 @@ in exit 1 fi - echo "Rebuilding system..." + + current="" + if [ -f /etc/nixos-tags ]; then + current=$(cat /etc/nixos-tags) + fi + + if [ -n "$current" ]; then + echo "Rebuilding system... Current specialization: $current" + else + echo "Rebuilding system... Staying on current specialization" + fi + if sudo nixos-rebuild switch --flake ".#$HOST"; then echo "✓ Update and rebuild finished successfully for $HOST" + + if [ -n "$current" ]; then + sudo /run/current-system/specialisation/$current/bin/switch-to-configuration switch + else + echo "No specialization tag found, staying on default system." + fi + else echo "✗ Update and rebuild failed for $HOST" >&2 exit 1 diff --git a/modules/noctalia/default.nix b/modules/noctalia/default.nix new file mode 100644 index 0000000..1faf2b3 --- /dev/null +++ b/modules/noctalia/default.nix @@ -0,0 +1,14 @@ +{ config, inputs, pkgs, ... }: +{ + imports = [ + ]; + + home-manager.sharedModules = [ + ./home.nix + ]; + + environment.systemPackages = with pkgs; + [ + inputs.noctalia.packages.${system}.default + ]; +} diff --git a/modules/noctalia/home.nix b/modules/noctalia/home.nix new file mode 100644 index 0000000..5222617 --- /dev/null +++ b/modules/noctalia/home.nix @@ -0,0 +1,13 @@ +{pkgs, inputs, ...}: +{ + imports = [ + inputs.noctalia.homeModules.default + ]; + + programs = { + noctalia-shell = { + enable = true; + systemd.enable = true; + }; + }; +} diff --git a/modules/packages.nix b/modules/packages.nix index e6d4d99..6ac915b 100644 --- a/modules/packages.nix +++ b/modules/packages.nix @@ -1,7 +1,7 @@ {config, pkgs, libs, inputs, nix-flatpak, ...}: { environment.systemPackages = with pkgs; [ - #Essenteals (CLI Only) + #Essentials (CLI Only) wget #A tool for quickly downloading things from the Web micro-with-xclip #Micro text editor with xclip for clipboard thefuck #Error correction in case commands are wrong. Type: 'fuck' @@ -47,6 +47,11 @@ vscode #Editor for all kinds of programms nodejs_22 + #Hochschule + postgresql + dbeaver-bin + sqlite + #Desktop Applications ryubing vlc @@ -79,6 +84,8 @@ kdePackages.dolphin persepolis #Download Manager libreoffice-still + kdePackages.kservice + qbittorrent #CLI tools pdftk @@ -92,6 +99,8 @@ texliveFull #LaTeX PDF maker lazygit gtypist + powertop + file ]; nixpkgs.config.permittedInsecurePackages = [ diff --git a/modules/zsh.nix b/modules/zsh.nix index f682b7c..32da033 100644 --- a/modules/zsh.nix +++ b/modules/zsh.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: { +{ config, pkgs, username, ... }: { programs.zsh = { enable = true; @@ -8,7 +8,7 @@ }; shellInit = '' - source /etc/nixos/other/aliases + source /home/${username}/NixOS/other/aliases ''; #To reset powerlevel10k, write 'p10k configure' in shell! diff --git a/niri/home.nix b/niri/home.nix new file mode 100644 index 0000000..4f55048 --- /dev/null +++ b/niri/home.nix @@ -0,0 +1,26 @@ +{pkgs, inputs, ...}: +{ + + imports = [ + inputs.niri.homeModules.niri + ]; + + programs.niri = { + package = pkgs.niri; + enable = true; + #xwayland.enable = true; + config = '' + binds { + Super+Return { spawn "kitty"; } + Super+Space { spawn "fuzzel"; } + Super+Q { close-window; } + Super+Left { focus-column-left; } + Super+Right { focus-column-right; } + Super+Up { focus-workspace-up; } + Super+Down { focus-workspace-down; } + Super+L { spawn "hyprlock"; } + Super+Shift+E { "quit"; } + } + ''; + }; +} diff --git a/niri/niri.nix b/niri/niri.nix new file mode 100644 index 0000000..07b6099 --- /dev/null +++ b/niri/niri.nix @@ -0,0 +1,45 @@ +{ config, inputs, pkgs, ... }: +{ + imports = [ +# ./autostart.nix + ../modules/noctalia + ../modules/hyprlock + ../modules/hyprpaper + ]; + + home-manager.sharedModules = [ + ./home.nix + ]; + + environment.systemPackages = with pkgs; + [ + mako + waybar + fuzzel + ]; + +# programs = { +# niri = { +# enable = true; +# }; +# }; + + + #services.xserver.enable = true; + #services.xserver.displayManager.sddm.enable = true; + +# xdg.portal = { +# enable = true; +# extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; +# }; + + #sound.enable = true; + #security.rtkit.enable = true; + #services.pipewire = { + # enable = true; + # alsa.enable = true; + # #alsa.support3Bbit = true; + # pulse.enable = true; + # jack.enable = true; + #}; +} diff --git a/other/aliases b/other/aliases index d4f5e1c..e251dae 100644 --- a/other/aliases +++ b/other/aliases @@ -1,3 +1,7 @@ +#Variables + + + #---------- # Commands that will be used as aliases for zsh and bash #---------- @@ -7,7 +11,7 @@ alias py="python3" #alias mcrow="sudo micro" alias mcrow="echo 'you better try to use nvim you little shit! :3'" -alias srcals="source /etc/nixos/other/aliases && echo 'Sourced Aliases ... successful!'" +alias srcals="source $HOME/other/aliases && echo 'Sourced Aliases ... successful!'" alias please="sudo" alias se="sudoedit" alias tt="gtypist ktde.typ" @@ -18,36 +22,36 @@ alias neofetch="fastfetch" # Nix Specific commands #----- -alias nix-upd="sudo nixos-rebuild switch --flake /etc/nixos" -alias nix-update="sudo nixos-rebuild switch --flake /etc/nixos" -alias nix-edit="sudoedit /etc/nixos/configuration.nix" -alias nix-packages="sudoedit /etc/nixos/packages.nix" -alias nix-pkgs="sudoedit /etc/nixos/packages.nix" -alias nix-flake="sudoedit /etc/nixos/flake.nix" -alias nix-edit-flake="sudoedit /etc/nixos/flake.nix" -alias nix-zsh="sudoedit /etc/nixos/zsh.nix" -alias nix-edit-zsh="sudoedit /etc/nixos/zsh.nix" -alias nix-aliases="sudoedit /etc/nixos/other/aliases" -alias nix-edit-aliases="sudoedit /etc/nixos/other/aliases" -alias nix-regenerate-config="sudo nixos-generate-config" -alias nix-home="sudoedit /etc/nixos/home.nix" +#alias nix-upd="sudo nixos-rebuild switch --flake /etc/nixos" +#alias nix-update="sudo nixos-rebuild switch --flake /etc/nixos" +#alias nix-edit="sudoedit /etc/nixos/configuration.nix" +#alias nix-packages="sudoedit /etc/nixos/packages.nix" +#alias nix-pkgs="sudoedit /etc/nixos/packages.nix" +#alias nix-flake="sudoedit /etc/nixos/flake.nix" +#alias nix-edit-flake="sudoedit /etc/nixos/flake.nix" +#alias nix-zsh="sudoedit /etc/nixos/zsh.nix" +#alias nix-edit-zsh="sudoedit /etc/nixos/zsh.nix" +#alias nix-aliases="sudoedit /etc/nixos/other/aliases" +#alias nix-edit-aliases="sudoedit /etc/nixos/other/aliases" +#alias nix-regenerate-config="sudo nixos-generate-config" +#alias nix-home="sudoedit /etc/nixos/home.nix" alias nix-gc="sudo nix-store --gc" alias nix-clean="sudo nix-store --gc" alias nix-clear="sudo nix-store --gc" -alias home-edit="sudoedit /etc/nixos/home.nix" +#alias home-edit="sudoedit /etc/nixos/home.nix" -alias cd-nix="cd /etc/nixos/" +#alias cd-nix="cd /etc/nixos/" #KDE Plasma Specific #----- -alias kde-theme-apply="source /etc/nixos/plasma/konsave.sh" +alias kde-theme-apply="source $HOME/nixos/plasma/konsave.sh" #Hyprland Specific #----- alias exit-hyprland="hyprctl dispatch exit" alias hyprland-exit="hyprctl dispatch exit" -alias hypr-edit="sudoedit /etc/nixos/hyprland/hyprland.conf" +alias hypr-edit="sudoedit $HOME/NixOS/hyprland/hyprland.conf" #LaTeX Commands alias makepdf="makeglossaries main && pdflatex main.tex" diff --git a/other/pfp.sh b/other/pfp.sh index b6d54af..81fc93e 100755 --- a/other/pfp.sh +++ b/other/pfp.sh @@ -1,5 +1,5 @@ mkdir -p /var/lib/AccountsService/{icons,users} -cp /etc/nixos/other/pfp.png /var/lib/AccountsService/icons/cookiez +cp /home/cookiez/NixOS/other/pfp.png /var/lib/AccountsService/icons/cookiez echo -e "[User]\nIcon=/var/lib/AccountsService/icons/cookiez\n" > /var/lib/AccountsService/users/cookiez chown root:root /var/lib/AccountsService/users/cookiez diff --git a/other/wallpaper2.png b/other/wallpaper2.png index 8dc8ba4..8c69de7 100644 Binary files a/other/wallpaper2.png and b/other/wallpaper2.png differ diff --git a/plasma/autostart.nix b/plasma/autostart.nix index 06ae83e..5f0e54a 100644 --- a/plasma/autostart.nix +++ b/plasma/autostart.nix @@ -4,7 +4,7 @@ #To show logs of services run: journalctl --user-unit={service-name} --user systemd.user.services.set-wallpaper = { - enable = false; + enable = true; description = "Set KDE Plasma wallpaper"; #after = [ "plasma-desktop.service" ]; wantedBy = [ "graphical-session.target" ]; diff --git a/plasma/plasma-home.nix b/plasma/home.nix similarity index 99% rename from plasma/plasma-home.nix rename to plasma/home.nix index 949e815..e20913c 100644 --- a/plasma/plasma-home.nix +++ b/plasma/home.nix @@ -6,7 +6,7 @@ programs = { plasma = { - enable = true; + enable = false; overrideConfig = true; panels = [ diff --git a/plasma/konsave.sh b/plasma/konsave.sh index fcd7621..57c7b28 100755 --- a/plasma/konsave.sh +++ b/plasma/konsave.sh @@ -1,8 +1,8 @@ -source /etc/nixos/other/colors.sh +source /home/cookiez/NixOS/other/colors.sh FLAG_FILE="/home/cookiez/.flags/theme-flag" -/run/current-system/sw/bin/konsave -i /etc/nixos/plasma/NixOS-1.0.1.knsv -/run/current-system/sw/bin/konsave -i /etc/nixos/plasma/NixOS-1.0.1.knsv +/run/current-system/sw/bin/konsave -i /home/cookiez/NixOS/plasma/NixOS-1.0.1.knsv +/run/current-system/sw/bin/konsave -i /home/cookiez/NixOS/plasma/NixOS-1.0.1.knsv /run/current-system/sw/bin/konsave -a NixOS-1.0.1 progress_bar() { diff --git a/plasma/plasma.nix b/plasma/plasma.nix index bf8c27d..9c58e37 100644 --- a/plasma/plasma.nix +++ b/plasma/plasma.nix @@ -1,17 +1,4 @@ -{config, pkgs, ...}: - -let - # Define the custom background package with the correct relative path - background-package = pkgs.stdenvNoCC.mkDerivation { - name = "background-image"; - src = ./other/wallpaper.png; # Place wallpaper.jpg in the same directory as this config file - dontUnpack = true; - installPhase = '' - cp $src $out - ''; - }; -in - +{config, pkgs, username, ...}: { imports = [ @@ -19,9 +6,15 @@ in ]; home-manager.sharedModules = [ - ./plasma-home.nix + #./home.nix ]; - + + systemd.services = { + "plasma-workspace".serviceConfig.KillMode = "mixed"; + "plasma-workspace".serviceConfig.TimeoutStopSec = "5s"; + "sddm".serviceConfig.KillMode = "mixed"; + }; + services = { xserver = { enable = true; @@ -64,8 +57,8 @@ in #}; system.activationScripts.script.text = '' - source /etc/nixos/other/colors.sh - source /etc/nixos/other/pfp.sh + source /home/cookiez/NixOS/other/colors.sh + source /home/cookiez/NixOS/other/pfp.sh ''; #services.displayManager.sddm = {