mirror of
				https://github.com/ItsDrike/nixdots
				synced 2025-11-04 05:16:37 +00:00 
			
		
		
		
	Compare commits
	
		
			6 commits
		
	
	
		
			2da382b4dc
			...
			86383c69dd
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 86383c69dd | |||
| ee9c647cb3 | |||
| 73c7b503ad | |||
| 842b009f84 | |||
| 46f5fa83e8 | |||
| 8a6311b896 | 
					 10 changed files with 104 additions and 43 deletions
				
			
		| 
						 | 
					@ -101,7 +101,7 @@
 | 
				
			||||||
      dim_inactive = false; # disabled for now
 | 
					      dim_inactive = false; # disabled for now
 | 
				
			||||||
      dim_strength = 0.02;
 | 
					      dim_strength = 0.02;
 | 
				
			||||||
      dim_special = 0.2;
 | 
					      dim_special = 0.2;
 | 
				
			||||||
      inactive_opacity = 0.9;
 | 
					      #inactive_opacity = 0.9;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #
 | 
					    #
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,5 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  imports = [
 | 
					  imports = [
 | 
				
			||||||
    ./python.nix
 | 
					 | 
				
			||||||
    ./ipython.nix
 | 
					    ./ipython.nix
 | 
				
			||||||
    ./poetry.nix
 | 
					    ./poetry.nix
 | 
				
			||||||
    ./rye.nix
 | 
					    ./rye.nix
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,14 +0,0 @@
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  lib,
 | 
					 | 
				
			||||||
  pkgs,
 | 
					 | 
				
			||||||
  osConfig,
 | 
					 | 
				
			||||||
  ...
 | 
					 | 
				
			||||||
}: let
 | 
					 | 
				
			||||||
  inherit (lib) mkIf;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  cfg = osConfig.myOptions.home-manager.programs.coding.python;
 | 
					 | 
				
			||||||
in {
 | 
					 | 
				
			||||||
  config = mkIf cfg.enable {
 | 
					 | 
				
			||||||
    home.packages = with pkgs; [ python312 ];
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,14 +1,38 @@
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  lib,
 | 
					  lib,
 | 
				
			||||||
  pkgs,
 | 
					  pkgs,
 | 
				
			||||||
 | 
					  config,
 | 
				
			||||||
  osConfig,
 | 
					  osConfig,
 | 
				
			||||||
  ...
 | 
					  ...
 | 
				
			||||||
}: let
 | 
					}: let
 | 
				
			||||||
  inherit (lib) mkIf;
 | 
					  inherit (lib) mkIf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  cfg = osConfig.myOptions.home-manager.programs.coding.python;
 | 
					  cfg = osConfig.myOptions.home-manager.programs.coding.python;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  toTOML = name: (pkgs.formats.toml {}).generate "${name}";
 | 
				
			||||||
in {
 | 
					in {
 | 
				
			||||||
  config = mkIf cfg.enable {
 | 
					  config = mkIf cfg.enable {
 | 
				
			||||||
    home.packages = with pkgs; [ rye ];
 | 
					    home = {
 | 
				
			||||||
 | 
					      packages = with pkgs; [ rye ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      sessionVariables = {
 | 
				
			||||||
 | 
					        RYE_HOME = "${config.xdg.configHome}/rye";
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Add rye python shims to path.
 | 
				
			||||||
 | 
					      # Rye provides python executables that will automatically pick up on the python
 | 
				
			||||||
 | 
					      # from a virtual environment, if we're in a directory (project) with one. If not,
 | 
				
			||||||
 | 
					      # rye will fall back to system python. That is, if behavior.global-python=false,
 | 
				
			||||||
 | 
					      # otherwise, we can actually use a python version from rye as our global python.
 | 
				
			||||||
 | 
					      sessionPath = [
 | 
				
			||||||
 | 
					        "${config.xdg.configHome}/rye/shims"
 | 
				
			||||||
 | 
					      ];
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # see: <https://rye.astral.sh/guide/config/#config-file>
 | 
				
			||||||
 | 
					    xdg.configFile."rye/config.toml".source = toTOML "config.toml" {
 | 
				
			||||||
 | 
					      default.license = "GPL-3.0-or-later";
 | 
				
			||||||
 | 
					      behavior.global-python=true;
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,12 +13,12 @@
 | 
				
			||||||
        "gitlab" = {
 | 
					        "gitlab" = {
 | 
				
			||||||
          user = "git";
 | 
					          user = "git";
 | 
				
			||||||
          hostname = "gitlab.com";
 | 
					          hostname = "gitlab.com";
 | 
				
			||||||
          identityFile = "~/.ssh/git/gitlab";
 | 
					          identityFile = "~/.ssh/git/gitlab-itsdrike";
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        "github" = {
 | 
					        "github" = {
 | 
				
			||||||
          user = "git";
 | 
					          user = "git";
 | 
				
			||||||
          hostname = "gitlab.com";
 | 
					          hostname = "gitlab.com";
 | 
				
			||||||
          identityFile = "~/.ssh/git/github";
 | 
					          identityFile = "~/.ssh/git/github-itsdrike";
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        # TODO: Figure out how to add protected/encrypted blocks here
 | 
					        # TODO: Figure out how to add protected/encrypted blocks here
 | 
				
			||||||
        # I don't like the idea of expising IPs/hostnames in the config
 | 
					        # I don't like the idea of expising IPs/hostnames in the config
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -57,34 +57,34 @@ in {
 | 
				
			||||||
    '';
 | 
					    '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    "python/pythonrc.py".text = ''
 | 
					    "python/pythonrc.py".text = ''
 | 
				
			||||||
      import atexit
 | 
					      def is_vanilla() -> bool:
 | 
				
			||||||
 | 
					          import sys
 | 
				
			||||||
 | 
					          return not hasattr(__builtins__, '__IPYTHON__') and 'bpython' not in sys.argv[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      def setup_history():
 | 
				
			||||||
          import os
 | 
					          import os
 | 
				
			||||||
 | 
					          import atexit
 | 
				
			||||||
          import readline
 | 
					          import readline
 | 
				
			||||||
      from functools import partial
 | 
					 | 
				
			||||||
          from pathlib import Path
 | 
					          from pathlib import Path
 | 
				
			||||||
      from types import ModuleType
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      cache_xdg_dir = Path(
 | 
					          if state_home := os.environ.get('XDG_STATE_HOME'):
 | 
				
			||||||
          os.environ.get("XDG_CACHE_HOME", str(Path("~/.cache").expanduser()))
 | 
					              state_home = Path(state_home)
 | 
				
			||||||
      )
 | 
					          else:
 | 
				
			||||||
      cache_xdg_dir.mkdir(exist_ok=True, parents=True)
 | 
					              state_home = Path.home() / '.local' / 'state'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      history_file = cache_xdg_dir.joinpath("python_history")
 | 
					          history: Path = state_home / 'python_history'
 | 
				
			||||||
      history_file.touch()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      readline.read_history_file(history_file)
 | 
					          # https://github.com/python/cpython/issues/105694
 | 
				
			||||||
 | 
					          if not history.is_file():
 | 
				
			||||||
 | 
					            readline.write_history_file(str(history)) # breaks on macos + python3 without this. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          readline.read_history_file(str(history))
 | 
				
			||||||
 | 
					          atexit.register(readline.write_history_file, str(history))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      def write_history(readline: ModuleType, history_file: Path) -> None:
 | 
					      if is_vanilla():
 | 
				
			||||||
          """
 | 
					          setup_history()
 | 
				
			||||||
          We need to get ``readline`` and ``history_file`` as arguments, as it
 | 
					 | 
				
			||||||
          seems they get garbage collected when the function is registered and
 | 
					 | 
				
			||||||
          the program ends, even though we refer to them here.
 | 
					 | 
				
			||||||
          """
 | 
					 | 
				
			||||||
          readline.write_history_file(history_file)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      atexit.register(partial(write_history, readline, history_file))
 | 
					 | 
				
			||||||
    '';
 | 
					    '';
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
_: {
 | 
					_: {
 | 
				
			||||||
  imports = [ 
 | 
					  imports = [ 
 | 
				
			||||||
    ./dunst.nix
 | 
					    ./dunst.nix
 | 
				
			||||||
 | 
					    ./hyprpaper.nix
 | 
				
			||||||
  ];
 | 
					  ];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										34
									
								
								home/services/hyprpaper.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								home/services/hyprpaper.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  lib,
 | 
				
			||||||
 | 
					  pkgs,
 | 
				
			||||||
 | 
					  osConfig,
 | 
				
			||||||
 | 
					  config,
 | 
				
			||||||
 | 
					  ...
 | 
				
			||||||
 | 
					}: let
 | 
				
			||||||
 | 
					  inherit (lib) mkIf getExe;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  cfg = osConfig.myOptions.home-manager.services.hyprpaper;
 | 
				
			||||||
 | 
					  cfgIsWayland = osConfig.myOptions.home-manager.wms.isWayland;
 | 
				
			||||||
 | 
					in {
 | 
				
			||||||
 | 
					  config = mkIf (cfg.enable && cfgIsWayland) {
 | 
				
			||||||
 | 
					    systemd.user.services.hyprpaper = {
 | 
				
			||||||
 | 
					      Install.WantedBy = [ "hyprland-session.target" ];
 | 
				
			||||||
 | 
					      Unit = {
 | 
				
			||||||
 | 
					        Description = "Hyprpaper (Hyprland wallpaper daemon)";
 | 
				
			||||||
 | 
					        PartOf = [ "graphical-session.target" ];
 | 
				
			||||||
 | 
					        After = [ "graphical-session.target" ];
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      Service = {
 | 
				
			||||||
 | 
					        Type = "simple";
 | 
				
			||||||
 | 
					        ExecStart = "${getExe pkgs.hyprpaper}";
 | 
				
			||||||
 | 
					        Restart = "on-failure";
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    xdg.configFile."hypr/hyprpaper.conf".text = ''
 | 
				
			||||||
 | 
					      preload=${cfg.wallpaperPath}
 | 
				
			||||||
 | 
					      wallpaper=,${cfg.wallpaperPath} # same wallpaper on all monitors
 | 
				
			||||||
 | 
					      ipc=off
 | 
				
			||||||
 | 
					    '';
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -66,6 +66,7 @@
 | 
				
			||||||
            ".config/obs-studio"
 | 
					            ".config/obs-studio"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Tools
 | 
					            # Tools
 | 
				
			||||||
 | 
					            ".ssh"
 | 
				
			||||||
            ".local/share/gnupg"
 | 
					            ".local/share/gnupg"
 | 
				
			||||||
            ".local/share/zoxide"
 | 
					            ".local/share/zoxide"
 | 
				
			||||||
            ".local/share/wakatime"
 | 
					            ".local/share/wakatime"
 | 
				
			||||||
| 
						 | 
					@ -79,6 +80,7 @@
 | 
				
			||||||
            # Language package managers
 | 
					            # Language package managers
 | 
				
			||||||
            ".local/share/cargo"
 | 
					            ".local/share/cargo"
 | 
				
			||||||
            ".local/share/go"
 | 
					            ".local/share/go"
 | 
				
			||||||
 | 
					            ".config/rye"
 | 
				
			||||||
          ];
 | 
					          ];
 | 
				
			||||||
          extraFiles = [
 | 
					          extraFiles = [
 | 
				
			||||||
            ".config/gtk-3.0/bookmarks"
 | 
					            ".config/gtk-3.0/bookmarks"
 | 
				
			||||||
| 
						 | 
					@ -86,6 +88,7 @@
 | 
				
			||||||
            ".cache/walker/history.gob"
 | 
					            ".cache/walker/history.gob"
 | 
				
			||||||
            ".config/pcmanfm-qt/default/recent-files.conf"
 | 
					            ".config/pcmanfm-qt/default/recent-files.conf"
 | 
				
			||||||
            ".config/qalculate/qalculate-gtk.cfg"
 | 
					            ".config/qalculate/qalculate-gtk.cfg"
 | 
				
			||||||
 | 
					            ".local/state/python_history"
 | 
				
			||||||
          ];
 | 
					          ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          persistentDataMountPoint = "/data/Data";
 | 
					          persistentDataMountPoint = "/data/Data";
 | 
				
			||||||
| 
						 | 
					@ -214,6 +217,12 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      services = {
 | 
					      services = {
 | 
				
			||||||
        dunst.enable = true;
 | 
					        dunst.enable = true;
 | 
				
			||||||
 | 
					        hyprpaper = {
 | 
				
			||||||
 | 
					          enable = true;
 | 
				
			||||||
 | 
					          # This file intentionally lacks a file extension, it should be a symlink
 | 
				
			||||||
 | 
					          # to whatever file you wish to actually be your wallpaper
 | 
				
			||||||
 | 
					          wallpaperPath = "/data/Data/Media/Pictures/Wallpapers/active";
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,14 @@ in
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  options.myOptions.home-manager.services = {
 | 
					  options.myOptions.home-manager.services = {
 | 
				
			||||||
    dunst.enable = mkEnableOption "Dunst (lightweight notification daemon)";
 | 
					    dunst.enable = mkEnableOption "Dunst (lightweight notification daemon)";
 | 
				
			||||||
 | 
					    hyprpaper = {
 | 
				
			||||||
 | 
					      enable = mkEnableOption "Hyprpaper (Hyprland wallpaper daemon)";
 | 
				
			||||||
 | 
					      wallpaperPath = mkOption {
 | 
				
			||||||
 | 
					        type = types.path;
 | 
				
			||||||
 | 
					        default = null;
 | 
				
			||||||
 | 
					        description = "Path to the wallpaper of your choosing";
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue