Compare commits

...

6 commits

10 changed files with 104 additions and 43 deletions

View file

@ -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;
}; };
# #

View file

@ -1,6 +1,5 @@
{ {
imports = [ imports = [
./python.nix
./ipython.nix ./ipython.nix
./poetry.nix ./poetry.nix
./rye.nix ./rye.nix

View file

@ -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 ];
};
}

View file

@ -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;
};
}; };
} }

View file

@ -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

View file

@ -57,34 +57,34 @@ in {
''; '';
"python/pythonrc.py".text = '' "python/pythonrc.py".text = ''
import atexit def is_vanilla() -> bool:
import os import sys
import readline return not hasattr(__builtins__, '__IPYTHON__') and 'bpython' not in sys.argv[0]
from functools import partial
from pathlib import Path
from types import ModuleType
cache_xdg_dir = Path(
os.environ.get("XDG_CACHE_HOME", str(Path("~/.cache").expanduser()))
)
cache_xdg_dir.mkdir(exist_ok=True, parents=True)
history_file = cache_xdg_dir.joinpath("python_history")
history_file.touch()
readline.read_history_file(history_file)
def write_history(readline: ModuleType, history_file: Path) -> None: def setup_history():
""" import os
We need to get ``readline`` and ``history_file`` as arguments, as it import atexit
seems they get garbage collected when the function is registered and import readline
the program ends, even though we refer to them here. from pathlib import Path
"""
readline.write_history_file(history_file) if state_home := os.environ.get('XDG_STATE_HOME'):
state_home = Path(state_home)
else:
state_home = Path.home() / '.local' / 'state'
history: Path = state_home / 'python_history'
# 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))
atexit.register(partial(write_history, readline, history_file)) if is_vanilla():
setup_history()
''; '';
}; };

View file

@ -1,5 +1,6 @@
_: { _: {
imports = [ imports = [
./dunst.nix ./dunst.nix
./hyprpaper.nix
]; ];
} }

View 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
'';
};
}

View file

@ -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";
};
}; };
}; };
}; };

View file

@ -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";
};
};
}; };
} }