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_strength = 0.02;
dim_special = 0.2;
inactive_opacity = 0.9;
#inactive_opacity = 0.9;
};
#

View file

@ -1,6 +1,5 @@
{
imports = [
./python.nix
./ipython.nix
./poetry.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,
pkgs,
config,
osConfig,
...
}: let
inherit (lib) mkIf;
cfg = osConfig.myOptions.home-manager.programs.coding.python;
toTOML = name: (pkgs.formats.toml {}).generate "${name}";
in {
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" = {
user = "git";
hostname = "gitlab.com";
identityFile = "~/.ssh/git/gitlab";
identityFile = "~/.ssh/git/gitlab-itsdrike";
};
"github" = {
user = "git";
hostname = "gitlab.com";
identityFile = "~/.ssh/git/github";
identityFile = "~/.ssh/git/github-itsdrike";
};
# TODO: Figure out how to add protected/encrypted blocks here
# I don't like the idea of expising IPs/hostnames in the config

View file

@ -57,34 +57,34 @@ in {
'';
"python/pythonrc.py".text = ''
import atexit
import os
import readline
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 is_vanilla() -> bool:
import sys
return not hasattr(__builtins__, '__IPYTHON__') and 'bpython' not in sys.argv[0]
def write_history(readline: ModuleType, history_file: Path) -> None:
"""
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)
def setup_history():
import os
import atexit
import readline
from pathlib import Path
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 = [
./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"
# Tools
".ssh"
".local/share/gnupg"
".local/share/zoxide"
".local/share/wakatime"
@ -79,6 +80,7 @@
# Language package managers
".local/share/cargo"
".local/share/go"
".config/rye"
];
extraFiles = [
".config/gtk-3.0/bookmarks"
@ -86,6 +88,7 @@
".cache/walker/history.gob"
".config/pcmanfm-qt/default/recent-files.conf"
".config/qalculate/qalculate-gtk.cfg"
".local/state/python_history"
];
persistentDataMountPoint = "/data/Data";
@ -214,6 +217,12 @@
services = {
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 = {
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";
};
};
};
}