diff --git a/modules/profiles/desktop.nix b/modules/profiles/desktop.nix index d70b17f..10de55c 100644 --- a/modules/profiles/desktop.nix +++ b/modules/profiles/desktop.nix @@ -75,11 +75,9 @@ with lib; { git.signing = true; gpg.enable = true; hub.enable = true; - kitty.enable = true; ledger.enable = true; logseq.enable = true; - python.enable = true; - rofi.enable = true; + python.versions."311".enable = true; ssh = { enable = true; includeSecrets = [ ../../secrets/ssh-home.age ]; diff --git a/modules/programs/default.nix b/modules/programs/default.nix index a588494..9674641 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -18,10 +18,12 @@ ./gpg.nix ./helix.nix ./hub.nix + ./hyprland ./kakoune.nix ./kitty.nix ./ledger ./logseq.nix + ./miracast.nix ./python.nix ./rofi ./spotify.nix @@ -32,6 +34,5 @@ ./xmonad ./zathura.nix ./zsh.nix - ./hyprland ]; } diff --git a/modules/programs/hyprland/config.nix b/modules/programs/hyprland/config.nix index 732aa27..5bfba05 100644 --- a/modules/programs/hyprland/config.nix +++ b/modules/programs/hyprland/config.nix @@ -141,6 +141,8 @@ in # Fullscreen Applications # ${mkRules ["opaque" "noblur" "noborder" "noshadow" "forceinput"] ["fullscreen:1"]} + ${mkRules ["opaque" "noblur" "noshadow"] ["class:^jetbrains-pycharm$"]} + # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER $windowMod = ALT diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index 26b1538..c1a7c9b 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -28,6 +28,13 @@ in }; config = mkIf cfg.enable { + my = { + programs = { + kitty.enable = true; + rofi.enable = true; + }; + services.dunst.enable = true; + }; # enable nix module programs.hyprland = { @@ -35,6 +42,7 @@ in package = null; # because we use the home-manager module }; + # enable home-manager module home-manager.users.moritz = { # import home-manager module @@ -169,7 +177,6 @@ in } // (optionalAttrs cfg.nvidiaSupport { LIBVA_DRIVER_NAME = "nvidia"; - XDG_SESSION_TYPE = "wayland"; GBM_BACKEND = "nvidia-drm"; __GLX_VENDOR_LIBRARY_NAME = "nvidia"; WLR_NO_HARDWARE_CURSORS = "1"; diff --git a/modules/programs/miracast.nix b/modules/programs/miracast.nix new file mode 100644 index 0000000..6181a88 --- /dev/null +++ b/modules/programs/miracast.nix @@ -0,0 +1,23 @@ +{ config +, lib +, pkgs +, ... +}: + +with lib; +let + cfg = config.my.programs.miracast; +in +{ + options.my.programs.miracast.enable = mkEnableOption "miracast"; + + config = mkIf cfg.enable { + networking.firewall = { + allowedTCPPorts = [ 7236 7250 ]; + allowedUDPPorts = [ 7236 5353 ]; + }; + users.users.moritz.packages = with pkgs; [ + gnome-network-displays + ]; + }; +} diff --git a/modules/programs/python.nix b/modules/programs/python.nix index 8dc452b..adecd55 100644 --- a/modules/programs/python.nix +++ b/modules/programs/python.nix @@ -8,40 +8,55 @@ with lib; let cfg = config.my.programs.python; - mkPython = packages: version: pkgs.${version}.withPackages (ps: map (flip getAttr ps) packages); + pythonVersions = map (version: "3${toString version}") (range 8 11); + enabledVersions = filterAttrs (name: value: value.enable) cfg.versions; - pythonVersions = [ - "python311" - "python310" - "python39" - "python38" - ]; + pythonPackages = version: attrNames pkgs."python${version}Packages"; - packageLists = map (version: attrNames pkgs."${version}Packages") cfg.versions; + commonPackages = + let + packageLists = map pythonPackages (attrNames enabledVersions); + in + foldl' intersectLists (head packageLists) (tail packageLists); - commonPackages = foldl' intersectLists (head packageLists) (tail packageLists); + versionOpts = version: { + enable = mkEnableOption (toString version); + pythonPackages = mkOption { + default = [ ]; + type = with types; listOf (enum (pythonPackages version)); + }; + }; in { options.my.programs.python = { - enable = mkEnableOption "python"; - versions = mkOption { - default = [ "python310" ]; - type = with types; nonEmptyListOf (enum pythonVersions); - example = [ "python39" ]; - }; - packages = mkOption { - default = [ - "flake8" - "isort" - "mypy" - "pytest" - ]; + versions = genAttrs pythonVersions versionOpts; + defaultPackages = mkOption { + default = [ ]; type = with types; listOf (enum commonPackages); }; + extraPackages = mkOption { + default = with pkgs; [ + poetry + ruff + python310Packages.python-lsp-server + ]; + type = with types; listOf package; + }; }; - config = mkIf cfg.enable { - users.users.moritz.packages = map (mkPython cfg.packages) cfg.versions - ++ [ pkgs.poetry pkgs.nodePackages.pyright ]; + config = { + users.users.moritz.packages = + ( + let + mkPython = version: + let + package = pkgs."python${version}"; + finalPythonPackages = cfg.versions.${version}.pythonPackages ++ cfg.defaultPackages; + getPythonPackages = ps: map (flip getAttr ps) finalPythonPackages; + in + package.withPackages getPythonPackages; + in + map mkPython (attrNames enabledVersions) + ) ++ cfg.extraPackages; }; } diff --git a/modules/virtualisation/podman.nix b/modules/virtualisation/podman.nix index f3fdf35..1698fe3 100644 --- a/modules/virtualisation/podman.nix +++ b/modules/virtualisation/podman.nix @@ -15,6 +15,7 @@ in virtualisation.podman = { enable = true; dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; }; }; }