From 3e0ed596dac98295376d29e1755f379ce0added2 Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Wed, 2 Apr 2025 08:28:25 -0600 Subject: [PATCH 01/10] refactor(tf2): Split off tf2.nix into separate repo --- flake.lock | 36 +++++++ flake.nix | 1 + modules/home/tf2.nix | 24 ----- modules/home/tf2/packages.nix | 99 ------------------ modules/home/tf2/packages/mastercomfig.nix | 116 --------------------- modules/home/users/crumb/tf2.nix | 24 +++-- 6 files changed, 51 insertions(+), 249 deletions(-) mode change 100755 => 100644 flake.lock delete mode 100644 modules/home/tf2.nix delete mode 100644 modules/home/tf2/packages.nix delete mode 100644 modules/home/tf2/packages/mastercomfig.nix diff --git a/flake.lock b/flake.lock old mode 100755 new mode 100644 index 9d49615..1501e6c --- a/flake.lock +++ b/flake.lock @@ -679,6 +679,22 @@ "type": "github" } }, + "nixpkgs_12": { + "locked": { + "lastModified": 1743568003, + "narHash": "sha256-ZID5T65E8ruHqWRcdvZLsczWDOAWIE7om+vQOREwiX0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b7ba7f9f45c5cd0d8625e9e217c28f8eb6a19a76", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1742669843, @@ -868,6 +884,8 @@ "stylix": "stylix", "sydnix-cli": "sydnix-cli", "vpn-confinement": "vpn-confinement" + "sydnix-cli": "sydnix-cli", + "tf2-nix": "tf2-nix" } }, "sops-nix": { @@ -984,6 +1002,24 @@ "type": "github" } }, + "tf2-nix": { + "inputs": { + "nixpkgs": "nixpkgs_12" + }, + "locked": { + "lastModified": 1744277918, + "narHash": "sha256-8C+wwrjYvatRDXE8HLeN0rUnfOW/ehqpBKhOkx4/mm0=", + "owner": "msyds", + "repo": "tf2-nix", + "rev": "e40d15248908d22041dbea7e3f693972a5913c2f", + "type": "gitlab" + }, + "original": { + "owner": "msyds", + "repo": "tf2-nix", + "type": "gitlab" + } + }, "tinted-foot": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 4d26398..c99203e 100755 --- a/flake.nix +++ b/flake.nix @@ -28,6 +28,7 @@ url = "github:nix-community/NUR"; inputs.nixpkgs.follows = "nixpkgs"; }; + tf2-nix.url = "gitlab:msyds/tf2-nix"; }; outputs = { self, nixpkgs, ... }@inputs: diff --git a/modules/home/tf2.nix b/modules/home/tf2.nix deleted file mode 100644 index 4649403..0000000 --- a/modules/home/tf2.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ config, lib, pkgs, ... }: - -let cfg = config.tf2; -in { - options.tf2 = { - enable = lib.mkEnableOption "Team Fortress 2 configuration"; - packages = lib.mkOption { - type = lib.types.listOf lib.types.package; - default = []; - }; - }; - - config = lib.mkIf cfg.enable - (let gameDir = ".local/share/Steam/steamapps/common/Team Fortress 2"; - in { - home.file."tf" = { - recursive = true; - source = pkgs.symlinkJoin { - name = "tf2-files"; - paths = cfg.packages; - }; - }; - }); -} diff --git a/modules/home/tf2/packages.nix b/modules/home/tf2/packages.nix deleted file mode 100644 index 76a7585..0000000 --- a/modules/home/tf2/packages.nix +++ /dev/null @@ -1,99 +0,0 @@ -{ lib -, runCommand -, fetchFromGitHub -, fetchurl -, fetchzip -, ... }: - -let - mkTf2Package = - { pname - , version ? null - , cfg ? [] - , custom ? [] - , env ? {} - }@args: - let name = "${pname}${lib.optionalString (version != null) "-${version}"}"; - in runCommand name env '' - ${lib.toShellVar "cfgs" cfg} - ${lib.toShellVar "customs" custom} - set -xe - mkdir -p $out/cfg $out/custom - - for i in "''${cfgs[@]}"; do - ln -s "$i" "$out/cfg/$(basename "$i")" - done - - for i in "''${customs[@]}"; do - ln -s "$i" "$out/custom/$(basename "$i")" - done - ''; - - mkCfg = name: body: - runCommand name {} '' - ${lib.toShellVar "name" name} - mkdir -p $out/cfg "$(dirname "$out/cfg/$name")" - tee "$out/cfg/$name.cfg" << SUPER_UNIQUE_EOF - // Generated by tf2.nix - - ${body} - SUPER_UNIQUE_EOF - ''; - - mkTf2PackageFromDir = path: - runCommand "tf2-dir" {} '' - cp -r "${path}" $out - ''; - - fetchFromGameBanana = - { id - , hash - }: - fetchzip { - url = "https://gamebanana.com/dl/${id}"; - extension = "zip"; - inherit hash; - }; - - mastercomfig = import ./packages/mastercomfig.nix { - inherit mkTf2Package; - inherit fetchurl; - }; -in { - inherit mkTf2Package mastercomfig mkCfg mkTf2PackageFromDir; - - huds.deerhud = mkTf2Package { - pname = "deerhud"; - version = "78a24ef"; - custom = [ - (fetchFromGitHub { - name = "deerhud"; - owner = "DeerUwU"; - repo = "deerhud-tf2"; - rev = "78a24effbc66bc78b4bb557228eaa0195db3270c"; - hash = "sha256-uwKRilkEPHk1snjH/n9u32dMXr3cXjYN06cfthpZe7g="; - }) - ]; - }; - - loadouts-script = mkTf2Package rec { - pname = "tf2-loadouts-script"; - version = "3.1"; - custom = [ - (fetchurl { - url = "https://github.com/jooonior/tf2-loadouts-script/releases/download/v${version}/loadouts.vpk"; - hash = "sha256-qMDQe/lLZz5YdH6kvG7vNKHUxPvId4AMqu/hFqr/Sd8="; - }) - ]; - }; - - improved-crosshairs = mkTf2Package { - pname = "improved-crosshairs"; - custom = [ - (fetchFromGameBanana { - id = "1047153"; - hash = "sha256-ULcSfxuiGY1YCE1zQ693183F7ZRC11tYhvDMJKyzL1A="; - }) - ]; - }; -} diff --git a/modules/home/tf2/packages/mastercomfig.nix b/modules/home/tf2/packages/mastercomfig.nix deleted file mode 100644 index 0aad377..0000000 --- a/modules/home/tf2/packages/mastercomfig.nix +++ /dev/null @@ -1,116 +0,0 @@ -{ fetchurl -, mkTf2Package -}: - -let - mastercomfigVersion = "9.10.3"; - - releasesUrl = version: - "https://github.com/mastercomfig/mastercomfig/releases/download/${version}"; - - fetchMastercomfig = { version, file, hash ? "" }: - fetchurl { - url = "${releasesUrl version}/${file}"; - inherit hash; - }; - - mkMastercomfig = - type: - { name - , hash - , file ? "mastercomfig-${name}-${type}.vpk" - , version ? mastercomfigVersion - }: - mkTf2Package { - pname = "mastercomfig-${name}-${type}"; - inherit version; - custom = [ - (fetchMastercomfig { - inherit version file hash; - }) - ]; - }; - - mkMastercomfigAddon = mkMastercomfig "addon"; - mkMastercomfigPreset = mkMastercomfig "preset"; -in { - addons.disable-pyroland = mkMastercomfigAddon { - name = "disable-pyroland"; - hash = "sha256-cEFaXSXwlHwm7BnkSLmG4vAPYhL1O0XwNG0UpTnDFY8="; - }; - - addons.flat-mouse = mkMastercomfigAddon { - name = "flat-mouse"; - hash = "sha256-v2Url+m8dzXIrs8mz5VZWRqwqSSaxyH7t2vDvT10cdg="; - }; - - presets.high = mkMastercomfigPreset { - name = "high"; - hash = "sha256-704aEg1Gyl5vI6Y6VTmlUEiP70PjrF6/VlxsrkkepWs="; - }; - - presets.low = mkMastercomfigPreset { - name = "low"; - hash = "sha256-CpIbjy1dzNCEa583DthygkIQ5aq7Wp2QOJGANC2IGNs="; - }; - - addons.lowmem = mkMastercomfigAddon { - name = "lowmem"; - hash = "sha256-21iyJ4Zg+p5qES05FP2fMO7/p3YrrIkNp2GM2oEjT4E="; - }; - - presets.medium-high = mkMastercomfigPreset { - name = "medium-high"; - hash = "sha256-pS1KcFxxB/oT9DcopZyu77nr4td6x2mDrEFVNOPmtws="; - }; - - presets.medium-low = mkMastercomfigPreset { - name = "medium-low"; - hash = "sha256-P9Zk9IZVpX1hkAcdpNvKfzP2P+TDPNRwwv4I8uM+WU4="; - }; - - presets.medium = mkMastercomfigPreset { - name = "medium"; - hash = "sha256-yEcxPkU/0vJn7vy3n2ViYdTCBV3O9gX57fMQQZYlm3I="; - }; - - addons.no-footsteps = mkMastercomfigAddon { - name = "no-footsteps"; - hash = "sha256-7WIWwV2PnwRM79I7vOdfRggQi/NUS+6GHkAAyo8ap2I="; - }; - - addons.no-soundscapes = mkMastercomfigAddon { - name = "no-soundscapes"; - hash = "sha256-Qp7QW9zZXpX7zrK+Fmpf428lU7Mc86sMn6+5Syhnxz0="; - }; - - addons.no-tutorial = mkMastercomfigAddon { - name = "no-tutorial"; - hash = "sha256-sA3kN2iNe5bwh+954ef+sV0hjMdMZLs6IPgsHDi5oXE="; - }; - - presets.none = mkMastercomfigPreset { - name = "none"; - hash = "sha256-FQ8o4fxUkIAqlFPZPULScwDBaQjc88NiO579IaFTikA="; - }; - - addons.null-canceling-movement = mkMastercomfigAddon { - name = "null-canceling-movement"; - hash = "sha256-B3pHn80lMRN4q5hF/JSAdzDLTnyh7MNbYzMURrYmXxU="; - }; - - addons.transparent-viewmodels = mkMastercomfigAddon { - name = "transparent-viewmodels"; - hash = "sha256-nsUBSsGHXM+xwecixZvhisbifLqkqSyF7kIkJFmq6ow="; - }; - - presets.ultra = mkMastercomfigPreset { - name = "ultra"; - hash = "sha256-VfSFxRuZtYLuNrtX6X7BEMtL6wMbFyela7zbmZurlCw="; - }; - - presets.very-low = mkMastercomfigPreset { - name = "very-low"; - hash = "sha256-faGnju5aPovl++kAh2HNkkroUoMz9/Fx6kSgb3IBRfg="; - }; -} diff --git a/modules/home/users/crumb/tf2.nix b/modules/home/users/crumb/tf2.nix index fa774c9..7f129dd 100644 --- a/modules/home/users/crumb/tf2.nix +++ b/modules/home/users/crumb/tf2.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, inputs, ... }: # Launch options: -novid -nojoy -nosteamcontroller -nohltv -particles 1 -precachefontchars -noquicktime -console -windowed -noborder @@ -10,21 +10,25 @@ in { config = lib.mkIf cfg.enable (let - tf2pkgs = pkgs.callPackage ../../tf2/packages.nix {}; - in { - tf2 = { - enable = true; - packages = with tf2pkgs; [ + tf2pkgs = inputs.tf2-nix.packages.x86_64-linux; + my-config = pkgs.symlinkJoin { + name = "tf2-files"; + paths = with tf2pkgs; [ mastercomfig.presets.medium-low mastercomfig.addons.flat-mouse mastercomfig.addons.no-tutorial mastercomfig.addons.null-canceling-movement improved-crosshairs loadouts-script - huds.deerhud - (tf2pkgs.mkTf2PackageFromDir ./tf2/my-config) - (tf2pkgs.mkTf2PackageFromDir ./tf2/quake-hitsounds) + deerhud + ./tf2/my-config + ./tf2/quake-hitsounds ]; }; - }); + in { + home.file."tf" = { + recursive = true; + source = my-config; + }; + }); } From a0ec25e5f925bbadda8648d4d65351ec9181943e Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Thu, 10 Apr 2025 06:59:52 -0600 Subject: [PATCH 02/10] feat(emacs): Haskell additions - Print Hoogle port on server start. - Include _ and ' in words. --- .../crumb/emacs/modules/lang/syd-lang-haskell.el | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/home/users/crumb/emacs/modules/lang/syd-lang-haskell.el b/modules/home/users/crumb/emacs/modules/lang/syd-lang-haskell.el index 1943e9c..ef8bc63 100644 --- a/modules/home/users/crumb/emacs/modules/lang/syd-lang-haskell.el +++ b/modules/home/users/crumb/emacs/modules/lang/syd-lang-haskell.el @@ -24,6 +24,11 @@ (evil-append-line nil) (haskell-indentation-newline-and-indent)) +(defun syd-haskell-hoogle-start-server () + (interactive) + (haskell-hoogle-start-server) + (message "Hoogle started on localhost:%d" haskell-hoogle-port-number)) + (use-package haskell-mode :mode (("\\.l?hs'" . haskell-literate-mode) ("\\.hs'" . haskell-mode)) @@ -39,7 +44,7 @@ :prefix syd-localleader-key :non-normal-prefix syd-alt-localleader-key "c" #'haskell-cabal-visit-file - "h s" #'haskell-hoogle-start-server + "h s" #'syd-haskell-hoogle-start-server "h q" #'haskell-hoogle-kill-server) (:keymaps 'interactive-haskell-mode-map :states '(normal insert) @@ -62,7 +67,9 @@ (syd-add-hook 'haskell-mode-local-vars-hook ;; Folding of Haskell sections. #'haskell-collapse-mode - #'interactive-haskell-mode)) + #'interactive-haskell-mode) + (dolist (c '(?' ?_)) + (modify-syntax-entry c "w" haskell-mode-syntax-table))) (use-package lsp-haskell :defer t From ec00f11a764d89f6c3796a0dddc51c07e8f09aeb Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Thu, 10 Apr 2025 06:59:52 -0600 Subject: [PATCH 03/10] feat(emacs): Remember risky variables --- modules/home/users/crumb/emacs/modules/syd-ui.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/home/users/crumb/emacs/modules/syd-ui.el b/modules/home/users/crumb/emacs/modules/syd-ui.el index b680a7c..2cf1be2 100755 --- a/modules/home/users/crumb/emacs/modules/syd-ui.el +++ b/modules/home/users/crumb/emacs/modules/syd-ui.el @@ -92,7 +92,9 @@ ;; Disable the menu bar, scroll bar, and tool bar. (menu-bar-mode -1) (scroll-bar-mode -1) - (tool-bar-mode -1)) + (tool-bar-mode -1) + ;; Remember allowed risky variabled. + (advice-add 'risky-local-variable-p :override #'ignore)) (defun syd-init-kill-process-buffer-on-exit () (defun syd-comint--kill-buffer-sentinel (process _output) From 3600f56d9261c0795f4a4ae7983acaa3b2e41ef4 Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Thu, 10 Apr 2025 06:59:52 -0600 Subject: [PATCH 04/10] feat(emacs): Toggle subtree in Dired --- modules/home/users/crumb/emacs/modules/syd-dired.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/home/users/crumb/emacs/modules/syd-dired.el b/modules/home/users/crumb/emacs/modules/syd-dired.el index a0e7e17..fec40dc 100644 --- a/modules/home/users/crumb/emacs/modules/syd-dired.el +++ b/modules/home/users/crumb/emacs/modules/syd-dired.el @@ -83,6 +83,10 @@ directory." (dirvish-reuse-session 'open) (dirvish-default-layout '(0 0.4 0.6)) (dirvish-hide-details '(dirvish dirvish-fd dirvish-side))) + :general + (:keymaps 'dired-mode-map + "" #'dirvish-subtree-toggle + "TAB" #'dirvish-subtree-toggle) :config ;; Fix random void-variable errors. (require 'autorevert) From 240bdfb6da8686d00d63be80a4e2f51f44459ed4 Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Thu, 10 Apr 2025 07:42:10 -0600 Subject: [PATCH 05/10] fix(steam): Impermanence + Steam --- flake.lock | 3 +-- hosts/sydpc/configuration.nix | 6 +++++- modules/home/steam.nix | 2 +- modules/home/users/crumb/tf2.nix | 3 ++- modules/nixos/steam.nix | 19 +++++++++++++++++++ 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/flake.lock b/flake.lock index 1501e6c..1c59835 100644 --- a/flake.lock +++ b/flake.lock @@ -883,9 +883,8 @@ "sops-nix": "sops-nix", "stylix": "stylix", "sydnix-cli": "sydnix-cli", + "tf2-nix": "tf2-nix", "vpn-confinement": "vpn-confinement" - "sydnix-cli": "sydnix-cli", - "tf2-nix": "tf2-nix" } }, "sops-nix": { diff --git a/hosts/sydpc/configuration.nix b/hosts/sydpc/configuration.nix index 2972c69..c73135e 100644 --- a/hosts/sydpc/configuration.nix +++ b/hosts/sydpc/configuration.nix @@ -13,7 +13,11 @@ sydnix = { filesystemType = "btrfs"; - steam.enable = true; + steam = { + enable = true; + impermanenceUsers = ["crumb"]; + }; + niri.enable = true; stylix.enable = true; qemu.enable = true; diff --git a/modules/home/steam.nix b/modules/home/steam.nix index e92197e..591a374 100644 --- a/modules/home/steam.nix +++ b/modules/home/steam.nix @@ -19,7 +19,7 @@ in { # # https://github.com/ValveSoftware/steam-for-linux/issues/10552 # https://github.com/nix-community/impermanence/issues/165 - { directory = ".local/share/Steam"; method = "symlink"; } + # { directory = ".local/share/Steam"; method = "symlink"; } { directory = ".steam"; method = "symlink"; } ]; diff --git a/modules/home/users/crumb/tf2.nix b/modules/home/users/crumb/tf2.nix index 7f129dd..42b3a05 100644 --- a/modules/home/users/crumb/tf2.nix +++ b/modules/home/users/crumb/tf2.nix @@ -25,8 +25,9 @@ in { ./tf2/quake-hitsounds ]; }; + game-dir = ".local/share/Steam/steamapps/common/Team Fortress 2/tf"; in { - home.file."tf" = { + home.file.${game-dir} = { recursive = true; source = my-config; }; diff --git a/modules/nixos/steam.nix b/modules/nixos/steam.nix index 5f9c50b..02da658 100644 --- a/modules/nixos/steam.nix +++ b/modules/nixos/steam.nix @@ -4,6 +4,16 @@ let cfg = config.sydnix.steam; in { options.sydnix.steam = { enable = lib.mkEnableOption "Steam"; + impermanenceUsers = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = []; + description = '' + A list of users for which ~/.local/share/Steam shall be persisted. This + is a disgusting hack to get around an issue with Impermanence's + home-manager module. + https://github.com/nix-community/impermanence/issues/165#issuecomment-2537723929 + ''; + }; }; config = lib.mkIf cfg.enable { @@ -28,5 +38,14 @@ in { enable = true; enable32Bit = true; }; + + environment.persistence.${config.sydnix.impermanence.persistDirectory}.users = + builtins.listToAttrs + (builtins.map + (user: { + name = user; + value.directories = [".local/share/Steam"]; + }) + cfg.impermanenceUsers); }; } From ba8410a98dcffd2ddfbedab456e52ee7f5599fe6 Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Thu, 10 Apr 2025 07:42:10 -0600 Subject: [PATCH 06/10] fix(haskell): Fix ghc[i]-with-packages - Export functions. - Simplify arg-parsing by using getopts instead of getopt. --- modules/home/users/crumb/haskell.nix | 49 ++++++++++++++++------------ 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/modules/home/users/crumb/haskell.nix b/modules/home/users/crumb/haskell.nix index 1c888f6..7674cfd 100644 --- a/modules/home/users/crumb/haskell.nix +++ b/modules/home/users/crumb/haskell.nix @@ -11,36 +11,45 @@ in { programs.bash.profileExtra = '' # Start a GHCi REPL with the given packages made available. ghci-with-packages () { - nix-shell -p "haskellPackages.ghcWithPackages (p: with p; [ $@ ])" \ - --run ghci - } - - # Run GHC with the given packages made available. - ghc-with-packages () { - getopt -o "p" -- "$@" - while true; do - case "$1" in - -p) - packages="$1" - shift 2 + packages="" + while getopts 'p:h' opt; do + case "$opt" in + p) + packages="''${OPTARG}" ;; - --) - shift - break + ?|h) + echo >&2 "Usage: $(basename $0) [-p packages] [-- ghci-options]" + exit 1 ;; esac done + shift "$(($OPTIND -1))" - if [ $? -ne 0 ]; then - echo "Invalid options provided" - exit 1 - fi + nix-shell -p "haskellPackages.ghcWithPackages (p: with p; [ $packages ])" \ + --run "ghci $@" + } + export -f ghci-with-packages - eval set -- "$options" + # Run GHC with the given packages made available. + ghc-with-packages () { + packages="" + while getopts 'p:h' opt; do + case "$opt" in + p) + packages="''${OPTARG}" + ;; + ?|h) + echo >&2 "Usage: $(basename $0) [-p packages] [-- ghc-options]" + exit 1 + ;; + esac + done + shift "$(($OPTIND -1))" nix-shell -p "haskellPackages.ghcWithPackages (p: with p; [ $packages ])" \ --run "ghc $@" } + export -f ghc-with-packages ''; sydnix.impermanence.cache.directories = From bd8b3dff340ed298f9d632701fdbb55041d9eb17 Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Thu, 10 Apr 2025 23:45:56 -0600 Subject: [PATCH 07/10] feat(emacs): Eshell alias ff -> find-file --- modules/home/users/crumb/emacs/eshell/alias | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/home/users/crumb/emacs/eshell/alias b/modules/home/users/crumb/emacs/eshell/alias index 14cc871..64add32 100644 --- a/modules/home/users/crumb/emacs/eshell/alias +++ b/modules/home/users/crumb/emacs/eshell/alias @@ -29,6 +29,7 @@ alias jsp jj split $* alias l ls -alh $* alias ll ls -l $* alias ls ls --color=tty $* +alias ff find-file $* alias pass /nix/store/hqhi6dgl7p16v49ymg2hwkgl844092fb-passage-1.7.4a2/bin/passage $* From a68f69c2e03f66ee0dd4fc38102a34c296d12a7b Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Thu, 10 Apr 2025 23:49:27 -0600 Subject: [PATCH 08/10] refactor(emacs): Update Nix module snippet --- modules/home/users/crumb/emacs/snippets/nix-mode/__module | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/modules/home/users/crumb/emacs/snippets/nix-mode/__module b/modules/home/users/crumb/emacs/snippets/nix-mode/__module index d53a81e..e7be9c3 100644 --- a/modules/home/users/crumb/emacs/snippets/nix-mode/__module +++ b/modules/home/users/crumb/emacs/snippets/nix-mode/__module @@ -7,15 +7,13 @@ # -- { config, lib, pkgs, ... }: -with lib; - let cfg = config.${1:`this-current-file-name`}; in { options.$1 = { - enable = mkEnableOption "$2"; + enable = lib.mkEnableOption "$2"; }; - config = mkIf cfg.enable { + config = lib.mkIf cfg.enable { $3 }; } \ No newline at end of file From f13fc85141a28c73fee062f3a37861bded64e642 Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Fri, 11 Apr 2025 01:49:52 -0600 Subject: [PATCH 09/10] feat(emacs): syd-project-checkout --- .../home/users/crumb/emacs/modules/syd-projects.el | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/home/users/crumb/emacs/modules/syd-projects.el b/modules/home/users/crumb/emacs/modules/syd-projects.el index b04455b..6214333 100755 --- a/modules/home/users/crumb/emacs/modules/syd-projects.el +++ b/modules/home/users/crumb/emacs/modules/syd-projects.el @@ -25,6 +25,17 @@ (add-to-list 'project-switch-commands (funcall switch-cmd #'syd-project-root-find-file "Browse")))) +(defun syd-project-checkout (repo-uri) + (interactive (list (read-string "Repo: "))) + (let* ((repo-name + (when (string-match (rx "/" (group-n 1 (+ (any alphanumeric "-_"))) + (? ".git") eol) + repo-uri) + (match-string 1 repo-uri))) + (dest (file-name-concat (expand-file-name "~/git") repo-name))) + (shell-command (format "git clone %s %s" repo-uri dest)) + (find-file dest))) + ;; Projection provides a Projectile-like project management library atop ;; Emacs built-in project.el. It's more lightweight, while still featureful. (use-package projection From 3cd3ccd08eb8b0af6dea678adae40e40c996e648 Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Fri, 11 Apr 2025 11:26:29 -0600 Subject: [PATCH 10/10] fix(emacs): Load Dirvish --- modules/home/users/crumb/emacs/modules/syd-dired.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/home/users/crumb/emacs/modules/syd-dired.el b/modules/home/users/crumb/emacs/modules/syd-dired.el index fec40dc..f4522c1 100644 --- a/modules/home/users/crumb/emacs/modules/syd-dired.el +++ b/modules/home/users/crumb/emacs/modules/syd-dired.el @@ -78,7 +78,6 @@ directory." (dirvish-directory-view-mode . diredfl-mode))) (use-package dirvish - :after dired :custom ((dirvish-cache-dir (file-name-concat syd-cache-dir "dirvish/")) (dirvish-reuse-session 'open) (dirvish-default-layout '(0 0.4 0.6)) @@ -87,9 +86,11 @@ directory." (:keymaps 'dired-mode-map "" #'dirvish-subtree-toggle "TAB" #'dirvish-subtree-toggle) + :init + ;; Ugh… I'm fairly certain this leads to eager loading of the entire package. + (dirvish-override-dired-mode 1) :config ;; Fix random void-variable errors. - (require 'autorevert) - (dirvish-override-dired-mode 1)) + (require 'autorevert)) (provide 'syd-dired)