From 05d73407465e16a06d46c807b55ed29a783e1b8b Mon Sep 17 00:00:00 2001 From: Evar Date: Fri, 17 Jan 2025 21:51:20 -0500 Subject: [PATCH] cleanup: laptop back alive!!! so time to actually start configuring --- home/apps.nix | 80 ++++----------- home/default.nix | 51 +--------- home/desktop.nix | 2 - home/desktop/hyprland.nix | 172 --------------------------------- home/git.nix | 53 ++++++++++ home/terminal.nix | 75 +++++--------- nixos/boot-pretty.nix | 22 +++++ nixos/default.nix | 1 + nixos/desktop/hypr/default.nix | 35 ------- nixos/vm.nix | 8 +- 10 files changed, 131 insertions(+), 368 deletions(-) delete mode 100644 home/desktop/hyprland.nix create mode 100644 home/git.nix create mode 100644 nixos/boot-pretty.nix delete mode 100644 nixos/desktop/hypr/default.nix diff --git a/home/apps.nix b/home/apps.nix index 5953aef..f84fe39 100644 --- a/home/apps.nix +++ b/home/apps.nix @@ -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; } diff --git a/home/default.nix b/home/default.nix index 162968e..d971c19 100644 --- a/home/default.nix +++ b/home/default.nix @@ -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; diff --git a/home/desktop.nix b/home/desktop.nix index 9a590d5..86065be 100644 --- a/home/desktop.nix +++ b/home/desktop.nix @@ -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 = { diff --git a/home/desktop/hyprland.nix b/home/desktop/hyprland.nix deleted file mode 100644 index ef3754c..0000000 --- a/home/desktop/hyprland.nix +++ /dev/null @@ -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 - ]; - }; -} diff --git a/home/git.nix b/home/git.nix new file mode 100644 index 0000000..400cc58 --- /dev/null +++ b/home/git.nix @@ -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"; + }; + }; +} + + diff --git a/home/terminal.nix b/home/terminal.nix index 6d96abe..100b3d5 100644 --- a/home/terminal.nix +++ b/home/terminal.nix @@ -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 , + programs.nix-index.enable = true; + programs.nix-index-database.comma.enable = true; } diff --git a/nixos/boot-pretty.nix b/nixos/boot-pretty.nix new file mode 100644 index 0000000..39463dd --- /dev/null +++ b/nixos/boot-pretty.nix @@ -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 + ''; +} diff --git a/nixos/default.nix b/nixos/default.nix index 411f419..d93b0d9 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -17,6 +17,7 @@ ./impermanence.nix ./nix-maintenance.nix # ./hardening.nix + ./boot-pretty.nix ./desktop/plasma ./tailscale.nix diff --git a/nixos/desktop/hypr/default.nix b/nixos/desktop/hypr/default.nix deleted file mode 100644 index a17f3e6..0000000 --- a/nixos/desktop/hypr/default.nix +++ /dev/null @@ -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; -} diff --git a/nixos/vm.nix b/nixos/vm.nix index 38ee19f..5af0611 100644 --- a/nixos/vm.nix +++ b/nixos/vm.nix @@ -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;