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

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