cleanup: laptop back alive!!! so time to actually start configuring

This commit is contained in:
Evar 2025-01-17 21:51:20 -05:00
parent a14eff461b
commit 05d7340746
10 changed files with 131 additions and 368 deletions

View file

@ -9,18 +9,17 @@
];
home.packages = [
pkgs.pavucontrol
pkgs.pavucontrol # volume control stuff
# Social
pkgs.signal-desktop
pkgs.webcord # pkgs.webcord-vencord
pkgs.telegram-desktop
#pkgs.kdePackages.neochat
# Productivity/Documents
pkgs.keepassxc
#pkgs.blender-hip
pkgs.buku
pkgs.libreoffice
pkgs.darktable
pkgs.gimp
pkgs.inkscape
pkgs.krita
pkgs.okular
pkgs.localsend
@ -28,71 +27,30 @@
pkgs.ffmpeg # Generally useful
# Music
#pkgs.feishin # sonixd replacement
pkgs.supersonic # Music player by Navidrome author
#pkgs.feishin # sonixd replacement; emily said that they need to fix something with it, so keeping the comment here
pkgs.sonixd # Music player; desktop app for Navidrome. Replace w/ Feishin when that supports Subsonic API.
pkgs.spotube # Use Spotify metadata & user to play from YouTube
pkgs.spotify # Proprietary
pkgs.strawberry-qt6 # Fork of Clementine
pkgs.clementine
pkgs.lollypop
# muffon https://muffon.netlify.app/
pkgs.picard # Edit audio metadata, w/ MusicBrainz integration
pkgs.puddletag # Edit audio metadata
pkgs.deadbeef-with-plugins
# pkgs.tauon
pkgs.audacious
# pkgs.asunder # Ripping
pkgs.cyanrip # Ripping
# pkgs.whipper # Ripping
#pkgs.anki # Dep python3.12-pyqt-6.7.0 doesn't build
pkgs.memento # Japanese
# Documents
pkgs.typst # TeX alternative
pkgs.tinymist # LSP for Typst
# emily suggested I try these (albiet via their web thing), so keeping them commented
#pkgs.typst # TeX alternative
#pkgs.tinymist # LSP for Typst
# Dev
pkgs.vscodium # Consider vscodium-fhs
pkgs.ptyxis # Terminal emulator
pkgs.vscodium
#pkgs.jetbrains.rider
#pkgs.jetbrains.rust-rover
pkgs.helix
pkgs.zed-editor
#pkgs.helix
#pkgs.zed-editor
# Internet
pkgs.fragments
pkgs.uget # Download manager
# From master because PR #290892 is merged but at the time of writing hasn't made it to unstable yet
# Need it to solve issue #263764
# https://github.com/NixOS/nixpkgs/issues/263764
# https://github.com/NixOS/nixpkgs/pull/290892
# https://github.com/NixOS/nixpkgs/commit/999e0cf59288584616a241c0d8bb7c3c3f1fb417
pkgs.obsidian
pkgs.obs-studio
pkgs.kdePackages.plasmatube
#pkgs.nyxt
pkgs.mpvScripts.uosc
pkgs.mpvScripts.sponsorblock
pkgs.musescore
# inputs.muse-sounds-manager.packages.${pkgs.system}.muse-sounds-manager
pkgs.helio-workstation # music editor
pkgs.lmms # DAW
pkgs.carla # VST host
pkgs.yabridge # Windows VST host
pkgs.yabridgectl
pkgs.surge-XT # VST
];
programs.imv.enable = true;
programs.mpv.enable = true; # media player
programs.mangohud = {
enable = true;
};
programs.mpv.enable = true;
programs.zathura.enable = true; # pdf viewer
programs.thunderbird = {
enable = true;
@ -107,7 +65,9 @@
enableUpdateCheck = false;
userSettings = {
"window.menuBarVisibility" = "toggle";
"rust-analyzer.server.path" = "rust-analyzer"; # look in env
# instead of dling a copy of rust analyzer, use the one from where we launched vscode
"rust-analyzer.server.path" = "rust-analyzer";
# Library sources for rust-analyzer shall be read-only
"files.readonlyInclude" = {
@ -121,6 +81,4 @@
jnoortheen.nix-ide
];
};
programs.zathura.enable = true;
}

View file

