diff --git a/home/common.nix b/home/common.nix index 2cdcbcd..f976a76 100644 --- a/home/common.nix +++ b/home/common.nix @@ -20,8 +20,6 @@ in home = { username = username; homeDirectory = "/home/${username}"; - stateVersion = "24.05"; - sessionPath = [ "$HOME/.cargo/bin" ]; sessionVariables = { diff --git a/modules/conf.nix b/modules/conf.nix index 341d301..32872e5 100644 --- a/modules/conf.nix +++ b/modules/conf.nix @@ -182,20 +182,27 @@ ''; }; - system_state_version = lib.mkOption { + state_version = lib.mkOption { default = "unstable"; example = "24.05"; type = lib.types.str; description = '' - System state version + System and home state version ''; }; }; - config = { - conf.kernel = lib.mkIf ( - config.mods.gaming.enable && config.mods.gaming.kernel - ) pkgs.linuxPackages_xanmod_latest; - } // (lib.optionalAttrs (options ? system.stateVersion) { system.stateVersion = "unstable"; }); + config = + { + conf.kernel = lib.mkIf ( + config.mods.gaming.enable && config.mods.gaming.kernel + ) pkgs.linuxPackages_xanmod_latest; + } + // (lib.optionalAttrs (options ? system.stateVersion) { + system.stateVersion = config.conf.state_version; + }) + // (lib.optionalAttrs (options ? home.stateVersion) { + home.stateVersion = config.conf.state_version; + }); } diff --git a/modules/programs/base_packages.nix b/modules/programs/base_packages.nix index 5d94c75..554d7ef 100644 --- a/modules/programs/base_packages.nix +++ b/modules/programs/base_packages.nix @@ -36,47 +36,30 @@ // (lib.mkIf config.mods.default_base_packages.enable ( lib.optionalAttrs (options ? environment.systemPackages) { environment.systemPackages = with pkgs; [ - openssl - dbus - glib - gtk4 - gtk3 - libadwaita - gtk-layer-shell - gtk4-layer-shell - direnv - dconf - gsettings-desktop-schemas - gnome.nixos-gsettings-overrides - bibata-cursors - xorg.xkbutils - libxkbcommon - icon-library adwaita-icon-theme + dbus + dconf + direnv + glib + gnome.nixos-gsettings-overrides + gsettings-desktop-schemas + gtk-layer-shell + gtk3 + gtk4 + gtk4-layer-shell hicolor-icon-theme - morewaita-icon-theme + icon-library kdePackages.breeze-icons + libadwaita + libxkbcommon + nixfmt-rfc-style + openssl seahorse upower - thunderbird - podman-tui - podman-compose - dive + xorg.xkbutils ]; gtk.iconCache.enable = false; - - fonts.packages = with pkgs; [ cantarell-fonts ]; - - virtualisation = { - containers.enable = true; - podman = { - enable = true; - dockerCompat = true; - defaultNetwork.settings.dns_enabled = true; - }; - }; - services = { upower.enable = true; dbus = { diff --git a/modules/programs/default.nix b/modules/programs/default.nix index 4c8afbd..6d15d00 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -24,6 +24,7 @@ ./nextcloud.nix ./oxi ./piper.nix + ./podman.nix ./printing.nix ./scripts.nix ./sops.nix diff --git a/modules/programs/flatpak.nix b/modules/programs/flatpak.nix index 54011f3..3ffd068 100644 --- a/modules/programs/flatpak.nix +++ b/modules/programs/flatpak.nix @@ -22,6 +22,7 @@ }; config = lib.mkIf config.mods.flatpak.enable ( lib.optionalAttrs (options ? services.flatpak.remote) { + environment.systemPackages = [ pkgs.flatpak ]; services.flatpak.remotes = lib.mkOptionDefault [ { name = "flathub-stable"; diff --git a/modules/programs/home_packages.nix b/modules/programs/home_packages.nix index e072514..460caf8 100644 --- a/modules/programs/home_packages.nix +++ b/modules/programs/home_packages.nix @@ -8,6 +8,12 @@ }: { options.mods.home_packages = { + noDefaultPackages = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "No default packages (will use additional_packages only)"; + }; enable = lib.mkOption { default = true; example = false; @@ -23,77 +29,92 @@ Will be installed regardless of default home manager packages are installed. ''; }; + matrixClient = lib.mkOption { + default = pkgs.nheko; + example = null; + type = with lib.types; nullOr package; + description = "The matrix client"; + }; + vesktop = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Adds the vesktop discord client"; + }; + ncspot = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Adds the ncspot spotify client"; + }; + nextcloudClient = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Adds the full desktop nextcloud client (the nextcloud module in dashnix only provides the cli tool)"; + }; + mailClient = lib.mkOption { + default = pkgs.thunderbird; + example = null; + type = with lib.types; nullOr package; + description = "The email client"; + }; }; config = ( - lib.optionalAttrs (options ? home.packages) { - home.packages = config.mods.home_packages.additional_packages; - } - // (lib.mkIf config.mods.home_packages.enable ( + lib.mkIf config.mods.home_packages.noDefaultPackages ( lib.optionalAttrs (options ? home.packages) { - home.packages = with pkgs; [ - nheko - nextcloud-client - xournalpp - vesktop - kitty - ripgrep + home.packages = config.mods.home_packages.additional_packages; + } + ) + // (lib.optionalAttrs (options ? home.packages) { + home.packages = + with pkgs; + [ # TODO add fcp once fixed.... - rm-improved - bat - fd - lsd - (nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) - noto-fonts - flatpak - networkmanager - zoxide - fastfetch - gnome-keyring - dbus - killall + (lib.mkIf config.mods.home_packages.ncspot ncspot) + (lib.mkIf config.mods.home_packages.vesktop vesktop) + (lib.mkIf config.mods.home_packages.nextcloudClient nextcloud-client) + (lib.mkIf (options ? config.mods.home_pakcage.matrixClient) config.mods.home_packages.matrixClient) + (lib.mkIf (options ? config.mods.home_packages.mailClient) config.mods.home_packages.mailClient) adw-gtk3 + bat + brave + brightnessctl + dbus + fastfetch + fd + ffmpeg + flake-checker + gnome-keyring + gnutar + greetd.regreet + killall + kitty + libnotify + lsd + networkmanager + nh + nix-index + playerctl + poppler_utils + pulseaudio qt5ct qt6ct - gnutar - nix-index - libnotify - zenith - nh - amberol - pulseaudio - playerctl - ncspot - poppler_utils - brave - greetd.regreet - flake-checker - ffmpeg + ripgrep + rm-improved system-config-printer - brightnessctl - ]; + xournalpp + zenith + zoxide + ] + ++ config.mods.home_packages.additional_packages; - xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { - global = { - warn_timeout = "-1s"; - }; + xdg.configFile."direnv/direnv.toml".source = (pkgs.formats.toml { }).generate "direnv" { + global = { + warn_timeout = "-1s"; }; + }; - #my own programs - programs = { - hyprdock.enable = true; - oxicalc.enable = true; - ReSet.enable = true; - ReSet.config.plugins = [ - inputs.reset-plugins.packages."x86_64-linux".monitor - inputs.reset-plugins.packages."x86_64-linux".keyboard - ]; - ReSet.config.plugin_config = { - Keyboard = { - path = "/home/${config.conf.username}/.config/reset/keyboard.conf"; - }; - }; - }; - } - )) + }) ); } diff --git a/modules/programs/podman.nix b/modules/programs/podman.nix new file mode 100644 index 0000000..58441e4 --- /dev/null +++ b/modules/programs/podman.nix @@ -0,0 +1,34 @@ +{ + lib, + config, + options, + pkgs, + ... +}: +{ + options.mods.podman = { + enable = lib.mkOption { + default = true; + example = false; + type = lib.types.bool; + description = "Enables and configures podman"; + }; + }; + config = lib.mkIf config.mods.podman.enable ( + lib.optionalAttrs (options ? virtualisation.podman) { + environment.systemPackages = with pkgs; [ + podman-tui + podman-compose + dive + ]; + virtualisation = { + containers.enable = true; + podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; + }; + } + ); +} diff --git a/modules/programs/stylix.nix b/modules/programs/stylix.nix index 2c8b7e2..61ac943 100644 --- a/modules/programs/stylix.nix +++ b/modules/programs/stylix.nix @@ -105,5 +105,13 @@ ); }; } + // lib.optionalAttrs (options ? environment.systemPackages) { + environment.systemPackages = [ + config.mods.stylix.fonts.serif.package + config.mods.stylix.fonts.sansSerif.package + config.mods.stylix.fonts.monospace.package + config.mods.stylix.fonts.emoji.package + ]; + } ); }