From ef9943b707cdb41b8f37810cbaa802de6dca620f Mon Sep 17 00:00:00 2001 From: Madeleine Sydney Date: Sun, 23 Mar 2025 23:16:03 -0600 Subject: [PATCH] blah --- flake.lock | 118 +++++++++--------- flake.nix | 4 +- hosts/nixos-testbed/configuration.nix | 8 +- hosts/sydpc/configuration.nix | 13 +- modules/home/mpd.nix | 22 ++-- modules/home/users/crumb/discord.nix | 2 +- modules/home/users/crumb/emacs/init.el | 3 +- .../home/users/crumb/emacs/lib/syd-prose.el | 11 +- .../emacs/modules/lang/syd-lang-clojure.el | 10 +- .../users/crumb/emacs/modules/syd-snippets.el | 9 ++ .../users/crumb/emacs/modules/syd-trust.el | 7 ++ .../emacs/snippets/bibtex-mode/.yas-setup.el | 27 ++++ .../crumb/emacs/snippets/bibtex-mode/@art | 13 ++ .../crumb/emacs/snippets/haskell-mode/foreign | 9 ++ .../crumb/emacs/snippets/nix-mode/__module | 21 ++++ .../crumb/emacs/snippets/nix-mode/enable | 7 ++ modules/home/users/crumb/firefox.nix | 33 ++++- modules/home/users/crumb/mpd.nix | 31 ++--- modules/home/users/crumb/niri.nix | 10 +- modules/nixos/niri.nix | 18 +++ modules/nixos/qemu.nix | 29 +++++ modules/nixos/stylix.nix | 1 - 22 files changed, 300 insertions(+), 106 deletions(-) create mode 100644 modules/home/users/crumb/emacs/modules/syd-snippets.el create mode 100644 modules/home/users/crumb/emacs/modules/syd-trust.el create mode 100644 modules/home/users/crumb/emacs/snippets/bibtex-mode/.yas-setup.el create mode 100644 modules/home/users/crumb/emacs/snippets/bibtex-mode/@art create mode 100644 modules/home/users/crumb/emacs/snippets/haskell-mode/foreign create mode 100644 modules/home/users/crumb/emacs/snippets/nix-mode/__module create mode 100644 modules/home/users/crumb/emacs/snippets/nix-mode/enable create mode 100644 modules/nixos/qemu.nix diff --git a/flake.lock b/flake.lock index cf426ae..ccab0a9 100755 --- a/flake.lock +++ b/flake.lock @@ -93,11 +93,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1740346641, - "narHash": "sha256-0djPRTfFhRo2FTYVNGkw9zFh8SbH0e0lyIwsrvwA1OY=", + "lastModified": 1742772485, + "narHash": "sha256-8JuQ87ZScrTtvHGIW9LB1OiFU/EkcBIvuQFVvirqI4k=", "owner": "9001", "repo": "copyparty", - "rev": "598a29a7339f0824bc042f35c31697e239475095", + "rev": "e1dea7ef3ee397d50bd0ab14e2eb71bec2256d9b", "type": "github" }, "original": { @@ -133,11 +133,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1738148035, - "narHash": "sha256-KYOATYEwaKysL3HdHdS5kbQMXvzS4iPJzJrML+3TKAo=", + "lastModified": 1741786315, + "narHash": "sha256-VT65AE2syHVj6v/DGB496bqBnu1PXrrzwlw07/Zpllc=", "owner": "nix-community", "repo": "disko", - "rev": "18d0a984cc2bc82cf61df19523a34ad463aa7f54", + "rev": "0d8c6ad4a43906d14abd5c60e0ffe7b587b213de", "type": "github" }, "original": { @@ -152,11 +152,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1741658994, - "narHash": "sha256-frkkZXUXAHRKPhGdoWSYx6LOxdKQUQRl/1Hjj3XTzc0=", + "lastModified": 1742838319, + "narHash": "sha256-daVj+uHpHvndui9DOxytAjVP7Kx8lG3/W3KPNR0EG/0=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "e6acc4327ba98ade994a6b804b01ab5087726ce2", + "rev": "cb257a1d672f75f2f3e375fe1080216131dd1fb0", "type": "github" }, "original": { @@ -411,18 +411,14 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1741376022, - "narHash": "sha256-EPMhteiZurPFiVs1ioBtiUgUMih52w3IwOWLV0hoX1w=", - "owner": "msyds", - "repo": "home-manager", - "rev": "7b87c2d8b9ad72e83402f8fc6dde24e76b28ee67", - "type": "github" + "lastModified": 1742856449, + "narHash": "sha256-J0qKDH7bTrzDYjLzwXiaGE2pdaL/OycvRy/6h6Ih2oo=", + "path": "/home/crumb/git/home-manager", + "type": "path" }, "original": { - "owner": "msyds", - "ref": "service-mpdscribble", - "repo": "home-manager", - "type": "github" + "path": "/home/crumb/git/home-manager", + "type": "path" } }, "home-manager_2": { @@ -471,11 +467,11 @@ "xwayland-satellite-unstable": "xwayland-satellite-unstable" }, "locked": { - "lastModified": 1742280890, - "narHash": "sha256-Kluc8ORAYjyPA5gD4HfXiv7bxmGftGAQ5eFAJ7uJwiE=", + "lastModified": 1742832363, + "narHash": "sha256-STJUQ7PVfjlWdHSuxXDH/UZNjrUVO1Up/x2AwhtJRio=", "owner": "sodiboo", "repo": "niri-flake", - "rev": "808d8bf8cd9adb4bd20ba9411346d42ece5de4ca", + "rev": "8720365191e3931cefd3fc9484dccba5e219b73d", "type": "github" }, "original": { @@ -504,11 +500,11 @@ "niri-unstable": { "flake": false, "locked": { - "lastModified": 1742276600, - "narHash": "sha256-muceB5DW++WPqrGKpX3Hkii/DNSMmFs2oQrYRYHmPiU=", + "lastModified": 1742719554, + "narHash": "sha256-zBB/Niset99u6/b6z9hS2IYfDigDI9huiG0QXvDKDS4=", "owner": "YaLTeR", "repo": "niri", - "rev": "e251ca7340bc71870c3a81a7ffc3d9bde58e685a", + "rev": "c709696237f3e963225b8df248538cc691ccba3d", "type": "github" }, "original": { @@ -591,11 +587,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1741445498, - "narHash": "sha256-F5Em0iv/CxkN5mZ9hRn3vPknpoWdcdCyR0e4WklHwiE=", + "lastModified": 1742751704, + "narHash": "sha256-rBfc+H1dDBUQ2mgVITMGBPI1PGuCznf9rcWX/XIULyE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "52e3095f6d812b91b22fb7ad0bfc1ab416453634", + "rev": "f0946fa5f1fb876a9dc2e1850d9d3a4e3f914092", "type": "github" }, "original": { @@ -607,11 +603,11 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1742136038, - "narHash": "sha256-DDe16FJk18sadknQKKG/9FbwEro7A57tg9vB5kxZ8kY=", + "lastModified": 1742512142, + "narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a1185f4064c18a5db37c5c84e5638c78b46e3341", + "rev": "7105ae3957700a9646cc4b766f5815b23ed0c682", "type": "github" }, "original": { @@ -671,11 +667,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1737879851, - "narHash": "sha256-H+FXIKj//kmFHTTW4DFeOjR7F1z2/3eb2iwN6Me4YZk=", + "lastModified": 1741402956, + "narHash": "sha256-y2hByvBM03s9T2fpeLjW6iprbxnhV9mJMmSwCHc41ZQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5d3221fd57cc442a1a522a15eb5f58230f45a304", + "rev": "ed0b1881565c1ffef490c10d663d4f542031dad3", "type": "github" }, "original": { @@ -687,11 +683,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1741513245, - "narHash": "sha256-7rTAMNTY1xoBwz0h7ZMtEcd8LELk9R5TzBPoHuhNSCk=", + "lastModified": 1742669843, + "narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e3e32b642a31e6714ec1b712de8c91a3352ce7e1", + "rev": "1e5b653dff12029333a6546c11e108ede13052eb", "type": "github" }, "original": { @@ -703,11 +699,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1741010256, - "narHash": "sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM=", + "lastModified": 1742422364, + "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ba487dbc9d04e0634c64e3b1f0d25839a0a68246", + "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc", "type": "github" }, "original": { @@ -719,11 +715,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1742069588, - "narHash": "sha256-C7jVfohcGzdZRF6DO+ybyG/sqpo1h6bZi9T56sxLy+k=", + "lastModified": 1742422364, + "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5", + "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc", "type": "github" }, "original": { @@ -767,11 +763,11 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1738517419, - "narHash": "sha256-tttEXgKimgbtPvxFl+Avos4P4lssIqxHhxpLbbvNekk=", + "lastModified": 1742738698, + "narHash": "sha256-KCtAXWwQs03JmEhP4ss59QVzT+rHZkhQO85KjNy8Crc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8532db2a88ba56de9188af72134d93e39fd825f3", + "rev": "f3a2a0601e9669a6e38af25b46ce6c4563bcb6da", "type": "github" }, "original": { @@ -783,11 +779,11 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1731763621, - "narHash": "sha256-ddcX4lQL0X05AYkrkV2LMFgGdRvgap7Ho8kgon3iWZk=", + "lastModified": 1742578646, + "narHash": "sha256-GiQ40ndXRnmmbDZvuv762vS+gew1uDpFwOfgJ8tLiEs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c69a9bffbecde46b4b939465422ddc59493d3e4d", + "rev": "94c4dbe77c0740ebba36c173672ca15a7926c993", "type": "github" }, "original": { @@ -806,11 +802,11 @@ "treefmt-nix": "treefmt-nix_2" }, "locked": { - "lastModified": 1741373419, - "narHash": "sha256-RkLmZob4GnlKntjO26io6wf6haE24pcTr3jAljMJ45c=", + "lastModified": 1742849190, + "narHash": "sha256-Isnx5t+L/G7AxpUwNvFgPiYc4IcZjdBrg3MIVz1cfnk=", "owner": "nix-community", "repo": "NUR", - "rev": "4463e6382eca077dbd3c74ae336aef516221b4fc", + "rev": "797067d7e3601713a3b43f823248a6232486376c", "type": "github" }, "original": { @@ -863,11 +859,11 @@ "nixpkgs": "nixpkgs_9" }, "locked": { - "lastModified": 1738291974, - "narHash": "sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320=", + "lastModified": 1742700801, + "narHash": "sha256-ZGlpUDsuBdeZeTNgoMv+aw0ByXT2J3wkYw9kJwkAS4M=", "owner": "Mic92", "repo": "sops-nix", - "rev": "4c1251904d8a08c86ac6bc0d72cc09975e89aef7", + "rev": "67566fe68a8bed2a7b1175fdfb0697ed22ae8852", "type": "github" }, "original": { @@ -898,11 +894,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1742234510, - "narHash": "sha256-dQoo4XivjZuJiSi8ePv9CuP0ncE64RLyz2vb46blRx0=", + "lastModified": 1742855382, + "narHash": "sha256-C/aBeGktWiRg2EoSc0Aug8v+cZirSkyoVtMx1P0Dex0=", "owner": "danth", "repo": "stylix", - "rev": "fa288c0dc695b49c9af38614af8da981371fe92a", + "rev": "5321ab0c763caa786c9756a8e8e85d1c35a8e650", "type": "github" }, "original": { @@ -1135,11 +1131,11 @@ "xwayland-satellite-unstable": { "flake": false, "locked": { - "lastModified": 1742249030, - "narHash": "sha256-YZ+axsuNsgIKWfnRkt6Qa9UoKfUOIWf42vNUonXxmxM=", + "lastModified": 1742671548, + "narHash": "sha256-nJK70IyhyOXth5Dcyv7DKtv95TTZkqcAYHVj4Uq2Blw=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "cca74a5f6b23742d77dc5db4312dfc40fd4a0fcc", + "rev": "0fa13c6fb43ae26a597103989a42e44a03d2d827", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index dc0c2ad..9e43649 100755 --- a/flake.nix +++ b/flake.nix @@ -6,8 +6,8 @@ nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; impermanence.url = "github:nix-community/impermanence"; # We're using my branch until #6259 is merged. - home-manager.url = "github:msyds/home-manager/service-mpdscribble"; - # home-manager.url = "path:///persist/dots/DELETE-ME/home-manager"; + # home-manager.url = "github:msyds/home-manager/service-mpdscribble"; + home-manager.url = "path:///home/crumb/git/home-manager"; sops-nix.url = "github:Mic92/sops-nix"; sydnix-cli.url = "path:///persist/dots/scripts/sydnix-cli"; copyparty.url = "github:9001/copyparty"; diff --git a/hosts/nixos-testbed/configuration.nix b/hosts/nixos-testbed/configuration.nix index b6ec71a..d940af2 100644 --- a/hosts/nixos-testbed/configuration.nix +++ b/hosts/nixos-testbed/configuration.nix @@ -63,8 +63,12 @@ }; services.xserver.enable = true; - services.displayManager.sddm.enable = true; - services.desktopManager.plasma6.enable = true; + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + autoNumlock = true; + }; + # services.desktopManager.plasma6.enable = true; services.xserver.xkb.layout = "us"; services.xserver.xkb.options = "ctrl:swapcaps"; diff --git a/hosts/sydpc/configuration.nix b/hosts/sydpc/configuration.nix index ade77ed..1927a99 100644 --- a/hosts/sydpc/configuration.nix +++ b/hosts/sydpc/configuration.nix @@ -6,12 +6,17 @@ ./disks.nix ]; + boot.extraModulePackages = with config.boot.kernelPackages; [ + v4l2loopback + ]; + sydnix = { filesystemType = "btrfs"; steam.enable = true; niri.enable = true; stylix.enable = true; + qemu.enable = true; users.users = [ "crumb" @@ -73,7 +78,7 @@ }; services.displayManager.sddm.enable = true; # WAIT4NIRI - services.desktopManager.plasma6.enable = true; # WAIT4NIRI + # services.desktopManager.plasma6.enable = true; # WAIT4NIRI services.libinput = { enable = true; @@ -87,11 +92,15 @@ enable = true; alsa.enable = true; alsa.support32Bit = true; + # Pulseaudio compatibility layer. pulse.enable = true; wireplumber.enable = true; }; - services.pulseaudio.package = pkgs.pulseaudioFull; + # Ensure pipewire processes get realtime priority. + security.rtkit.enable = true; + + # services.pulseaudio.package = pkgs.pulseaudioFull; # Usually we try to delegate declarations of globally-available packages to # separate modules. These are some exceptional essentials. diff --git a/modules/home/mpd.nix b/modules/home/mpd.nix index b52d2c7..dd73615 100755 --- a/modules/home/mpd.nix +++ b/modules/home/mpd.nix @@ -14,11 +14,7 @@ in { }; scrobbling = { - enable = mkOption { - description = "Enable scrobbling for MPD via mpdscribble."; - type = types.bool; - default = cfg.enable; - }; + enable = mkEnableOption "Enable scrobbling for MPD via mpdscribble."; endpoints = mkOption { type = types.attrsOf (types.submodule ({ ... }: { @@ -35,16 +31,22 @@ in { }; discord = { - enable = mkOption { - description = "Enable Discord integration for MPD via mpd-discord-rpc."; - type = types.bool; - default = cfg.enable; - }; + enable = + mkEnableOption "Discord integration for MPD via mpd-discord-rpc"; }; }; }; config = mkIf cfg.enable { + sydnix.impermanence.directories = + let xdg-state-dir = + config.home.statehome + or "${config.home.homeDirectory}/.local/state"; + in [ + (lib.removePrefix + config.home.homeDirectory + "${xdg-state-dir}/mpd") + ]; services.mpd = { enable = true; musicDirectory = cfg.musicDirectory; diff --git a/modules/home/users/crumb/discord.nix b/modules/home/users/crumb/discord.nix index 5f7c46a..2d4b76c 100644 --- a/modules/home/users/crumb/discord.nix +++ b/modules/home/users/crumb/discord.nix @@ -23,7 +23,7 @@ in { vesktop = { state.firstLaunch = false; settings = { - discordBranch = "stable"; + discordBranch = "canary"; minimizeToTray = false; arRPC = true; }; diff --git a/modules/home/users/crumb/emacs/init.el b/modules/home/users/crumb/emacs/init.el index 8994dd4..f71884b 100755 --- a/modules/home/users/crumb/emacs/init.el +++ b/modules/home/users/crumb/emacs/init.el @@ -63,8 +63,9 @@ (require 'syd-projects) (require 'syd-scratch) (require 'syd-smartparens) +(require 'syd-snippets) (require 'syd-tabs) (require 'syd-tooling) (require 'syd-tramp) +(require 'syd-trust) (require 'syd-ui) - diff --git a/modules/home/users/crumb/emacs/lib/syd-prose.el b/modules/home/users/crumb/emacs/lib/syd-prose.el index 7301b24..4e387ce 100644 --- a/modules/home/users/crumb/emacs/lib/syd-prose.el +++ b/modules/home/users/crumb/emacs/lib/syd-prose.el @@ -24,11 +24,12 @@ ;; Managed by Nix: libenchant dependency. :straight nil :commands (jinx-mode jinx-correct jinx-correct-word) - :init (defun syd-jinx--jinx-or-ispell () - (interactive) - (if (bound-and-true-p jinx-mode) - (call-interactively #'jinx-correct-word) - (call-interactively #'ispell-word))) + :init + (defun syd-jinx--jinx-or-ispell () + (interactive) + (if (bound-and-true-p jinx-mode) + (call-interactively #'jinx-correct-word) + (call-interactively #'ispell-word))) :general (:states '(normal visual) "z =" #'syd-jinx--jinx-or-ispell) :config diff --git a/modules/home/users/crumb/emacs/modules/lang/syd-lang-clojure.el b/modules/home/users/crumb/emacs/modules/lang/syd-lang-clojure.el index dc6c1cb..43e223a 100644 --- a/modules/home/users/crumb/emacs/modules/lang/syd-lang-clojure.el +++ b/modules/home/users/crumb/emacs/modules/lang/syd-lang-clojure.el @@ -72,7 +72,13 @@ "r r" #'cider-ns-refresh "r R" #'cider-restart "r q" #'cider-quit + "d d" #'cider-debug-defun-at-point + "M-:" #'cider-read-and-eval + "h d" #'cider-doc "h c" #'cider-cheatsheet) + (:keymaps 'cider-repl-mode-map + :states 'insert + "S-" #'cider-repl-newline-and-indent) :config (add-hook 'cider-mode-hook #'eldoc-mode) (add-hook 'cider-repl-mode-hook #'syd-lisp-mode) @@ -91,7 +97,9 @@ (,(rx bol "*cider-doc*") :slot 2 :vslot -8 :quit t :select t))) ;; DEPRECATED: Remove once syd-strategies is working. - (syd-add-hook 'clojure-mode-hook + (syd-add-hook '(clojure-mode-hook + clojurescript-mode-hook + cider-repl-mode-hook) (defun syd-clojure-set-handlers-h () (setq-local syd-lookup-documentation-handlers (list #'cider-doc)))) diff --git a/modules/home/users/crumb/emacs/modules/syd-snippets.el b/modules/home/users/crumb/emacs/modules/syd-snippets.el new file mode 100644 index 0000000..7a6482e --- /dev/null +++ b/modules/home/users/crumb/emacs/modules/syd-snippets.el @@ -0,0 +1,9 @@ +;;; syd-snippets.el -*- lexical-binding: t; -*- + +(use-package yasnippet + :hook (on-first-input . yas-global-mode)) + +(use-package yasnippet-snippets + :after yasnippet) + +(provide 'syd-snippets) diff --git a/modules/home/users/crumb/emacs/modules/syd-trust.el b/modules/home/users/crumb/emacs/modules/syd-trust.el new file mode 100644 index 0000000..6812226 --- /dev/null +++ b/modules/home/users/crumb/emacs/modules/syd-trust.el @@ -0,0 +1,7 @@ +;;; syd-trust.el -*- lexical-binding: t; -*- + +(setq safe-local-variable-directories + (list "/persist/dots" + (expand-file-name "~/org"))) + +(provide 'syd-trust) diff --git a/modules/home/users/crumb/emacs/snippets/bibtex-mode/.yas-setup.el b/modules/home/users/crumb/emacs/snippets/bibtex-mode/.yas-setup.el new file mode 100644 index 0000000..37fb019 --- /dev/null +++ b/modules/home/users/crumb/emacs/snippets/bibtex-mode/.yas-setup.el @@ -0,0 +1,27 @@ +;;; .yas-setup.el -*- lexical-binding: t; -*- + +(require 'dash) +(require 's) + +(defun snippet-bibtex--make-id () + (let ((surname (--> (or (yas-field-value 2) + "surname") + (s-downcase it) + (string-to-list it) + (-take-while (lambda (x) (/= x ?,)) it) + (-filter (lambda (x) (not (memq x '(?- ?\s)))) it) + (apply #'string it))) + (year (--> (or (yas-field-value 3) + "1234") + (string-to-list it) + (-take-while (lambda (x) (<= ?0 x ?9)) it) + (apply #'string it))) + (keyword (or (-some--> (or (yas-field-value 1) + "keyword") + (s-downcase it) + (s-split-words it) + (-find (lambda (x) + (not (member x '("the" "on" "of" "a" "when")))) + it)) + "keyword"))) + (concat surname year keyword))) diff --git a/modules/home/users/crumb/emacs/snippets/bibtex-mode/@art b/modules/home/users/crumb/emacs/snippets/bibtex-mode/@art new file mode 100644 index 0000000..82dc38b --- /dev/null +++ b/modules/home/users/crumb/emacs/snippets/bibtex-mode/@art @@ -0,0 +1,13 @@ +# -*- mode: snippet -*- +# name: Article +# uuid: +# key: @art +# condition: t +# -- +@article{${1:$(snippet-bibtex--make-id)} +, title = {${1:Principia Mathematica}} +, author = {${2:of Sinope, Diogenes}} +, year = {${3:1992}} +, url = {${4:https://example.com/}} +, urldate = {${5:`(format-time-string "%Y-%m-%d")`}} +} \ No newline at end of file diff --git a/modules/home/users/crumb/emacs/snippets/haskell-mode/foreign b/modules/home/users/crumb/emacs/snippets/haskell-mode/foreign new file mode 100644 index 0000000..03200bd --- /dev/null +++ b/modules/home/users/crumb/emacs/snippets/haskell-mode/foreign @@ -0,0 +1,9 @@ +# -*- mode: snippet -*- +# name: foreign +# uuid: haskell-foreign +# key: foreign +# condition: t +# -- + +foreign import ccall unsafe "src/bridge.c $1" + $1 :: $2 \ No newline at end of file diff --git a/modules/home/users/crumb/emacs/snippets/nix-mode/__module b/modules/home/users/crumb/emacs/snippets/nix-mode/__module new file mode 100644 index 0000000..d53a81e --- /dev/null +++ b/modules/home/users/crumb/emacs/snippets/nix-mode/__module @@ -0,0 +1,21 @@ +# -*- mode: snippet -*- +# name: Nix module +# uuid: +# key: __module +# condition: t +# expand-env: ((yas-indent-line 'fixed) (yas-wrap-around-region 'nil) (this-current-file-name (file-name-base (buffer-file-name (current-buffer))))) +# -- +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.${1:`this-current-file-name`}; +in { + options.$1 = { + enable = mkEnableOption "$2"; + }; + + config = mkIf cfg.enable { + $3 + }; +} \ No newline at end of file diff --git a/modules/home/users/crumb/emacs/snippets/nix-mode/enable b/modules/home/users/crumb/emacs/snippets/nix-mode/enable new file mode 100644 index 0000000..48df96a --- /dev/null +++ b/modules/home/users/crumb/emacs/snippets/nix-mode/enable @@ -0,0 +1,7 @@ +# -*- mode: snippet -*- +# name: enable +# uuid: +# key: enable +# condition: t +# -- +enable = lib.mkEnableOption "$1"; \ No newline at end of file diff --git a/modules/home/users/crumb/firefox.nix b/modules/home/users/crumb/firefox.nix index 2091b4d..bb10529 100644 --- a/modules/home/users/crumb/firefox.nix +++ b/modules/home/users/crumb/firefox.nix @@ -100,7 +100,22 @@ in { }; profiles."msyds" = { - bookmarks = []; + bookmarks = { + force = true; + settings = [ + { + name = "Nix"; + toolbar = true; + bookmarks = [ + { + name = "Home-manager options"; + tags = [ "nix" "docs" ]; + url = "https://nix-community.github.io/home-manager/options.xhtml"; + } + ]; + } + ]; + }; # Check about:support for extension/add-on ID strings. extensions = { @@ -186,9 +201,9 @@ in { # Override non-declared settings. force = true; # Precedence of search engines. - order = [ "Kagi" "DuckDuckGo" ]; + order = [ "Kagi" "ddg" ]; default = "Kagi"; - privateDefault = "DuckDuckGo"; + privateDefault = "ddg"; engines = { "Kagi" = { urls = [{ @@ -198,6 +213,18 @@ in { ]; }]; }; + "Nixopts" = { + urls = [{ + template = "https://search.nixos.org/options"; + params = [ + { name = "channel"; value = "unstable"; } + { name = "query"; value = "{searchTerms}"; } + ]; + }]; + icon = + "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + definedAliases = [ "!no" ]; + }; "Nixpkgs" = { urls = [{ template = "https://search.nixos.org/packages"; diff --git a/modules/home/users/crumb/mpd.nix b/modules/home/users/crumb/mpd.nix index 0db09cc..c7d71ae 100644 --- a/modules/home/users/crumb/mpd.nix +++ b/modules/home/users/crumb/mpd.nix @@ -14,26 +14,27 @@ in { sydnix.mpd = { enable = true; - scrobbling.endpoints = { - "last.fm" = { - passwordFile = - "/home/crumb/.config/sops-nix/secrets/lastfm-password"; - username = "crumb1"; - }; - "libre.fm" = { - passwordFile = - "/home/crumb/.config/sops-nix/secrets/librefm-password"; - username = "crumbtoo"; + discord.enable = true; + scrobbling = { + enable = true; + endpoints = { + "last.fm" = { + passwordFile = + "/home/crumb/.config/sops-nix/secrets/lastfm-password"; + username = "crumb1"; + }; + "libre.fm" = { + passwordFile = + "/home/crumb/.config/sops-nix/secrets/librefm-password"; + username = "crumbtoo"; + }; }; }; }; - # mpdscribble uses our password files, so it is imperative that the service + # Mpdscribble uses our password files, so it is imperative that the service # runs only after said password files are brought into existence. }:) - systemd.user.services.mpdscribble.Unit = { - After = [ "sops-nix.service" ]; - WantedBy = [ "mpd.service" ]; - }; + # systemd.user.services.mpdscribble.Unit.After = [ "sops-nix.service" ]; }; } diff --git a/modules/home/users/crumb/niri.nix b/modules/home/users/crumb/niri.nix index f69982e..d459e7a 100644 --- a/modules/home/users/crumb/niri.nix +++ b/modules/home/users/crumb/niri.nix @@ -21,7 +21,7 @@ in { config = lib.mkIf cfg.enable { stylix.targets.swaylock.enable = true; - + programs.niri = { # Activates some Nixpkgs patches to help run Electron applications under # Wayland. @@ -57,7 +57,7 @@ in { layout = { gaps = 8; # center-focused-column = "always"; - center-focused-column = "on-overflow"; + center-focused-column = "never"; preset-column-widths = [ { proportion = 1.0 / 3.0; } { proportion = 1.0 / 2.0; } @@ -91,6 +91,12 @@ in { size = 24; }; window-rules = [ + { + matches = [ + { title = "Element.*wishdir"; } + ]; + block-out-from = "screen-capture"; + } { # This regular expression is intentionally made as specific as # possible, since this is the default config, and we want no false diff --git a/modules/nixos/niri.nix b/modules/nixos/niri.nix index 6fd22fa..29d72d4 100644 --- a/modules/nixos/niri.nix +++ b/modules/nixos/niri.nix @@ -8,6 +8,24 @@ in { config = lib.mkIf cfg.enable { programs.niri.enable = true; + + # Necessary for e.g. screensharing. + xdg.portal = { + enable = true; + # See https://github.com/YaLTeR/niri/wiki/Important-Software#portals. + # Niri's NixOS module appears to automatically bring in + # xdg-desktop-portal-gnome and gnome-keyring. + extraPortals = [ + pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-wlr + ]; + xdgOpenUsePortal = true; + config.preferred = { + default = [ "gtk" ]; + "org.freedesktop.impl.portal.Screenshot" = [ "wlr" ]; + "org.freedesktop.impl.portal.ScreenCast" = [ "wlr" ]; + }; + }; }; } diff --git a/modules/nixos/qemu.nix b/modules/nixos/qemu.nix new file mode 100644 index 0000000..39b0477 --- /dev/null +++ b/modules/nixos/qemu.nix @@ -0,0 +1,29 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let cfg = config.sydnix.qemu; +in { + options.sydnix.qemu = { + enable = mkEnableOption "Qemu"; + }; + + config = mkIf cfg.enable + (let + # Necessary for UEFI boot with libvirt. + qemu-uefi = pkgs.writeShellScriptBin "qemu-system-x86_64-uefi" '' + qemu-system-x86_64 \ + -bios ${pkgs.OVMF.fd}/FV/OVMF.fd \ + "$@" + ''; + in { + programs.virt-manager.enable = true; + + environment.systemPackages = [ + pkgs.virtiofsd + qemu-uefi + ]; + + virtualisation.libvirtd.enable = true; + }); +} diff --git a/modules/nixos/stylix.nix b/modules/nixos/stylix.nix index 33ef41c..a2d98d1 100644 --- a/modules/nixos/stylix.nix +++ b/modules/nixos/stylix.nix @@ -1,4 +1,3 @@ - { config, lib, pkgs, ... }: let