@ -16,67 +16,22 @@ in {
./desktop.nix
# ./emacs.nix
./apps.nix
./git.nix
./vm.nix
];
home.sessionVariables = variables;
systemd.user.sessionVariables = variables;
fonts.fontconfig.enable = true;
xdg.enable = true;
xdg.enable = true; # TODO: what is this?
fonts.fontconfig.enable = true; # allows adding fonts from home manager config
home.packages = with pkgs; [
noto-fonts-cjk-sans
noto-fonts-cjk-serif
noto-fonts-color-emoji
];
programs.git = {
enable = true;
delta = {
enable = true;
options = {
side-by-side = true;
};
};
# WISH: Figure out difftastic
# difftastic.enable = true;
# https://difftastic.wilfred.me.uk/git.html
# https://tsdh.org/posts/2022-08-01-difftastic-diffing-with-magit.html
userEmail = "git@evar.dev";
userName = "Evar";
extraConfig = {
init.defaultBranch = "main";
# Consider https://jvns.ca/blog/2024/02/16/popular-git-config-options/#pull-ff-only-or-pull-rebase-true
# Make merge conflicts more readable
merge.conflictstyle = "zdiff3";
rebase.autosquash = true;
rebase.autostash = true;
# Consider https://jvns.ca/blog/2024/02/16/popular-git-config-options/#push-default-simple-push-default-current-push-autosetupremote-true
# Add whole commit diff in text editor when writing commit message
#commit.verbose = true;
# Remember how merge conflicts were resolved to restore later
rerere.enabled = true;
# Better diffs
diff.algorithm = "histogram";
status.submoduleSummary = true;
diff.submodule = "log";
submodule.recurse = true;
merge.keepbackup = false;
#merge.tool = "${pkgs.meld}/bin/meld";
};
};
# programs.ssh
programs.ssh = {
enable = true;

View file

@ -9,11 +9,9 @@
}: {
imports = [
./desktop/shared/wayland.nix
./desktop/hyprland.nix
./desktop/plasma.nix
];
# my.desktop.hyprland.enable = true;
my.desktop.plasma.enable = true;
programs.foot = {

View file

@ -1,172 +0,0 @@
{
config,
lib,
pkgs,
options,
inputs,
osConfig,
...
}: {
imports = [
inputs.ags.homeManagerModules.default
inputs.anyrun.homeManagerModules.default
];
options.my.desktop.hyprland.enable = lib.mkEnableOption "my Hyprland based desktop environment";
config = lib.mkIf config.my.desktop.hyprland.enable {
my.desktop.wayland = true;
wayland.windowManager.hyprland = {
enable = true;
package = osConfig.programs.hyprland.package;
extraConfig = ''
source=${./hyprland}/hyprland.conf
'';
systemd.variables = options.wayland.windowManager.hyprland.systemd.variables.default ++ ["XDG_SESSION_TYPE"];
};
services.cliphist = {
enable = true;
systemdTarget = "hyprland-session.target"; # defaults to graphical-session.target
};
systemd.user.targets.hyprland-session.Unit.Wants = ["plasma-polkit-agent.service"];
programs.ags = {
enable = true;
configDir = ./ags;
};
systemd.user.services.ags = {
Unit.Description = "Aylur's Gtk Shell";
Unit.PartOf = ["hyprland-session.target"];
Install.WantedBy = ["hyprland-session.target"];
Service = let
app = pkgs.writeShellApplication {
name = "ags-wrapped";
runtimeInputs = [config.programs.ags.package pkgs.coreutils];
text = ''ags "$@"'';
};
in {
# Service = {
BusName = "com.github.Aylur.ags.ags";
# ExecStart = "${config.programs.ags.package}/bin/ags --config ${config.programs.ags.configDir}/config.js";
ExecStart = "${app}/bin/ags-wrapped --config ${config.programs.ags.configDir}/config.js";
OOMScoreAdjust = -500;
};
# TODO: reloadTriggers?
# restartTriggers = [ config.programs.ags.configDir ];
};
programs.anyrun = {
enable = true;
config.plugins = with inputs.anyrun.packages.${pkgs.stdenv.hostPlatform.system}; [
applications
dictionary
# kidex
randr
rink
shell
# stdin
symbols
# translate
# websearch
];
};
programs.swaylock = {
enable = true;
settings = {
color = "808080";
font-size = 24;
indicator-idle-visible = false;
indicator-radius = 100;
line-color = "ffffff";
show-failed-attempts = true;
};
};
services.swayidle = let
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
in {
enable = true;
systemdTarget = "hyprland-session.target"; # defaults to graphical-session.target
extraArgs = [
"-w" # Wait for command to finish executing before continuing
"idlehint"
"300"
];
events = [
{
event = "before-sleep";
command = "${swaylock} -f";
}
# after-resume
{
event = "lock";
command = "${swaylock} -f";
}
{
event = "unlock";
command = "kill -s USR1 swaylock";
}
];
timeouts = [
{
timeout = 300;
command = "${swaylock} -f";
} # 300
{
timeout = 600;
command = "${hyprctl} dispatch dpms off";
resumeCommand = "${hyprctl} dispatch dpms on";
}
# { timeout = 900; command = "${pkgs.systemd}/bin/systemctl suspend"; }
];
};
# TDOD: replace with ags
services.swayosd.enable = true;
services.udiskie.enable = osConfig.services.udisks2.enable;
systemd.user.services.swww = {
Unit.Description = "Animated wallpaper daemon for wayland";
Unit.Documentation = ["man:swww(1)"];
Unit.PartOf = ["hyprland-session.target"];
Install.WantedBy = ["hyprland-session.target"];
# Service.ExecStart = "${pkgs.swww}/bin/swww init --no-daemon";
Service.ExecStart = let
app = pkgs.writeShellApplication {
name = "swww-wrapped";
runtimeInputs = [pkgs.swww];
text = ''
swww init --no-daemon
'';
};
in "${app}/bin/swww-wrapped";
};
systemd.user.services.wayvnc = {
Unit.Description = "Wayland VNC server";
Unit.PartOf = ["graphical-session.target"];
Service.ExecStart = "${pkgs.wayvnc}/bin/wayvnc";
};
# Not sure if this should be per desktop
services.mpris-proxy.enable = true;
programs.foot.settings.colors.alpha = 0.6;
home.packages = [
pkgs.swww
pkgs.wofi
pkgs.polkit-kde-agent
pkgs.libsForQt5.qtwayland
pkgs.qt6Packages.qtwayland
pkgs.grimblast # screenshots on hyprland
pkgs.gnome.gnome-system-monitor
pkgs.gnome.nautilus
];
};
}

53
home/git.nix Normal file
View file

@ -0,0 +1,53 @@
{
config,
options,
pkgs,
...
}: {
programs.git = {
enable = true;
delta = {
enable = true;
options = {
side-by-side = true;
};
};
# WISH: Figure out difftastic
# difftastic.enable = true;
# https://difftastic.wilfred.me.uk/git.html
# https://tsdh.org/posts/2022-08-01-difftastic-diffing-with-magit.html
userEmail = "git@evar.dev";
userName = "Evar";
extraConfig = {
init.defaultBranch = "main";
# Consider https://jvns.ca/blog/2024/02/16/popular-git-config-options/#pull-ff-only-or-pull-rebase-true
# Make merge conflicts more readable
merge.conflictstyle = "zdiff3";
rebase.autosquash = true;
rebase.autostash = true;
# Consider https://jvns.ca/blog/2024/02/16/popular-git-config-options/#push-default-simple-push-default-current-push-autosetupremote-true
# Add whole commit diff in text editor when writing commit message
#commit.verbose = true;
# Remember how merge conflicts were resolved to restore later
rerere.enabled = true;
# Better diffs
diff.algorithm = "histogram";
status.submoduleSummary = true;
diff.submodule = "log";
submodule.recurse = true;
merge.keepbackup = false;
#merge.tool = "${pkgs.meld}/bin/meld";
};
};
}

View file

@ -9,6 +9,23 @@
inputs.nix-index-database.hmModules.nix-index
];
programs.fish = {
enable = true;
functions = {
#__fish_command_not_found_handler = {
# body = "__fish_default_command_not_found_handler $argv[1]";
# onEvent = "fish_command_not_found";
#};
};
shellInit = "set fish_greeting";
};
programs.starship = {
enable = true;
enableTransience = true;
settings.nix_shell.format = "";
};
home.packages = [
pkgs.file
pkgs.pciutils # lspci
@ -18,22 +35,10 @@
pkgs.htop
pkgs.lsof
pkgs.lm_sensors
pkgs.amdgpu_top
#pkgs.rocmPackages.rocm-smi
pkgs.ryzenadj
pkgs.powertop
pkgs.procs
pkgs.sshfs
pkgs.fd
pkgs.libqalculate
# pkgs.havn # port scanner
pkgs.gdu # count code
pkgs.tokei # count code
pkgs.ov # pager
pkgs.zoxide # cd
pkgs.dua
pkgs.unzip
pkgs.unrar-wrapper
@ -42,24 +47,18 @@
pkgs.fastfetch
pkgs.hyfetch
pkgs.helix # `hx` editor
pkgs.jujutsu # `jj` vcs
];
# command history
programs.atuin = {
enable = true;
settings.update_check = false;
settings.enter_accept = true;
};
programs.autojump.enable = true;
programs.bat.enable = true;
# maybe move boxxy here?
programs.broot.enable = true;
# terminal based file browser
# seems nice, but it's commented since I won't remember to use it
# programs.broot.enable = true;
programs.direnv = {
enable = true;
@ -78,42 +77,20 @@
'';
};
# replaces ls
programs.eza = {
enable = true;
git = true;
icons = "auto";
};
programs.fish = {
enable = true;
functions = {
#__fish_command_not_found_handler = {
# body = "__fish_default_command_not_found_handler $argv[1]";
# onEvent = "fish_command_not_found";
#};
};
shellInit = "set fish_greeting";
};
# maybe move git here?
programs.jq.enable = true;
programs.nix-index.enable = true;
programs.nix-index-database.comma.enable = true;
programs.ripgrep.enable = true;
programs.skim.enable = true;
programs.starship = {
enable = true;
enableTransience = true;
settings.nix_shell.format = "";
};
# programs.yazi = {
# enable = true;
# settings.preview.cache_dir = "${config.xdg.cacheHome}/thumbnails/yazi";
# };
# makes it so that you can run a program without
# installing it by typing , <program>
programs.nix-index.enable = true;
programs.nix-index-database.comma.enable = true;
}

