diff --git a/home-manager/flake.nix b/home-manager/flake.nix index ca6cc1a..b3fd090 100644 --- a/home-manager/flake.nix +++ b/home-manager/flake.nix @@ -51,31 +51,16 @@ }; }; - outputs = { nixpkgs, nixpkgs-pre-ad01, home-manager, rust-overlay, stylix, niri, codex-cli-nix, claude-code-nix, binaryninja, ... }@inputs: - let - system = "x86_64-linux"; - pinnedPkgs = nixpkgs-pre-ad01.legacyPackages.${system}; - in { - homeConfigurations.lusia = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.${system}; + outputs = inputs: { + homeConfigurations.lusia = inputs.home-manager.lib.homeManagerConfiguration { + pkgs = inputs.nixpkgs.legacyPackages.x86_64-linux; - modules = [ - stylix.homeModules.stylix - ./noctalia.nix - ./home.nix - ({ pkgs, ... }: { - nixpkgs.overlays = [ - rust-overlay.overlays.default - (final: prev: { - gqrx = pinnedPkgs.gqrx; - krita = pinnedPkgs.krita; - }) - ]; - home.packages = [ pkgs.rustup ]; - }) - ]; + modules = [ + inputs.stylix.homeModules.stylix + ./home.nix + ]; - extraSpecialArgs = { inherit inputs; }; - }; + extraSpecialArgs = { inherit inputs; }; }; + }; } diff --git a/home-manager/home.nix b/home-manager/home.nix index 1f5652c..8143a4f 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -1,255 +1,18 @@ -{ config, pkgs, inputs, ... }: +{ ... }: { + imports = [ + ./modules/overlays.nix + ./modules/packages.nix + ./modules/theming.nix + ./modules/programs/git.nix + ./modules/programs/gpg-agent.nix + ./modules/programs/obs-studio.nix + ]; + home.username = "lusia"; home.homeDirectory = "/home/lusia"; home.stateVersion = "24.11"; - nixpkgs.config.allowUnfree = true; - - home.packages = with pkgs; [ - # Window manager & desktop environment - inputs.niri.packages.${pkgs.stdenv.hostPlatform.system}.niri - swayidle - swww - kanshi - - # System utilities & monitoring - btop - htop - fastfetch - dua - nh - dconf - gparted - mission-center - gnome-software - - # CLI tools & utilities - ripgrep - fd - jq - entr - mdcat - sshpass - exiftool - - # File managers & compression tools - yazi - nautilus - file-roller - p7zip - unzip - zip - unrar - - # Media viewers & players - loupe - evince - vlc - mpv - zathura - - # SDR - gqrx - gnuradio - gnuradioPackages.lora_sdr - - # Media creation & editing - gimp - blender - ffmpeg - yt-dlp - waifu2x-converter-cpp - libheif - upscayl - inkscape - - # Office & productivity - libreoffice-fresh - gnome-text-editor - gnome-calculator - obsidian - simple-scan - system-config-printer - - # Development tools - neovim - vscode.fhs - lazygit - cargo-cross - cargo-generate - probe-rs-tools - elf2uf2-rs - dbeaver-bin - gnome-boxes - cutecom - inputs.binaryninja.packages.${pkgs.stdenv.hostPlatform.system}.binary-ninja-free-wayland - - # AI development tools - inputs.claude-code-nix.packages.${pkgs.stdenv.hostPlatform.system}.default - inputs.codex-cli-nix.packages.${pkgs.stdenv.hostPlatform.system}.default - gemini-cli - - # Internet & networking - firefox-bin - filezilla - qbittorrent - tor-browser - nmap - gnome-network-displays - - # Privacy & security - gnupg - pinentry-qt - kdePackages.kleopatra - monero-gui - - # Python & AI - python314 - openai-whisper - - # Document processing - tectonic - mermaid-cli - - # Theming - pywal - pywalfox-native - morewaita-icon-theme - - # Astronomy - stellarium - kstars - - # Wrap PrismLauncher to fix Minecraft GLFW Wayland issues - (pkgs.symlinkJoin { - name = "prismlauncher"; - paths = [ pkgs.prismlauncher ]; - buildInputs = [ pkgs.makeWrapper ]; - postBuild = '' - wrapProgram $out/bin/prismlauncher \ - --set SDL_VIDEODRIVER "x11" - ''; - }) - - # Wrap Krita to work with XWayland (Krita doesn't support native Wayland) - (pkgs.symlinkJoin { - name = "krita"; - paths = [ pkgs.krita ]; - buildInputs = [ pkgs.makeWrapper ]; - postBuild = '' - wrapProgram $out/bin/krita \ - --set DISPLAY ":0" \ - --set QT_AUTO_SCREEN_SCALE_FACTOR "0" \ - --set QT_SCALE_FACTOR "2" \ - --set QT_FONT_DPI "96" - ''; - }) - ]; - - # Set dark mode and Nautilus preferences - dconf = { - enable = true; - settings = { - "org/gnome/desktop/interface" = { - color-scheme = "prefer-dark"; - }; - "org/gnome/nautilus/preferences" = { - show-image-thumbnails = "always"; - }; - }; - }; - # Set morewaita as the default icon theme - gtk = { - enable = true; - - iconTheme = { - name = "MoreWaita"; - package = pkgs.morewaita-icon-theme; - }; - - # Stylix manages theme, commenting out manual config - # theme = { - # name = "Adwaita-dark"; - # package = pkgs.gnome-themes-extra; - # }; - - cursorTheme = { - name = "Adwaita"; - package = pkgs.adwaita-icon-theme; - }; - - # Force dark mode preference for GTK3 - gtk3.extraConfig = { - gtk-application-prefer-dark-theme = 1; - }; - - # Force dark mode preference for GTK4 - gtk4.extraConfig = { - gtk-application-prefer-dark-theme = 1; - }; - }; - - home.pointerCursor = { - name = "Adwaita"; - package = pkgs.adwaita-icon-theme; - size = 24; - gtk.enable = true; - x11 = { - enable = true; - defaultCursor = "Adwaita"; - }; - }; - - # Enable and configure git - programs.git = { - enable = true; - settings = { - user.name = "Lukrecja PleskaczyƄska"; - user.email = "lukrecjaaa@proton.me"; - credential.helper = "store"; - http."https://git.bgs.local:3000/" = { - sslCAInfo = "/home/lusia/VSTech-vpn/bgs-git-ca.crt"; - }; - }; - }; - - # Configure GPG agent with pinentry - services.gpg-agent = { - enable = true; - pinentry.package = pkgs.pinentry-qt; - enableSshSupport = true; - }; - - # OBS with plugins - programs.obs-studio = { - enable = true; - - plugins = with pkgs.obs-studio-plugins; [ - wlrobs - obs-backgroundremoval - obs-pipewire-audio-capture - obs-vaapi - ]; - }; - programs.home-manager.enable = true; - - # Stylix theming - stylix = { - enable = true; - - # Wallpaper required by Stylix (even though we use swww to actually display it) - image = ./wallpaper; - - # Use pywal's color scheme instead of extracting from image - # sync-colors.sh will generate colors.yaml here - base16Scheme = ./colors.yaml; - - # Use dark mode - polarity = "dark"; - - targets.qt.enable = true; - }; } diff --git a/home-manager/modules/overlays.nix b/home-manager/modules/overlays.nix new file mode 100644 index 0000000..2b3fd30 --- /dev/null +++ b/home-manager/modules/overlays.nix @@ -0,0 +1,18 @@ +{ pkgs, inputs, ... }: + +let + system = pkgs.stdenv.hostPlatform.system; + pinnedPkgs = inputs.nixpkgs-pre-ad01.legacyPackages.${system}; +in { + nixpkgs.config.allowUnfree = true; + + nixpkgs.overlays = [ + inputs.rust-overlay.overlays.default + (final: prev: { + gqrx = pinnedPkgs.gqrx; + krita = pinnedPkgs.krita; + }) + ]; + + home.packages = [ pkgs.rustup ]; +} diff --git a/home-manager/modules/packages.nix b/home-manager/modules/packages.nix new file mode 100644 index 0000000..1ac0901 --- /dev/null +++ b/home-manager/modules/packages.nix @@ -0,0 +1,144 @@ +{ pkgs, inputs, ... }: + +let + system = pkgs.stdenv.hostPlatform.system; +in { + home.packages = with pkgs; [ + # Window manager & desktop environment + inputs.niri.packages.${system}.niri + inputs.noctalia.packages.${system}.default + inputs.quickshell.packages.${system}.default + swayidle + swww + kanshi + + # System utilities & monitoring + btop + htop + fastfetch + dua + nh + dconf + gparted + mission-center + gnome-software + + # CLI tools & utilities + ripgrep + fd + jq + entr + mdcat + sshpass + exiftool + + # File managers & compression tools + yazi + nautilus + file-roller + p7zip + unzip + zip + unrar + + # Media viewers & players + loupe + evince + vlc + mpv + zathura + + # SDR + gqrx + gnuradio + gnuradioPackages.lora_sdr + + # Media creation & editing + gimp + blender + ffmpeg + yt-dlp + waifu2x-converter-cpp + libheif + upscayl + inkscape + + # Office & productivity + libreoffice-fresh + gnome-text-editor + gnome-calculator + obsidian + simple-scan + system-config-printer + + # Development tools + neovim + vscode.fhs + lazygit + cargo-cross + cargo-generate + probe-rs-tools + elf2uf2-rs + dbeaver-bin + gnome-boxes + cutecom + inputs.binaryninja.packages.${system}.binary-ninja-free-wayland + helix + + # AI development tools + inputs.claude-code-nix.packages.${system}.default + inputs.codex-cli-nix.packages.${system}.default + gemini-cli + + # Internet & networking + firefox-bin + filezilla + qbittorrent + tor-browser + nmap + gnome-network-displays + + # Privacy & security + gnupg + pinentry-qt + kdePackages.kleopatra + monero-gui + + # Python & AI + python314 + openai-whisper + + # Document processing + tectonic + mermaid-cli + + # Astronomy + stellarium + kstars + + # Wrap PrismLauncher to fix Minecraft GLFW Wayland issues + (pkgs.symlinkJoin { + name = "prismlauncher"; + paths = [ pkgs.prismlauncher ]; + buildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/prismlauncher \ + --set SDL_VIDEODRIVER "x11" + ''; + }) + + # Wrap Krita to work with XWayland (Krita doesn't support native Wayland) + (pkgs.symlinkJoin { + name = "krita"; + paths = [ pkgs.krita ]; + buildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/krita \ + --set DISPLAY ":0" \ + --set QT_AUTO_SCREEN_SCALE_FACTOR "0" \ + --set QT_SCALE_FACTOR "2" \ + --set QT_FONT_DPI "96" + ''; + }) + ]; +} diff --git a/home-manager/modules/programs/git.nix b/home-manager/modules/programs/git.nix new file mode 100644 index 0000000..0ccc3fd --- /dev/null +++ b/home-manager/modules/programs/git.nix @@ -0,0 +1,15 @@ +{ ... }: + +{ + programs.git = { + enable = true; + settings = { + user.name = "Lukrecja PleskaczyƄska"; + user.email = "lukrecjaaa@proton.me"; + credential.helper = "store"; + http."https://git.bgs.local:3000/" = { + sslCAInfo = "/home/lusia/VSTech-vpn/bgs-git-ca.crt"; + }; + }; + }; +} diff --git a/home-manager/modules/programs/gpg-agent.nix b/home-manager/modules/programs/gpg-agent.nix new file mode 100644 index 0000000..a8c815c --- /dev/null +++ b/home-manager/modules/programs/gpg-agent.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: + +{ + services.gpg-agent = { + enable = true; + pinentry.package = pkgs.pinentry-qt; + enableSshSupport = true; + }; +} diff --git a/home-manager/modules/programs/obs-studio.nix b/home-manager/modules/programs/obs-studio.nix new file mode 100644 index 0000000..b7cf8e1 --- /dev/null +++ b/home-manager/modules/programs/obs-studio.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + programs.obs-studio = { + enable = true; + plugins = with pkgs.obs-studio-plugins; [ + wlrobs + obs-backgroundremoval + obs-pipewire-audio-capture + obs-vaapi + ]; + }; +} diff --git a/home-manager/modules/theming.nix b/home-manager/modules/theming.nix new file mode 100644 index 0000000..032923f --- /dev/null +++ b/home-manager/modules/theming.nix @@ -0,0 +1,62 @@ +{ pkgs, ... }: + +{ + stylix = { + enable = true; + image = ../wallpaper; + base16Scheme = ../colors.yaml; + polarity = "dark"; + targets.qt.enable = true; + }; + + dconf = { + enable = true; + settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + }; + "org/gnome/nautilus/preferences" = { + show-image-thumbnails = "always"; + }; + }; + }; + + gtk = { + enable = true; + + iconTheme = { + name = "MoreWaita"; + package = pkgs.morewaita-icon-theme; + }; + + cursorTheme = { + name = "Adwaita"; + package = pkgs.adwaita-icon-theme; + }; + + gtk3.extraConfig = { + gtk-application-prefer-dark-theme = 1; + }; + + gtk4.extraConfig = { + gtk-application-prefer-dark-theme = 1; + }; + }; + + home.pointerCursor = { + name = "Adwaita"; + package = pkgs.adwaita-icon-theme; + size = 24; + gtk.enable = true; + x11 = { + enable = true; + defaultCursor = "Adwaita"; + }; + }; + + home.packages = with pkgs; [ + pywal + pywalfox-native + morewaita-icon-theme + ]; +} diff --git a/home-manager/noctalia.nix b/home-manager/noctalia.nix deleted file mode 100644 index 88025e2..0000000 --- a/home-manager/noctalia.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ pkgs, inputs, ... }: -{ - # import the home manager module - #imports = [ - # inputs.noctalia.homeModules.default - #]; - - # Install the package - home.packages = [ - inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default - inputs.quickshell.packages.${pkgs.stdenv.hostPlatform.system}.default - ]; - - # configure options - #programs.noctalia-shell = { - # enable = true; - #}; -}