diff --git a/flake.nix b/flake.nix index 926158b..bf65494 100644 --- a/flake.nix +++ b/flake.nix @@ -24,7 +24,19 @@ }; }; - outputs = { self, nixpkgs, home-manager, plasma-manager, nixos-generators, secrix }: { + outputs = { self, nixpkgs, home-manager, plasma-manager, nixos-generators, secrix }: + let + hmModule = file: { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager ]; + + home-manager.users.cazzzer = import file; + # Optionally, use home-manager.extraSpecialArgs to pass + # arguments to home.nix + }; + in + { apps.x86_64-linux.secrix = secrix.secrix self; nixosConfigurations = { @@ -33,19 +45,12 @@ modules = [ ./modules ./hosts/common.nix + ./hosts/common-desktop.nix ./hosts/Yura-PC ./users/cazzzer # https://nix-community.github.io/home-manager/index.xhtml#sec-flakes-nixos-module home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager ]; - - home-manager.users.cazzzer = import ./home; - # Optionally, use home-manager.extraSpecialArgs to pass - # arguments to home.nix - } + (hmModule ./home/cazzzer-pc.nix) ]; }; Yura-TPX13 = nixpkgs.lib.nixosSystem { @@ -53,19 +58,12 @@ modules = [ ./modules ./hosts/common.nix + ./hosts/common-desktop.nix ./hosts/Yura-TPX13 ./users/cazzzer # https://nix-community.github.io/home-manager/index.xhtml#sec-flakes-nixos-module home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager ]; - - home-manager.users.cazzzer = import ./home; - # Optionally, use home-manager.extraSpecialArgs to pass - # arguments to home.nix - } + (hmModule ./home/cazzzer-laptop.nix) ]; }; VM = nixpkgs.lib.nixosSystem { diff --git a/home/cazzzer-laptop.nix b/home/cazzzer-laptop.nix new file mode 100644 index 0000000..6142795 --- /dev/null +++ b/home/cazzzer-laptop.nix @@ -0,0 +1,21 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./modules + ]; + + programs.plasma = { + kwin.virtualDesktops.number = 6; + kwin.virtualDesktops.rows = 2; + + shortcuts.kwin = { + "Switch to Desktop 1" = "Meta+F1"; + "Switch to Desktop 2" = "Meta+F2"; + "Switch to Desktop 3" = "Meta+F3"; + "Switch to Desktop 4" = "Meta+Z"; + "Switch to Desktop 5" = "Meta+X"; + "Switch to Desktop 6" = "Meta+C"; + }; + }; +} diff --git a/home/cazzzer-pc.nix b/home/cazzzer-pc.nix new file mode 100644 index 0000000..b692730 --- /dev/null +++ b/home/cazzzer-pc.nix @@ -0,0 +1,9 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./modules + ]; + + programs.plasma.kwin.virtualDesktops.number = 2; +} diff --git a/home/default.nix b/home/default.nix deleted file mode 100644 index 7e0772d..0000000 --- a/home/default.nix +++ /dev/null @@ -1,247 +0,0 @@ -{ config, lib, pkgs, ... }: -let - username = "cazzzer"; -in -{ - # Home Manager needs a bit of information about you and the paths it should - # manage. - home.username = username; - home.homeDirectory = "/home/${username}"; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - - home.sessionVariables = { - EDITOR = "micro"; - SHELL = "fish"; - }; - - # TODO: remove (replace by bitwarden-desktop) - services.gnome-keyring = { - enable = true; - components = [ "pkcs11" "ssh" ]; - }; - - services.darkman = { - enable = true; - settings = { - lat = 37.3387; - lng = -121.8853; - }; - lightModeScripts = { - plasma-color = "plasma-apply-colorscheme BreezeLight"; - }; - darkModeScripts = { - plasma-color = "plasma-apply-colorscheme BreezeDark"; - }; - }; - - programs.fish = { - enable = true; - shellInit = "set fish_greeting"; - shellAliases = { - # Replace ls with exa - ls = "exa -al --color=always --group-directories-first --icons"; # preferred listing - la = "exa -a --color=always --group-directories-first --icons"; # all files and dirs - ll = "exa -l --color=always --group-directories-first --icons"; # long format - lt = "exa -aT --color=always --group-directories-first --icons"; # tree listing - "l." = "exa -a | rg '^\.'"; # show only dotfiles - - # Replace cat with bat - cat = "bat"; - }; - # alias for nix shell with flake packages - functions.add.body = '' - set -x packages 'nixpkgs#'$argv - nix shell $packages - ''; - interactiveShellInit = '' - fastfetch - ''; - }; - - programs.starship = { - enable = true; - enableFishIntegration = true; - settings = { - format = lib.concatStrings [ - "$all" - "$time" - "$cmd_duration" - "$line_break" - "$jobs" - "$status" - "$character" - ]; - username = { - format = " [╭─$user]($style)@"; - style_user = "bold red"; - style_root = "bold red"; - show_always = true; - }; - hostname = { - format = "[$hostname]($style) in "; - style = "bold dimmed red"; - ssh_only = false; - }; - directory = { - style = "purple"; - truncation_length = 0; - truncate_to_repo = true; - truncation_symbol = "repo: "; - }; - git_status = { - style = "white"; - ahead = "⇡\${count}"; - diverged = "⇕⇡\${ahead_count}⇣\${behind_count}"; - behind = "⇣\${count}"; - deleted = "x"; - }; - cmd_duration = { - min_time = 1000; - format = "took [$duration]($style) "; - }; - time = { - format = " 🕙 $time($style) "; - time_format = "%T"; - style = "bright-white"; - disabled = false; - }; - character = { - success_symbol = " [╰─λ](bold red)"; - error_symbol = " [×](bold red)"; - }; - status = { - symbol = "🔴"; - format = "[\\[$symbol$status_common_meaning$status_signal_name$status_maybe_int\\]]($style)"; - map_symbol = true; - disabled = false; - }; - }; - }; - - programs.plasma = { - enable = true; - overrideConfig = true; - # TODO: figure out how to enable tela-circle icon theme if installed in systemPackages - # workspace.iconTheme = if builtins.elem pkgs.tela-circle-icon-theme config.environment.systemPackages then "Tela-circle" else null; - workspace.iconTheme = "Tela-circle"; - fonts = let - defaultFont = { - family = "Noto Sans"; - pointSize = 14; - }; - in { - general = defaultFont; - fixedWidth = defaultFont // { family = "Hack"; }; - small = defaultFont // { pointSize = defaultFont.pointSize - 2; }; - toolbar = defaultFont; - menu = defaultFont; - windowTitle = defaultFont; - }; - input.keyboard.layouts = [ - { layout = "us"; displayName = "us"; } - { layout = "minimak-4"; displayName = "us4"; } - { layout = "ru"; displayName = "ru"; } - ]; - kwin.virtualDesktops.number = 2; - session.sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession"; - shortcuts = { - # kmix.mic_mute = "ScrollLock"; - kmix.mic_mute = ["Microphone Mute" "ScrollLock" "Meta+Volume Mute,Microphone Mute" "Meta+Volume Mute,Mute Microphone"]; - plasmashell.show-barcode = "Meta+M"; - kwin."Window Maximize" = [ "Meta+F" "Meta+PgUp,Maximize Window" ]; - "KDE Keyboard Layout Switcher"."Switch to Next Keyboard Layout" = "Meta+Space"; - }; - hotkeys.commands."launch-konsole" = { - name = "Launch Konsole"; - key = "Meta+Alt+C"; - command = "konsole"; - }; - configFile = { - kdeglobals.KDE.AnimationDurationFactor = 0.5; - kdeglobals.General.accentColorFromWallpaper = true; - kwinrc.Wayland.InputMethod = { - value = "org.fcitx.Fcitx5.desktop"; - shellExpand = true; - }; - dolphinrc.General.ShowFullPath = true; - dolphinrc.DetailsMode.PreviewSize.persistent = true; - kactivitymanagerdrc = { - activities."809dc779-bf5b-49e6-8e3f-cbe283cb05b6" = "Default"; - activities."b34a506d-ac4f-4797-8c08-6ef45bc49341" = "Fun"; - activities-icons."809dc779-bf5b-49e6-8e3f-cbe283cb05b6" = "keyboard"; - activities-icons."b34a506d-ac4f-4797-8c08-6ef45bc49341" = "preferences-desktop-gaming"; - }; - }; - }; - - xdg.configFile = { - "fcitx5/conf/wayland.conf".text = "Allow Overriding System XKB Settings=False"; - }; - - # 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. - home.stateVersion = "24.11"; # Please read the comment before changing. - - # The home.packages option allows you to install Nix packages into your - # environment. - # home.packages = [ - # # Adds the 'hello' command to your environment. It prints a friendly - # # "Hello, world!" when run. - # pkgs.hello - - # # It is sometimes useful to fine-tune packages, for example, by applying - # # overrides. You can do that directly here, just don't forget the - # # parentheses. Maybe you want to install Nerd Fonts with a limited number of - # # fonts? - # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) - - # # You can also create simple shell scripts directly inside your - # # configuration. For example, this adds a command 'my-hello' to your - # # environment: - # (pkgs.writeShellScriptBin "my-hello" '' - # echo "Hello, ${config.home.username}!" - # '') - # ]; - - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. - # home.file = { - # # Building this configuration will create a copy of 'dotfiles/screenrc' in - # # the Nix store. Activating the configuration will then make '~/.screenrc' a - # # symlink to the Nix store copy. - # ".screenrc".source = dotfiles/screenrc; - - # # You can also set the file content immediately. - # ".gradle/gradle.properties".text = '' - # org.gradle.console=verbose - # org.gradle.daemon.idletimeout=3600000 - # ''; - # }; - - # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. These will be explicitly sourced when using a - # shell provided by Home Manager. If you don't want to manage your shell - # through Home Manager then you have to manually source 'hm-session-vars.sh' - # located at either - # - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # /etc/profiles/per-user/cazzzer/etc/profile.d/hm-session-vars.sh - # - # home.sessionVariables = { - # EDITOR = "emacs"; - # }; -} diff --git a/home/modules/default.nix b/home/modules/default.nix new file mode 100644 index 0000000..f6e50aa --- /dev/null +++ b/home/modules/default.nix @@ -0,0 +1,83 @@ +{ config, lib, pkgs, ... }: +let + username = "cazzzer"; +in +{ + imports = [ + ./fish.nix + ./starship.nix + ./plasma.nix + ]; + + # Home Manager needs a bit of information about you and the paths it should + # manage. + home.username = username; + home.homeDirectory = "/home/${username}"; + + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; + + home.sessionVariables = { + EDITOR = "micro"; + SHELL = "fish"; + }; + + services.darkman = { + enable = true; + settings = { + lat = 37.3387; + lng = -121.8853; + }; + lightModeScripts = { + plasma-color = "plasma-apply-colorscheme BreezeLight"; + }; + darkModeScripts = { + plasma-color = "plasma-apply-colorscheme BreezeDark"; + }; + }; + + # 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. + home.stateVersion = "24.11"; # Please read the comment before changing. + + # The home.packages option allows you to install Nix packages into your + # environment. + # home.packages = [ + # # Adds the 'hello' command to your environment. It prints a friendly + # # "Hello, world!" when run. + # pkgs.hello + + # # It is sometimes useful to fine-tune packages, for example, by applying + # # overrides. You can do that directly here, just don't forget the + # # parentheses. Maybe you want to install Nerd Fonts with a limited number of + # # fonts? + # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) + + # # You can also create simple shell scripts directly inside your + # # configuration. For example, this adds a command 'my-hello' to your + # # environment: + # (pkgs.writeShellScriptBin "my-hello" '' + # echo "Hello, ${config.home.username}!" + # '') + # ]; + + # Home Manager is pretty good at managing dotfiles. The primary way to manage + # plain files is through 'home.file'. + # home.file = { + # # Building this configuration will create a copy of 'dotfiles/screenrc' in + # # the Nix store. Activating the configuration will then make '~/.screenrc' a + # # symlink to the Nix store copy. + # ".screenrc".source = dotfiles/screenrc; + + # # You can also set the file content immediately. + # ".gradle/gradle.properties".text = '' + # org.gradle.console=verbose + # org.gradle.daemon.idletimeout=3600000 + # ''; + # }; +} diff --git a/home/modules/fish.nix b/home/modules/fish.nix new file mode 100644 index 0000000..70a100b --- /dev/null +++ b/home/modules/fish.nix @@ -0,0 +1,27 @@ +{ config, lib, pkgs, ... }: + +{ + programs.fish = { + enable = true; + shellInit = "set fish_greeting"; + shellAliases = { + # Replace ls with exa + ls = "exa -al --color=always --group-directories-first --icons"; # preferred listing + la = "exa -a --color=always --group-directories-first --icons"; # all files and dirs + ll = "exa -l --color=always --group-directories-first --icons"; # long format + lt = "exa -aT --color=always --group-directories-first --icons"; # tree listing + "l." = "exa -a | rg '^\.'"; # show only dotfiles + + # Replace cat with bat + cat = "bat"; + }; + # alias for nix shell with flake packages + functions.add.body = '' + set -x packages 'nixpkgs#'$argv + nix shell $packages + ''; + interactiveShellInit = '' + fastfetch + ''; + }; +} diff --git a/home/modules/plasma.nix b/home/modules/plasma.nix new file mode 100644 index 0000000..b92da67 --- /dev/null +++ b/home/modules/plasma.nix @@ -0,0 +1,64 @@ +{ config, lib, pkgs, osConfig, ... }: + +{ + programs.plasma = { + enable = true; + overrideConfig = true; + resetFilesExclude = [ + "plasma-org.kde.plasma.desktop-appletsrc" + ]; + # Use tela circle icon theme if installed in system packages + workspace.iconTheme = if builtins.elem pkgs.tela-circle-icon-theme osConfig.environment.systemPackages then "Tela-circle" else null; + fonts = let + defaultFont = { + family = "Noto Sans"; + pointSize = 14; + }; + in { + general = defaultFont; + fixedWidth = defaultFont // { family = "Hack"; }; + small = defaultFont // { pointSize = defaultFont.pointSize - 2; }; + toolbar = defaultFont; + menu = defaultFont; + windowTitle = defaultFont; + }; + input.keyboard.layouts = [ + { layout = "us"; displayName = "us"; } + { layout = "minimak-4"; displayName = "us4"; } + { layout = "ru"; displayName = "ru"; } + ]; + session.sessionRestore.restoreOpenApplicationsOnLogin = "startWithEmptySession"; + shortcuts = { + # kmix.mic_mute = "ScrollLock"; + kmix.mic_mute = ["Microphone Mute" "ScrollLock" "Meta+Volume Mute,Microphone Mute" "Meta+Volume Mute,Mute Microphone"]; + plasmashell.show-barcode = "Meta+M"; + kwin."Window Maximize" = [ "Meta+F" "Meta+PgUp,Maximize Window" ]; + "KDE Keyboard Layout Switcher"."Switch to Next Keyboard Layout" = "Meta+Space"; + }; + hotkeys.commands."launch-konsole" = { + name = "Launch Konsole"; + key = "Meta+Alt+C"; + command = "konsole"; + }; + configFile = { + kdeglobals.KDE.AnimationDurationFactor = 0.5; + kdeglobals.General.accentColorFromWallpaper = true; + kwinrc.Wayland.InputMethod = { + value = "org.fcitx.Fcitx5.desktop"; + shellExpand = true; + }; + dolphinrc.General.ShowFullPath = true; + dolphinrc.DetailsMode.PreviewSize.persistent = true; + kactivitymanagerdrc = { + activities."809dc779-bf5b-49e6-8e3f-cbe283cb05b6" = "Default"; + activities."b34a506d-ac4f-4797-8c08-6ef45bc49341" = "Fun"; + activities-icons."809dc779-bf5b-49e6-8e3f-cbe283cb05b6" = "keyboard"; + activities-icons."b34a506d-ac4f-4797-8c08-6ef45bc49341" = "preferences-desktop-gaming"; + }; + }; + }; + + xdg.configFile = { + "fcitx5/conf/wayland.conf".text = "Allow Overriding System XKB Settings=False"; + }; +} diff --git a/home/modules/starship.nix b/home/modules/starship.nix new file mode 100644 index 0000000..2784035 --- /dev/null +++ b/home/modules/starship.nix @@ -0,0 +1,63 @@ +{ config, lib, pkgs, ... }: + +{ + programs.starship = { + enable = true; + enableFishIntegration = true; + settings = { + format = lib.concatStrings [ + "$all" + "$time" + "$cmd_duration" + "$line_break" + "$jobs" + "$status" + "$character" + ]; + username = { + format = " [╭─$user]($style)@"; + style_user = "bold red"; + style_root = "bold red"; + show_always = true; + }; + hostname = { + format = "[$hostname]($style) in "; + style = "bold dimmed red"; + ssh_only = false; + }; + directory = { + style = "purple"; + truncation_length = 0; + truncate_to_repo = true; + truncation_symbol = "repo: "; + }; + git_status = { + style = "white"; + ahead = "⇡\${count}"; + diverged = "⇕⇡\${ahead_count}⇣\${behind_count}"; + behind = "⇣\${count}"; + deleted = "x"; + }; + cmd_duration = { + min_time = 1000; + format = "took [$duration]($style) "; + }; + time = { + format = " 🕙 $time($style) "; + time_format = "%T"; + style = "bright-white"; + disabled = false; + }; + character = { + success_symbol = " [╰─λ](bold red)"; + error_symbol = " [×](bold red)"; + }; + status = { + symbol = "🔴"; + format = "[\\[$symbol$status_common_meaning$status_signal_name$status_maybe_int\\]]($style)"; + map_symbol = true; + disabled = false; + }; + }; + }; +} diff --git a/hosts/Yura-PC/default.nix b/hosts/Yura-PC/default.nix index 9128ade..f2eccc1 100644 --- a/hosts/Yura-PC/default.nix +++ b/hosts/Yura-PC/default.nix @@ -10,13 +10,9 @@ ./hardware-configuration.nix # ]; - mods.kb-input.enable = true; + opts.kb-input.enable = true; # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - # boot.plymouth.enable = true; - # boot.plymouth.theme = "breeze"; boot.kernelParams = [ "amd_iommu=on" "iommu=pt" @@ -30,218 +26,13 @@ options kvm ignore_msrs=1 ''; - boot.loader.timeout = 3; - boot.loader.systemd-boot.configurationLimit = 5; - boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_14; - # https://nixos.wiki/wiki/Accelerated_Video_Playback - hardware.graphics = { - enable = true; - extraPackages = with pkgs; [ - intel-media-driver # LIBVA_DRIVER_NAME=iHD - ]; - }; - - environment.etc.hosts.mode = "0644"; + hardware.graphics.extraPackages = with pkgs; [ + intel-media-driver # LIBVA_DRIVER_NAME=iHD + ]; networking.hostName = "Yura-PC"; # Define your hostname. networking.hostId = "110a2814"; # Required for ZFS. - # 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"; - - # Enable networking - networking.networkmanager.enable = true; - - # Enable the X11 windowing system. - # You can disable this if you're only using the Wayland session. - services.xserver.enable = false; - - # Enable the KDE Plasma Desktop Environment. - services.displayManager.sddm.enable = true; - services.displayManager.sddm.wayland.enable = true; - services.desktopManager.plasma6.enable = true; - - # Enable CUPS to print documents. - services.printing.enable = true; - - # Enable sound with pipewire. - services.pulseaudio.enable = false; - 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; - }; - - # services.qemuGuest.enable = true; - # services.spice-vdagentd.enable = true; - services.openssh.enable = true; - services.flatpak.enable = true; - # services.geoclue2.enable = true; - # location.provider = "geoclue2"; - # services.gnome.gnome-keyring.enable = true; - security.pam.services.sddm.enableGnomeKeyring = true; - # security.pam.services.sddm.gnupg.enable = true; - - - # Enable touchpad support (enabled default in most desktopManager). - # services.xserver.libinput.enable = true; - - hardware.bluetooth.enable = true; - hardware.bluetooth.powerOnBoot = false; - # Install firefox. - # programs.firefox.enable = true; - programs.kdeconnect.enable = true; - programs.fish.enable = true; - programs.git.enable = true; - programs.git.lfs.enable = true; - # https://nixos.wiki/wiki/Git - programs.git.package = pkgs.git.override { withLibsecret = true; }; - programs.lazygit.enable = true; - programs.neovim.enable = true; - programs.gnupg.agent.enable = true; - programs.gnupg.agent.pinentryPackage = pkgs.pinentry-qt; - # programs.starship.enable = true; - programs.wireshark.enable = true; - programs.wireshark.package = pkgs.wireshark; # wireshark-cli by default - programs.bat.enable = true; - programs.htop.enable = true; - - # https://nixos.wiki/wiki/Docker - virtualisation.docker.enable = true; - virtualisation.docker.enableOnBoot = false; - virtualisation.docker.package = pkgs.docker_27; - - # https://discourse.nixos.org/t/firefox-does-not-use-kde-window-decorations-and-cursor/32132/3 - # programs.dconf.enable = true; - # programs.firefox = { - # enable = true; - # preferences = { - # "widget.use-xdg-desktop-portal.file-picker" = 1; - # "widget.use-xdg-desktop-portal.mime-handler" = 1; - # }; - # }; - - # List packages installed in system profile. To search, run: - # $ nix search wget - - # https://github.com/flatpak/flatpak/issues/2861 - xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; - - programs.nix-ld.enable = true; - programs.nix-ld.libraries = with pkgs; [ - # Add any missing dynamic libraries for unpackaged - # programs here, NOT in environment.systemPackages - - # For JetBrains stuff - # https://github.com/NixOS/nixpkgs/issues/240444 - ]; - - # attempt to fix flatpak firefox cjk fonts - # fonts.fontconfig.defaultFonts.serif = [ - # "Noto Serif" - # "DejaVu Serif" - # ]; - # fonts.fontconfig.defaultFonts.sansSerif = [ - # "Noto Sans" - # "DejaVu Sans" - # ]; - - workarounds.flatpak.enable = true; - fonts.packages = with pkgs; [ - fantasque-sans-mono - nerd-fonts.fantasque-sans-mono - noto-fonts - noto-fonts-emoji - noto-fonts-cjk-sans - noto-fonts-cjk-serif - jetbrains-mono - ]; - # fonts.fontDir.enable = true; - # fonts.fontconfig.allowBitmaps = false; - - environment.systemPackages = with pkgs; [ - dust - eza - fastfetch - fd - helix - micro - openssl - ripgrep - starship - tealdeer - transcrypt - ] ++ [ - efibootmgr - ffmpeg - file - fq - gnumake - ijq - jq - ldns - mediainfo - rbw - restic - resticprofile - rclone - ripgrep-all - rustscan - whois - yt-dlp - ] ++ [ - bitwarden-desktop - darkman - host-spawn # for flatpaks - kdePackages.filelight - kdePackages.flatpak-kcm - kdePackages.kate - kdePackages.yakuake - # TODO: remove (replace by bitwarden-desktop) - gcr - gnome-keyring # config for this and some others - mpv - nextcloud-client - lxqt.pavucontrol-qt - pinentry - tela-circle-icon-theme - virt-viewer - waypipe - ] ++ [ - # jetbrains.rust-rover - # jetbrains.goland - jetbrains.clion - jetbrains.idea-ultimate - jetbrains.pycharm-professional - jetbrains.webstorm - android-studio - rustup - zed-editor - ]; - - # 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.nftables.enable = true; diff --git a/hosts/Yura-TPX13/default.nix b/hosts/Yura-TPX13/default.nix index 2c17a1a..8b85145 100644 --- a/hosts/Yura-TPX13/default.nix +++ b/hosts/Yura-TPX13/default.nix @@ -5,184 +5,19 @@ [ ./hardware-configuration.nix ]; - mods.kb-input.enable = true; # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - # boot.plymouth.enable = true; - # boot.plymouth.theme = "breeze"; boot.kernelParams = [ "sysrq_always_enabled=1" ]; - boot.loader.timeout = 3; - boot.loader.systemd-boot.configurationLimit = 5; - boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_14; - - # https://nixos.wiki/wiki/Accelerated_Video_Playback - hardware.graphics.enable = true; - - environment.etc.hosts.mode = "0644"; - networking.hostName = "Yura-TPX13"; # Define your hostname. networking.hostId = "8425e349"; # Required for ZFS. - # Enable networking - networking.networkmanager.enable = true; + services.fprintd.enable = true; - # Enable the X11 windowing system. - # You can disable this if you're only using the Wayland session. - services.xserver.enable = false; - - # Enable the KDE Plasma Desktop Environment. - services.displayManager.sddm.enable = true; - services.displayManager.sddm.wayland.enable = true; - services.desktopManager.plasma6.enable = true; - - # Enable CUPS to print documents. - services.printing.enable = true; - - # Enable sound with pipewire. - services.pulseaudio.enable = false; - 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; - }; - - services.openssh.enable = true; - services.flatpak.enable = true; - # services.geoclue2.enable = true; - # location.provider = "geoclue2"; - # services.gnome.gnome-keyring.enable = true; - security.pam.services.sddm.enableGnomeKeyring = true; - # security.pam.services.sddm.gnupg.enable = true; - - hardware.bluetooth.enable = true; - hardware.bluetooth.powerOnBoot = false; # Install firefox. programs.firefox.enable = true; - programs.kdeconnect.enable = true; - programs.fish.enable = true; - programs.git.enable = true; - programs.git.lfs.enable = true; - # https://nixos.wiki/wiki/Git - programs.git.package = pkgs.git.override { withLibsecret = true; }; - programs.lazygit.enable = true; - programs.neovim.enable = true; - programs.gnupg.agent.enable = true; - programs.gnupg.agent.pinentryPackage = pkgs.pinentry-qt; - # programs.starship.enable = true; - programs.wireshark.enable = true; - programs.wireshark.package = pkgs.wireshark; # wireshark-cli by default - programs.bat.enable = true; - programs.htop.enable = true; - - # https://nixos.wiki/wiki/Docker - virtualisation.docker.enable = true; - virtualisation.docker.enableOnBoot = false; - virtualisation.docker.package = pkgs.docker_28; - - # https://github.com/flatpak/flatpak/issues/2861 - xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; - - workarounds.flatpak.enable = true; - fonts.packages = with pkgs; [ - fantasque-sans-mono - nerd-fonts.fantasque-sans-mono - noto-fonts - noto-fonts-emoji - noto-fonts-cjk-sans - noto-fonts-cjk-serif - jetbrains-mono - ]; - - environment.systemPackages = with pkgs; [ - dust - eza - fastfetch - fd - helix - micro - openssl - ripgrep - starship - tealdeer - transcrypt - ] ++ [ - efibootmgr - ffmpeg - file - fq - gnumake - ijq - jq - ldns - mediainfo - rbw - restic - resticprofile - rclone - ripgrep-all - rustscan - whois - yt-dlp - ] ++ [ - bitwarden-desktop - darkman - host-spawn # for flatpaks - kdePackages.filelight - kdePackages.flatpak-kcm - kdePackages.kate - kdePackages.yakuake - # TODO: remove (replace by bitwarden-desktop) - gcr - gnome-keyring # config for this and some others - mpv - nextcloud-client - lxqt.pavucontrol-qt - pinentry - tela-circle-icon-theme - virt-viewer - waypipe - ] ++ [ - # jetbrains.rust-rover - # jetbrains.goland - jetbrains.clion - jetbrains.idea-ultimate - jetbrains.pycharm-professional - jetbrains.webstorm - android-studio - rustup - zed-editor - ] ++ [ - # Python - python3 - poetry - - # Haskell - haskellPackages.ghc - haskellPackages.stack - - # Node - nodejs_22 - pnpm - bun - - # Nix - nil - nixd - nixfmt-rfc-style - - # Gleam - gleam - beamMinimal26Packages.erlang - ]; # Some programs need SUID wrappers, can be configured further or are # started in user sessions. @@ -206,5 +41,4 @@ # Before changing this value read the documentation for this option # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). system.stateVersion = "24.11"; # Did you read the comment? - } diff --git a/hosts/common-desktop.nix b/hosts/common-desktop.nix new file mode 100644 index 0000000..df9dff0 --- /dev/null +++ b/hosts/common-desktop.nix @@ -0,0 +1,166 @@ +{ config, lib, pkgs, ... }: + +{ + opts.kb-input.enable = true; + + boot.kernelParams = [ + "sysrq_always_enabled=1" + ]; + + boot.kernelPackages = pkgs.linuxKernel.packages.linux_6_14; + boot.loader = { + efi.canTouchEfiVariables = true; + timeout = 3; + systemd-boot = { + enable = true; + configurationLimit = 5; + }; + }; + + # https://nixos.wiki/wiki/Accelerated_Video_Playback + hardware.graphics.enable = true; + + environment.etc.hosts.mode = "0644"; + + # Enable networking + networking.networkmanager.enable = true; + + # Enable the X11 windowing system. + # You can disable this if you're only using the Wayland session. + services.xserver.enable = false; + + # Enable the KDE Plasma Desktop Environment. + services.displayManager.sddm.enable = true; + services.displayManager.sddm.wayland.enable = true; + services.desktopManager.plasma6.enable = true; + + # Enable CUPS to print documents. + services.printing.enable = true; + + # Enable sound with pipewire. + services.pulseaudio.enable = false; + 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; + }; + + services.flatpak.enable = true; + + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = false; + programs.kdeconnect.enable = true; + programs.fish.enable = true; + programs.git.enable = true; + programs.git.lfs.enable = true; + # https://nixos.wiki/wiki/Git + programs.git.package = pkgs.git.override { withLibsecret = true; }; + programs.lazygit.enable = true; + programs.neovim.enable = true; + programs.wireshark.enable = true; + programs.wireshark.package = pkgs.wireshark; # wireshark-cli by default + programs.bat.enable = true; + programs.htop.enable = true; + + # https://nixos.wiki/wiki/Docker + virtualisation.docker.enable = true; + virtualisation.docker.enableOnBoot = false; + virtualisation.docker.package = pkgs.docker_28; + + # https://github.com/flatpak/flatpak/issues/2861 + xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + + workarounds.flatpak.enable = true; + fonts.packages = with pkgs; [ + fantasque-sans-mono + nerd-fonts.fantasque-sans-mono + noto-fonts + noto-fonts-emoji + noto-fonts-cjk-sans + noto-fonts-cjk-serif + jetbrains-mono + ]; + + environment.systemPackages = with pkgs; [ + dust + eza + fastfetch + fd + helix + micro + openssl + ripgrep + starship + tealdeer + transcrypt + ] ++ [ + efibootmgr + ffmpeg + file + fq + gnumake + ijq + jq + ldns + mediainfo + rbw + restic + resticprofile + rclone + ripgrep-all + rustscan + whois + yt-dlp + ] ++ [ + bitwarden-desktop + darkman + host-spawn # for flatpaks + kdePackages.filelight + kdePackages.flatpak-kcm + kdePackages.kate + kdePackages.yakuake + mpv + nextcloud-client + lxqt.pavucontrol-qt + pinentry + tela-circle-icon-theme + virt-viewer + waypipe + ] ++ [ + # jetbrains.rust-rover + # jetbrains.goland + jetbrains.clion + jetbrains.idea-ultimate + jetbrains.pycharm-professional + jetbrains.webstorm + android-studio + rustup + zed-editor + ] ++ [ + # Python + python3 + poetry + + # Haskell + haskellPackages.ghc + haskellPackages.stack + + # Node + nodejs_22 + pnpm + bun + + # Nix + nil + nixd + nixfmt-rfc-style + + # Gleam + gleam + beamMinimal26Packages.erlang + ]; +} diff --git a/hosts/common.nix b/hosts/common.nix index 7ad463b..55cada4 100644 --- a/hosts/common.nix +++ b/hosts/common.nix @@ -28,4 +28,8 @@ formatted = builtins.concatStringsSep "\n" sortedUnique; in formatted; + + services.openssh.enable = true; + services.openssh.settings.PasswordAuthentication = false; + services.openssh.settings.KbdInteractiveAuthentication = false; } diff --git a/hosts/router/default.nix b/hosts/router/default.nix index 33492ae..0612fea 100644 --- a/hosts/router/default.nix +++ b/hosts/router/default.nix @@ -47,9 +47,6 @@ in # VM services services.qemuGuest.enable = true; services.spice-vdagentd.enable = true; - services.openssh.enable = true; - services.openssh.settings.PasswordAuthentication = false; - services.openssh.settings.KbdInteractiveAuthentication = false; security.sudo.wheelNeedsPassword = false; diff --git a/hosts/vm/default.nix b/hosts/vm/default.nix index 653ad22..935708d 100644 --- a/hosts/vm/default.nix +++ b/hosts/vm/default.nix @@ -9,7 +9,7 @@ [ # Include the results of the hardware scan. # ./hardware-configuration.nix ]; - mods.kb-input.enable = false; + opts.kb-input.enable = false; # Bootloader. boot.loader.systemd-boot.enable = true; @@ -51,9 +51,6 @@ # services.cloud-init.network.enable = false; services.qemuGuest.enable = true; services.spice-vdagentd.enable = true; - services.openssh.enable = true; - services.openssh.settings.PasswordAuthentication = false; - services.openssh.settings.KbdInteractiveAuthentication = false; security.sudo.wheelNeedsPassword = false; diff --git a/modules/default.nix b/modules/default.nix index e75141d..0ece505 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -1,6 +1,6 @@ { ... }: { imports = [ - ./mods + ./opts ./workarounds ]; } diff --git a/modules/mods/default.nix b/modules/opts/default.nix similarity index 62% rename from modules/mods/default.nix rename to modules/opts/default.nix index 3cfdec3..4930195 100644 --- a/modules/mods/default.nix +++ b/modules/opts/default.nix @@ -1,5 +1,5 @@ { ... }: { imports = [ - ./kb-input.nix + ./kb-input ]; } diff --git a/modules/mods/kb-input.nix b/modules/opts/kb-input/default.nix similarity index 95% rename from modules/mods/kb-input.nix rename to modules/opts/kb-input/default.nix index 9174118..875ffaf 100644 --- a/modules/mods/kb-input.nix +++ b/modules/opts/kb-input/default.nix @@ -4,10 +4,10 @@ lib, ... }: let - cfg = config.mods.kb-input; + cfg = config.opts.kb-input; in { options = { - mods.kb-input = { + opts.kb-input = { enable = lib.mkEnableOption "input method and custom keyboard layout"; enableMinimak = lib.mkOption { type = lib.types.bool; diff --git a/modules/mods/minimak b/modules/opts/kb-input/minimak similarity index 100% rename from modules/mods/minimak rename to modules/opts/kb-input/minimak diff --git a/users/cazzzer/default.nix b/users/cazzzer/default.nix index 5daf2de..b36343b 100644 --- a/users/cazzzer/default.nix +++ b/users/cazzzer/default.nix @@ -14,29 +14,5 @@ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE02AhJIZtrtZ+5sZhna39LUUCEojQzmz2BDWguT9ZHG yuri@tati.sh" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHczlipzGWv8c6oYwt2/9ykes5ElfneywDXBTOYbfSfn Pixel7Pro" ]; - # TODO: think of a better way to do this - packages = with pkgs; lib.optionals (config.networking.hostName == "Yura-PC") [ - # Python - python3 - poetry - - # Haskell - haskellPackages.ghc - haskellPackages.stack - - # Node - nodejs_22 - pnpm - bun - - # Nix - nil - nixd - nixfmt-rfc-style - - # Gleam - gleam - beamMinimal26Packages.erlang - ]; }; }