22
nixos/boot-pretty.nix Normal file
View file

@ -0,0 +1,22 @@
{
config,
lib,
pkgs,
...
}: {
assertions = [
{
assertion = config.boot.initrd.systemd.enable;
message = "Plymouth password prompt requires systemd initrd";
}
];
boot.loader.timeout = 0; # hold space to enter menu
boot.kernelParams = ["quiet"];
boot.plymouth.enable = true;
# High-DPI scaled boot
boot.plymouth.extraConfig = ''
DeviceScale=2
'';
}

View file

@ -17,6 +17,7 @@
./impermanence.nix
./nix-maintenance.nix
# ./hardening.nix
./boot-pretty.nix
./desktop/plasma
./tailscale.nix

View file

@ -1,35 +0,0 @@
{
config,
lib,
pkgs,
inputs,
...
}: {
nix.settings = {
builders-use-substitutes = true; # unknown, suggested by anyrun
substituters = [
"https://hyprland.cachix.org"
"https://anyrun.cachix.org"
];
trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
"anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s="
];
};
services.xserver.enable = true;
services.xserver.displayManager.defaultSession = "hyprland";
# https://github.com/NixOS/nixpkgs/issues/103746#issuecomment-945091229
systemd.services."getty@tty1".enable = false;
systemd.services."autovt@tty1".enable = false;
services.xserver.displayManager.gdm.enable = true;
security.pam.services.swaylock = {};
programs.hyprland = {
enable = true;
};
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
services.blueman.enable = true;
}

View file

@ -8,7 +8,6 @@ let
gpuIDs = [
"1002:7480" # Graphics
"1002:ab30" # Audio
"1022:15c0" # Top Right physical USB C port
];
in {
options.vfio.enable = with lib;
@ -27,11 +26,18 @@ in {
config = let cfg = config.vfio;
in {
# TODO: Right now, I need to manually start
# the network bridge interface with systemctl start network-addresses-winvm0.service,
# and potentially toggle the link state in the vm config
# to get this working. would be good to fix it.
networking.bridges = {
"winvm0" = {
interfaces = [ "eth0" ];
};
};
# These are needed, since I'm not currently trying to
# reserve a static IP for the bridge interface
networking.interfaces.eth0.useDHCP = true;
networking.interfaces.winvm0.useDHCP = true;