diff --git a/.helix/languages.toml b/.helix/languages.toml index 5dd999ea..29fc7109 100644 --- a/.helix/languages.toml +++ b/.helix/languages.toml @@ -1,6 +1,11 @@ -[language-server.nil] -command = "nil" +[language-server.nixd] +command = "nixd" +# args = ["--log=debug"] +[language-server.nixd.config.nixd] +nixpkgs = { expr = "import (builtins.getFlake (builtins.toString ./.)).inputs.nixpkgs { }" } +options = { nixos = { expr = "(builtins.getFlake (builtins.toString ./.)).colmenaHive.nodes.theseus.options" }}#, home-manager = { expr = "(builtins.getFlake (builtins.toString ./.)).colmenaHive.nodes.theseus.options.home-manager.users.type.getSubOptions []" } } + [[language]] name = "nix" formatter = {command = "nixfmt"} -language-servers = [ "nil" ] +language-servers = [ "nixd" ] diff --git a/flake.lock b/flake.lock index 7a14a408..5dc1dfab 100644 --- a/flake.lock +++ b/flake.lock @@ -16,11 +16,11 @@ "uv2nix": "uv2nix" }, "locked": { - "lastModified": 1759322529, - "narHash": "sha256-yiv/g/tiJI3PI95F7vhTnaf1TDsIkFLrmmFTjWfb6pQ=", + "lastModified": 1761726959, + "narHash": "sha256-SGndrZx7I0z4vITH1Arf60OTSfkQVMZRTcRgtPIBVtg=", "owner": "nix-community", "repo": "authentik-nix", - "rev": "69fac057b2e553ee17c9a09b822d735823d65a6c", + "rev": "ea1e06f9fe7cbf59c61b2ec4f2979801ff395d8e", "type": "github" }, "original": { @@ -138,11 +138,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1756770412, - "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", + "lastModified": 1760948891, + "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "4524271976b625a4a605beefd893f270620fd751", + "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04", "type": "github" }, "original": { @@ -277,11 +277,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1761141169, - "narHash": "sha256-5IZjbTvP5dNTD8CbEYlNbicdGcbCN9SC9ksMm2ZEXH0=", + "lastModified": 1762101621, + "narHash": "sha256-LEzstw3bcMYdOo12SwjTmUV0jfEKGbxleHllW1yHMx4=", "owner": "helix-editor", "repo": "helix", - "rev": "d79cce4e4bfc24dd204f1b294c899ed73f7e9453", + "rev": "7895719e5c3299a408bac461437c5040849f430b", "type": "github" }, "original": { @@ -297,11 +297,11 @@ ] }, "locked": { - "lastModified": 1761191301, - "narHash": "sha256-xsRL2Oyb4YRZZ1Tu4WzR2uFg1n931bH+PfLdFcqtLg8=", + "lastModified": 1762178366, + "narHash": "sha256-I+8yE5HVR2SFcHnW0771psQ/zn0qVzsKHY/gUM0nEVM=", "owner": "nix-community", "repo": "home-manager", - "rev": "4958aafe7b237dc1e857fb0c916efff72075048f", + "rev": "8c824254b1ed9e797f6235fc3c62f365893c561a", "type": "github" }, "original": { @@ -378,7 +378,9 @@ "nixpkgs" ], "pre-commit-hooks-nix": "pre-commit-hooks-nix", - "rust-overlay": "rust-overlay_2" + "rust-overlay": [ + "rust-overlay" + ] }, "locked": { "lastModified": 1737639419, @@ -398,11 +400,11 @@ "mobile-nixos": { "flake": false, "locked": { - "lastModified": 1759261417, - "narHash": "sha256-TjuoBb8+isL3KTdGgtYh90XPyeUMFbgNAOG9l23CB3A=", + "lastModified": 1761853569, + "narHash": "sha256-miiMKVgC2WVi4ItD8rWD0ngou5WicEDAuZGhI0TfEIw=", "owner": "mobile-nixos", "repo": "mobile-nixos", - "rev": "e6f6d527bf6abf94dd52fbba3143a720cef96431", + "rev": "1e38d4027bbb944f2af1b3241eabd9ad9c950c84", "type": "github" }, "original": { @@ -456,11 +458,11 @@ "nheko": { "flake": false, "locked": { - "lastModified": 1757886200, - "narHash": "sha256-FU73Pb47e6Q0qEAJcxDVhVLmL+hJ4gXvssRD9NcUNkM=", + "lastModified": 1762138523, + "narHash": "sha256-93M4T6peRRMq0uL0X955+N0KnU1t/0AAyVQ/TV2zpQs=", "owner": "Nheko-Reborn", "repo": "nheko", - "rev": "2769642d3c7bd3c0d830b2f18ef6b3bf6a710bf4", + "rev": "1bd2970c4dd69daa87d906f63d869d56cf5d4915", "type": "github" }, "original": { @@ -474,14 +476,14 @@ "nixpkgs": [ "nixpkgs-master" ], - "rust-overlay": "rust-overlay_3" + "rust-overlay": "rust-overlay_2" }, "locked": { - "lastModified": 1760940149, - "narHash": "sha256-KbM47vD6E0cx+v4jYQZ8mD5N186AKm2CQlyh34TW58U=", + "lastModified": 1762146685, + "narHash": "sha256-anRlNG6t7esBbF1+ALDeathVBSclA0PEL52Vo0WnN5g=", "owner": "YaLTeR", "repo": "niri", - "rev": "b3245b81a6ed8edfaf5388a74d2e0a23c24941e5", + "rev": "a2ca2b3c866bc781b12c334a9f949b3db6d7c943", "type": "github" }, "original": { @@ -495,7 +497,7 @@ "nixpkgs": [ "nixpkgs" ], - "rust-overlay": "rust-overlay_4" + "rust-overlay": "rust-overlay_3" }, "locked": { "lastModified": 1760113386, @@ -518,11 +520,11 @@ ] }, "locked": { - "lastModified": 1760846226, - "narHash": "sha256-xmU8kAsRprJiTGBTaGrwmjBP3AMA9ltlrxHKFuy5JWc=", + "lastModified": 1762055842, + "narHash": "sha256-Pu1v3mlFhRzZiSxVHb2/i/f5yeYyRNqr0RvEUJ4UgHo=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "5024e1901239a76b7bf94a4cd27f3507e639d49e", + "rev": "359ff6333a7b0b60819d4c20ed05a3a1f726771f", "type": "github" }, "original": { @@ -533,11 +535,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1760958188, - "narHash": "sha256-2m1S4jl+GEDtlt2QqeHil8Ny456dcGSKJAM7q3j/BFU=", + "lastModified": 1761933221, + "narHash": "sha256-rNHeoG3ZrA94jczyLSjxCtu67YYPYIlXXr0uhG3wNxM=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "d6645c340ef7d821602fd2cd199e8d1eed10afbc", + "rev": "7467f155fcba189eb088a7601f44fbef7688669b", "type": "github" }, "original": { @@ -549,11 +551,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1761114652, - "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", + "lastModified": 1761907660, + "narHash": "sha256-kJ8lIZsiPOmbkJypG+B5sReDXSD1KGu2VEPNqhRa/ew=", "owner": "nixos", "repo": "nixpkgs", - "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", + "rev": "2fb006b87f04c4d3bdf08cfdbc7fab9c13d94a15", "type": "github" }, "original": { @@ -580,11 +582,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1761228883, - "narHash": "sha256-8jKkT4Yc8I/PnDczaD9diDcJkckwP7WAstQcYbMSo4s=", + "lastModified": 1762178406, + "narHash": "sha256-slFOJNvXh2Zx9hK2MIt1Ftv58l8CLNB3aRc7/dheECk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "0cfbb4d10f6e813e6e9750fbf5396747cf3b6212", + "rev": "85707117647f95fa34842965fcd534a7e882918b", "type": "github" }, "original": { @@ -653,11 +655,11 @@ ] }, "locked": { - "lastModified": 1757296493, - "narHash": "sha256-6nzSZl28IwH2Vx8YSmd3t6TREHpDbKlDPK+dq1LKIZQ=", + "lastModified": 1759113590, + "narHash": "sha256-fgxP2RCN4cg0jYiMYoETYc7TZ2JjgyvJa2y9l8oSUFE=", "owner": "pyproject-nix", "repo": "build-system-pkgs", - "rev": "5b8e37fe0077db5c1df3a5ee90a651345f085d38", + "rev": "dbfc0483b5952c6b86e36f8b3afeb9dde30ea4b5", "type": "github" }, "original": { @@ -674,11 +676,11 @@ ] }, "locked": { - "lastModified": 1757246327, - "narHash": "sha256-6pNlGhwOIMfhe/RLjHdpXveKS4FyLHvlGe+KtjDild4=", + "lastModified": 1760402624, + "narHash": "sha256-jF6UKLs2uGc2rtved8Vrt58oTWjTQoAssuYs/0578Z4=", "owner": "pyproject-nix", "repo": "pyproject.nix", - "rev": "8d77f342d66ad1601cdb9d97e9388b69f64d4c8e", + "rev": "84c4ea102127c77058ea1ed7be7300261fafc7d2", "type": "github" }, "original": { @@ -705,6 +707,7 @@ "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", "nixpkgs-master": "nixpkgs-master", + "rust-overlay": "rust-overlay_4", "sops-nix": "sops-nix", "terranix": "terranix", "xwayland-satellite": "xwayland-satellite", @@ -733,27 +736,6 @@ } }, "rust-overlay_2": { - "inputs": { - "nixpkgs": [ - "lanzaboote", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1731897198, - "narHash": "sha256-Ou7vLETSKwmE/HRQz4cImXXJBr/k9gp4J4z/PF8LzTE=", - "owner": "oxalica", - "repo": "rust-overlay", - "rev": "0be641045af6d8666c11c2c40e45ffc9667839b5", - "type": "github" - }, - "original": { - "owner": "oxalica", - "repo": "rust-overlay", - "type": "github" - } - }, - "rust-overlay_3": { "inputs": { "nixpkgs": [ "niri", @@ -774,7 +756,7 @@ "type": "github" } }, - "rust-overlay_4": { + "rust-overlay_3": { "inputs": { "nixpkgs": [ "nix-ci", @@ -795,6 +777,26 @@ "type": "github" } }, + "rust-overlay_4": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1762137611, + "narHash": "sha256-sTqb10FR/YQCuGbw16qxliX0NFlYg6evSEjN8w+9IYE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "3a0ebe5d2965692f990cb27e62f501ad35e3deeb", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "rust-overlay_5": { "inputs": { "nixpkgs": [ @@ -906,11 +908,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1757278723, - "narHash": "sha256-hTMi6oGU+6VRnW9SZZ+muFcbfMEf2ajjOp7Z2KM5MMY=", + "lastModified": 1762161791, + "narHash": "sha256-J1L1yP29NVBJO04LA/JGM6kwhnjeNhEsX0tLFnuN3FI=", "owner": "terranix", "repo": "terranix", - "rev": "924573fa6587ac57b0d15037fbd2d3f0fcdf17fb", + "rev": "a79a47b4617dfb92184e2e5b8f5aa6fc06c659c8", "type": "github" }, "original": { @@ -931,11 +933,11 @@ ] }, "locked": { - "lastModified": 1757925761, - "narHash": "sha256-7Hwz0vfHuFqCo5v7Q07GQgLBWuPvZCuf/5/pk4NoADg=", + "lastModified": 1761101082, + "narHash": "sha256-4Kt3RsfJgg6HzmDCc44ZN//xB8n7KGEGxxt9dNjqPQc=", "owner": "pyproject-nix", "repo": "uv2nix", - "rev": "780494c40895bb7419a73d942bee326291e80b3b", + "rev": "e6e728d9719e989c93e65145fe3f9e0c65a021a2", "type": "github" }, "original": { @@ -953,11 +955,11 @@ "rust-overlay": "rust-overlay_5" }, "locked": { - "lastModified": 1761173223, - "narHash": "sha256-FumZh+fPRaKXkl9Y1uTh5KV7Io/AyOZso+UkqLhLArs=", + "lastModified": 1761622056, + "narHash": "sha256-fBrUszJXmB4MY+wf3QsCnqWHcz7u7fLq0QMAWCltIQg=", "owner": "Supreeeme", "repo": "xwayland-satellite", - "rev": "bf745144acda1343934e9a094cf9458a54d57889", + "rev": "0728d59ff6463a502e001fb090f6eb92dbc04756", "type": "github" }, "original": { @@ -974,11 +976,11 @@ ] }, "locked": { - "lastModified": 1761180075, - "narHash": "sha256-V4WLeUQ4gCGZiVihlXWBOZ/1FNcL0jM4zgTY1haJLvY=", + "lastModified": 1762131860, + "narHash": "sha256-sIPhzkDrfe6ptthZiwoxQyO6rKd9PgJnl+LOyythQkI=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "771a2604606905d8c0ffe3b818dc2cc5bd1405d8", + "rev": "10e69cb268b1d3dc91135e72f5462b2acfbcc3aa", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 3f8f6c0a..6e9f09ca 100644 --- a/flake.nix +++ b/flake.nix @@ -16,11 +16,16 @@ colmena.inputs.nixpkgs.follows = "nixpkgs"; # software + rust-overlay = { # https://github.com/nix-community/lanzaboote/issues/485#issuecomment-3466684727 + url = "github:oxalica/rust-overlay"; + inputs.nixpkgs.follows = "nixpkgs"; + }; lanzaboote = { url = "github:nix-community/lanzaboote/v0.4.2"; # Optional but recommended to limit the size of your system closure. inputs.nixpkgs.follows = "nixpkgs"; + inputs.rust-overlay.follows = "rust-overlay"; }; zen-browser.url = "github:0xc000022070/zen-browser-flake"; @@ -113,11 +118,19 @@ importConfigs = n: map (x: { - ${x} = {nodes, ...}: { - networking.hostName = x; - imports = modules ++ [ (./instances/${x}) ]; - _module.args.otherNodes = lib.filterAttrs (n: v: n != x) nodes; - }; + ${x} = + { nodes, pkgs, ... }: + { + nixpkgs.overlays = overlays; + nix.package = pkgs.unstable.lixPackageSets.latest.lix; + networking.hostName = x; + imports = modules ++ [ (./instances/${x}) ]; + _module.args.otherNodes = lib.filterAttrs (n: v: n != x) nodes; + deployment.privilegeEscalationCommand = [ + "run0" + "--unit=colmena-apply" + ]; + }; }) n; in lib.foldl' lib.recursiveUpdate { } ( @@ -130,10 +143,6 @@ specialArgs = { inherit inputs; }; nixpkgs = genPkgs "x86_64-linux"; }; - deployment.privilegeEscalationCommand = [ - "run0" - "--unit=colmena-apply" - ]; } (importConfigs [ "ds9" @@ -178,6 +187,7 @@ devShells.${system}.default = pkgs.mkShell { packages = [ pkgs.nixfmt-rfc-style + pkgs.nixd pkgs.nil pkgs.sops (pkgs.runCommand "nix-config-bin" { } '' diff --git a/hm-modules/dark-theme.nix b/hm-modules/dark-theme.nix index de020bd2..880bdf86 100644 --- a/hm-modules/dark-theme.nix +++ b/hm-modules/dark-theme.nix @@ -23,10 +23,10 @@ in gtk4.extraConfig.gtk-application-prefer-dark-theme = 1; gtk3.extraConfig.gtk-application-prefer-dark-theme = 1; }; - qt = { - enable = true; - style.name = "breeze"; - }; + # qt = { + # enable = true; + # style.name = "breeze"; + # }; }; } diff --git a/hm-modules/firefox.nix b/hm-modules/firefox.nix index a930af34..6fc04d5b 100644 --- a/hm-modules/firefox.nix +++ b/hm-modules/firefox.nix @@ -362,7 +362,7 @@ in "user-filters" = ''marketplace.visualstudio.com##+js(rpnt, script, /"(DisableVSCodeDownloadButtonEnabled|Microsoft\\.VisualStudio\\.Services\\.Gallery\\.DisableVSCodeDownloadButton)":true/, "$1":false)''; "hostnameSwitchesString" = - "no-large-media: behind-the-scene false\nno-remote-fonts: * true\nno-csp-reports: * true"; + "no-large-media: behind-the-scene false\nno-remote-fonts: * false\nno-csp-reports: * true"; }; }; diff --git a/hm-modules/git.nix b/hm-modules/git.nix index bf999b94..41076a40 100644 --- a/hm-modules/git.nix +++ b/hm-modules/git.nix @@ -9,13 +9,14 @@ in { options.xyno.git.enable = lib.mkEnableOption "xynos git config"; config = lib.mkIf cfg.enable { + programs.difftastic.git.enable = true; + programs.difftastic.enable = true; programs.git = { enable = true; - difftastic.enable = true; lfs.enable = true; # Default configs - extraConfig = { + settings = { commit.gpgSign = true; gpg.format = "ssh"; diff --git a/hm-modules/helix.nix b/hm-modules/helix.nix index a123f96a..13a3ca50 100644 --- a/hm-modules/helix.nix +++ b/hm-modules/helix.nix @@ -22,20 +22,21 @@ in # nodePackages_latest.prettier dprint markdown-oxide - codebook + # codebook ## python # ruff-lsp # nodePackages_latest.pyright # inputs.csharp-language-server.packages.${pkgs.system}.csharp-language-server ] ++ (optionals cfg.withLargeLSPs [ - netcoredbg nodePackages_latest.typescript-language-server nodePackages_latest.vscode-langservers-extracted typescript # jsonnet-language-server # jsonnet lazygit + ltex-ls-plus # languagetool + tinymist # typst lsp ]); programs.helix = { @@ -107,8 +108,7 @@ in keys = { normal = { space."=" = ":fmt"; - "C-g" = - ":sh tmux popup -d \"#{pane_current_path}\" -xC -yC -w80%% -h80%% -E lazygit"; + "C-g" = ":sh tmux popup -d \"#{pane_current_path}\" -xC -yC -w80%% -h80%% -E lazygit"; "C-t" = ":sh tmux split-window -v -l '35%%'"; "C-h" = ":sh tmux select-pane -t '{left-of}'"; "C-l" = ":sh tmux select-pane -t '{right-of}'"; @@ -143,55 +143,143 @@ in language-server.csharp = { command = "csharp-language-server"; }; - language-server.codebook = { - command = "codebook-lsp"; - args = ["serve"]; - }; - language = flatten [ - (map - (x: { - name = x; - language-servers = [ - "typescript-language-server" - "eslint" - ]; - #formatter = { command = "dprint"; args = [ "fmt" "--stdin" x ]; }; - # formatter = { command = "prettier"; args = [ "--parser" "typescript" ]; }; - }) - [ - "typescript" - "javascript" - "jsx" - "tsx" - ] - ) - { - name = "nix"; - formatter = { - command = "nixpkgs-fmt"; - }; - } - { - name = "python"; - language-servers = [ - "pyright" - "ruff" + language-server.ltex = { + command = "ltex-ls-plus"; + config = { + additionalRules.motherTongue = "de-DE"; + additionalRules.enablePickyRules = true; + language = [ + "en-US" + "de-DE" ]; - } - { - name = "markdown"; - language-servers = ["codebook"]; - } - { - name = "c-sharp"; - language-servers = [ "csharp" ]; - formatter = { - command = "dotnet"; - args = [ "csharpier" ]; - }; + }; + }; + language-server.tinymist = { + command = "tinymist"; + }; + # language-server.nil = { + # command = "nil"; + # config.nil.nix = { + # maxMemoryMB = 5120; + # flake = { + # autoEvalInputs = true; + # autoArchive = true; + # }; + # }; + # }; + language = + let + applySingleConfig = + languages: config: + let + applied = + foldl' + ( + acc: l: + if (any (x: l.name == x) config.languages) then + { + done = acc.done ++ [ + (mkMerge [ + l + config.conf + ]) + ]; + notFound = filter (x: x != l.name) acc.notFound; + } + else + { + done = acc.done ++ [ l ]; + notFound = acc.notFound; + } + ) + { + done = [ ]; + notFound = config.languages; + } + languages; + in + applied.done ++ (map (x: { name = x; } // config.conf) applied.notFound); + applyConfs = lspConfs: languages: foldl' applySingleConfig languages lspConfs; + in + applyConfs + [ + { + languages = [ + "typescript" + "javascript" + "jsx" + "tsx" + ]; + conf = { + language-servers = [ + "typescript-language-server" + "eslint" + ]; + }; + } + { + languages = [ + "markdown" + "typst" + "bibtex" + "comment" + "latex" + "html" + ]; + conf = { + language-servers = [ + "ltex" + ]; + }; + } + ] + [ + { + name = "__common__"; + scope = "source.__common__"; + file-types = [ ]; + language-servers = [ + "ltex" + ]; + } + # { + # name = "nix"; + # language-servers = [ + # "nixd" + # ]; + # formatter = { + # command = "nixpkgs-fmt"; + # }; + # } + { + name = "python"; + language-servers = [ + "pyright" + "ruff" + ]; + } + { + name = "markdown"; + language-servers = [ + "markdown-oxide" + ]; + } + { + name = "typst"; + language-servers = [ + "tinymist" + ]; + } + { + name = "c-sharp"; + language-servers = [ "csharp" ]; + formatter = { + command = "dotnet"; + args = [ "csharpier" ]; + }; - } - ]; + } + ]; }; }; }; diff --git a/hm-modules/mpv.nix b/hm-modules/mpv.nix index 852657d7..7f37504b 100644 --- a/hm-modules/mpv.nix +++ b/hm-modules/mpv.nix @@ -14,6 +14,11 @@ in programs.mpv = { enable = true; scripts = with pkgs.mpvScripts; [ mpv-webm sponsorblock ]; + config = { + profile = "gpu-hq"; + ytdl-format = "bestvideo[width<=1920]+bestaudio"; + cache-secs = 1200; + }; }; }; diff --git a/instances/theseus/configuration.nix b/instances/theseus/configuration.nix index 96d46ee9..2401fbab 100644 --- a/instances/theseus/configuration.nix +++ b/instances/theseus/configuration.nix @@ -48,7 +48,7 @@ in pandoc tectonic rquickshare - supersonic-wayland + unstable.supersonic-wayland nheko anki-bin gimp3 @@ -64,14 +64,15 @@ in time.timeZone = "Europe/Berlin"; - # orcaslicer networking.firewall.allowedTCPPorts = [ 1880 2021 + 4711 ]; networking.firewall.allowedUDPPorts = [ 1880 + 5353 2021 ]; diff --git a/instances/theseus/hardware-configuration.nix b/instances/theseus/hardware-configuration.nix index 8f595bdc..acfbaa6b 100644 --- a/instances/theseus/hardware-configuration.nix +++ b/instances/theseus/hardware-configuration.nix @@ -16,7 +16,7 @@ "${inputs.nixos-hardware}/framework/13-inch/7040-amd" ]; hardware.framework.laptop13.audioEnhancement.enable = true; - # hardware.framework.laptop13.audioEnhancement.hideRawDevice = false; + hardware.framework.laptop13.audioEnhancement.hideRawDevice = false; services.fwupd.enable = true; boot.initrd.availableKernelModules = [ diff --git a/modules/desktop/audio.nix b/modules/desktop/audio.nix index 76cc1351..0d4d61ba 100644 --- a/modules/desktop/audio.nix +++ b/modules/desktop/audio.nix @@ -229,9 +229,39 @@ in ]; }; }; + configPackages = [ + (pkgs.writeTextDir "share/pipewire/pipewire.conf.d/snapcast-discover.conf" '' + context.modules = [ + { + name = libpipewire-module-snapcast-discover + args = { + snapcast.discover-local = true + stream.rules = [ + { + matches = [ + { + snapcast.ip = "~.*" + } + ] + actions = { + create-stream = { + # node.name = "Snapcast" + # snapcast.stream-name = "default" + } + } + } + ] + } + } +] + + '') + + ]; wireplumber.extraConfig."98-bluetooth"."wireplumber.settings"."bluetooth.autoswitch-to-headset-profile" = false; - wireplumber.configPackages = mapAttrsToList (n: v: eqPkg v) cfg.eq; + wireplumber.configPackages = mapAttrsToList (n: v: eqPkg v) cfg.eq ++ [ + ]; }; }; diff --git a/modules/desktop/fcitx5.nix b/modules/desktop/fcitx5.nix deleted file mode 100644 index b57073f8..00000000 --- a/modules/desktop/fcitx5.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: -let - cfg = config.xyno.desktop.fcitx5; -in -{ - options.xyno.desktop.fcitx5.enable = lib.mkEnableOption "enable fcitx5 input daemon thing"; - config = lib.mkIf cfg.enable { - i18n.inputMethod = { - type = "fcitx5"; - enable = true; - fcitx5.addons = with pkgs; [ - fcitx5-table-other - ]; - fcitx5.waylandFrontend = true; - fcitx5.quickPhrase = { - ":pleading:" = "🥺"; - ":pointing_right:" = "👉"; - ":pointing_left:" = "👈"; - }; - }; - }; -} diff --git a/modules/desktop/ibus.nix b/modules/desktop/ibus.nix new file mode 100644 index 00000000..c9e6beff --- /dev/null +++ b/modules/desktop/ibus.nix @@ -0,0 +1,81 @@ +{ + pkgs, + config, + lib, + ... +}: +with lib; +let + cfg = config.xyno.desktop.ibus; +in +{ + options.xyno.desktop.ibus.enable = mkEnableOption "enable ibus input daemon thing"; + options.xyno.desktop.ibus.wantedBy = mkOption { + type = types.str; + default = "niri.service"; + }; + config = mkIf cfg.enable { + services.libinput.enable = true; + + # just... enable ibus as input method and maybe now we have consistent unicode input everywhere + # fuck qt tbh + i18n.inputMethod = { + enable = true; + package = pkgs.ibus-patched; + # ibus.engines = with pkgs.ibus-engines; [ uniemoji ]; + }; + # home-manager.sharedModules = [ + # ( + # { lib, ... }: + # { + # dconf.settings = { + # "org/gnome/desktop/input-sources" = { + # sources = [ + # (lib.hm.gvariant.mkTuple [ + # "xkb" + # "us" + # ]) + # (lib.hm.gvariant.mkTuple [ + # "ibus" + # "libpinyin" + # ]) + # (lib.hm.gvariant.mkTuple [ + # "ibus" + # "mozc-jp" + # ]) + # ]; + # }; + # }; + # } + # ) + # ]; + + systemd.user.services."org.freedesktop.IBus.session.generic".wantedBy = [ cfg.wantedBy ]; + systemd.packages = [ pkgs.ibus-patched ]; + # systemd.user.services.ibus = + # let + # ibusPackage = config.i18n.inputMethod.package; + # in + # assert hasPrefix "ibus-with-plugins" ibusPackage.name; + # { + # # panel is weird... + # # default is ${ibusPackage}/libexec/ibus-ui-gtk3 which works but sends a notification that it's misconfigured + # # wayland support can be enabled with --enable-wayland-im but that segfaults (possible due to zwp_input_method_v1 not being available?) + # script = '' + # exec ${ibusPackage}/bin/ibus-daemon --xim --replace --panel '${ibusPackage}/libexec/ibus-ui-gtk3' + # ''; + # serviceConfig = { + # Type = "dbus"; + # BusName = "org.freedesktop.IBus"; + # Restart = "on-abnormal"; + # }; + # unitConfig = { + # CollectMode = "inactive-or-failed"; + # }; + # # yeah we hardcoding this now, fuck it + # wantedBy = [ cfg.wantedBy ]; + # partOf = [ "graphical-session.target" ]; + # }; + + }; +} diff --git a/modules/desktop/niri.nix b/modules/desktop/niri.nix index f93e1d31..4f3fbce5 100644 --- a/modules/desktop/niri.nix +++ b/modules/desktop/niri.nix @@ -14,6 +14,8 @@ let "KeePassXC" "org.gnome.NautilusPreviewer" "io.github.Qalculate.qalculate-qt" + "ibus-ui-emojier" + "ibus-ui-gtk3" ]; matchFloat = concatStringsSep "\n" ( map (x: '' @@ -52,20 +54,22 @@ in value = 1; } ]; - home-manager.users.${config.xyno.system.user.name} = mkIf config.xyno.presets.home-manager.enable ( - { ... }: - { - xyno.dark-theme.enable = true; - # home.file.".config/xdg-desktop-portal-termfilechooser/config".text = '' - # [filechooser] - # cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh - # default_dir=$HOME - # env=TERMCMD=footclient --app-id floating-alacritty - # open_mode = suggested - # save_mode = suggested - # ''; - } - ); + home-manager.sharedModules = [ + ( + { ... }: + { + xyno.dark-theme.enable = true; + # home.file.".config/xdg-desktop-portal-termfilechooser/config".text = '' + # [filechooser] + # cmd=${pkgs.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh + # default_dir=$HOME + # env=TERMCMD=footclient --app-id floating-alacritty + # open_mode = suggested + # save_mode = suggested + # ''; + } + ) + ]; xdg.portal = { extraPortals = [ @@ -88,7 +92,16 @@ in environment.systemPackages = with pkgs; [ playerctl xwayland-satellite + nirius ]; + systemd.user.services.niriusd = { + unitConfig.PartOf = "graphical-session.target"; + unitConfig.After = "graphical-session.target"; + unitConfig.Requisite = "graphical-session.target"; + serviceConfig.Restart = "on-failure"; + wantedBy = [ "niri.service" ]; + script = "exec ${pkgs.nirius}/bin/niriusd"; + }; programs.niri.enable = true; environment.etc."niri/config.kdl".mode = "444"; # copy file so niri detects changes environment.etc."niri/config.kdl".text = '' @@ -105,11 +118,15 @@ in Mod+T { spawn "${cfg.term}" "tmux" "new-session" "-t" "main"; } Mod+Shift+T { spawn "${cfg.term}"; } Mod+Y { spawn "${cfg.term}" "--app-id" "floating-alacritty" "-W" "120x37" "yazi"; } + Mod+Shift+M { spawn "sh" "-c" "notify-send -t 3000 -a umpv umpv-paste $(wl-paste); umpv $(wl-paste)"; } Mod+P { spawn "keepassxc"; } Mod+S { spawn "qalculate-qt"; } Mod+Shift+N { spawn "makoctl" "dismiss" "-a"; } Mod+N { spawn "makoctl" "dismiss"; } Mod+E { spawn "makoctl" "menu" "fuzzel -d"; } + Mod+G { spawn "nirius" "toggle-follow-mode"; } + Mod+Shift+bracketleft { spawn "nirius" "scratchpad-show"; } + Mod+Shift+bracketright { spawn "nirius" "scratchpad-toggle"; } XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.03+"; } XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.03-"; } XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } diff --git a/modules/module-list.nix b/modules/module-list.nix index 65fff1c0..3351eefb 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -5,9 +5,9 @@ ./desktop/audio.nix ./desktop/common-programs.nix ./desktop/easyeffects.nix - ./desktop/fcitx5.nix ./desktop/foot.nix ./desktop/fuzzel.nix + ./desktop/ibus.nix ./desktop/mako.nix ./desktop/niri.nix ./desktop/shikane.nix @@ -21,8 +21,8 @@ ./presets/common.nix ./presets/development.nix ./presets/gui.nix - ./presets/server.nix ./presets/home-manager.nix + ./presets/server.nix ./services/authentik ./services/caddy ./services/monitoring.nix @@ -30,8 +30,8 @@ ./system/impermanence.nix ./system/meta.nix ./system/user.nix + ./to-upstream/fido2-hid-bridge.nix ./user-services/khal.nix ./user-services/syncthing.nix - ./to-upstream/fido2-hid-bridge.nix ] diff --git a/modules/presets/cli.nix b/modules/presets/cli.nix index 408cfc02..2b51fd1a 100644 --- a/modules/presets/cli.nix +++ b/modules/presets/cli.nix @@ -130,7 +130,7 @@ in imagemagick jq lm_sensors - moar + moor neofetch nix-output-monitor poppler @@ -145,7 +145,7 @@ in programs.mosh.enable = true; environment.variables.EDITOR = "hx"; environment.variables.VISUAL = "hx"; - environment.variables.PAGER = "moar"; + environment.variables.PAGER = "moor"; environment.shellAliases = { l = "ls -alh"; @@ -161,7 +161,7 @@ in p = "cd ~/proj"; ytl = ''yt-dlp -f "bv*+mergeall[vcodec=none]" --audio-multistreams''; sudo = "run0"; - less = "moar"; + less = "moor"; }; }; } diff --git a/modules/presets/gui.nix b/modules/presets/gui.nix index 81680433..d57d238f 100644 --- a/modules/presets/gui.nix +++ b/modules/presets/gui.nix @@ -21,6 +21,7 @@ in pkgs.yubikey-personalization ]; xyno.desktop.niri.enable = true; + xyno.desktop.ibus.enable = true; xyno.desktop.audio.enable = mkDefault true; xyno.user-services.khal.enable = true; boot.kernelPackages = mkDefault pkgs.linuxPackages_zen; @@ -40,9 +41,35 @@ in qt = { enable = true; - style = "breeze"; - # platformTheme = "gnome"; + platformTheme = "qt5ct"; }; + home-manager.sharedModules = + let + gruvboxDarkColors = pkgs.writeText "gruvbox-dark.conf" '' + [ColorScheme] + active_colors=#ffebdbb2, #ff1d2021, #ffbdae93, #ffa89984, #ff3c3836, #ff504945, #ffebdbb2, #ffebdbb2, #ffebdbb2, #ff282828, #ff1d2021, #ff504945, #ff458588, #ff282828, #ff458588, #ffcc241d, #ff282828, #ffebdbb2, #ff1d2021, #ffebdbb2, #ffbdae93 + disabled_colors=#ffbdae93, #ff1d2021, #ffbdae93, #ffa89984, #ff3c3836, #ff504945, #ffbdae93, #ffbdae93, #ffbdae93, #ff282828, #ff1d2021, #ff504945, #ff438184, #ff3c3836, #ff458588, #ffcc241d, #ff282828, #ffebdbb2, #ff1d2021, #ffebdbb2, #ffbdae93 + inactive_colors=#ffebdbb2, #ff1d2021, #ffbdae93, #ffa89984, #ff3c3836, #ff504945, #ffebdbb2, #ffebdbb2, #ffebdbb2, #ff282828, #ff1d2021, #ff504945, #ff438184, #ffa89984, #ff458588, #ffcc241d, #ff282828, #ffebdbb2, #ff1d2021, #ffebdbb2, #ffbdae93 + ''; + qt5ctConf = pkgs.writeText "qt5ct.conf" '' + [Appearance] + color_scheme_path=${gruvboxDarkColors} + custom_palette=true + icon_theme=breeze-dark + standard_dialogs=xdgdesktopportal + style=Breeze + + [Fonts] + fixed="Source Sans 3,12,-1,5,50,0,0,0,0,0" + general="Source Sans 3,12,-1,5,50,0,0,0,0,0" + ''; + in + [ + { + home.file.".config/qt5ct/qt5ct.conf".source = qt5ctConf; + home.file.".config/qt6ct/qt6ct.conf".source = qt5ctConf; + } + ]; programs.yazi = { settings.keymap.mgr.prepend_keymap = [ @@ -70,11 +97,34 @@ in # enable the gnome shit services.gnome.gnome-keyring.enable = true; services.gnome.gnome-online-accounts.enable = true; - services.gnome.core-apps.enable = true; + environment.systemPackages = with pkgs; [ + gnome-calendar + gnome-clocks + gnome-font-viewer + mate.engrampa + papirus-folders + kdePackages.gwenview + kdePackages.skanlite + kdePackages.okular + kdePackages.breeze-gtk + kdePackages.breeze.qt5 + kdePackages.breeze + kdePackages.breeze-icons + nautilus # for xdg portal + ]; services.gnome.gcr-ssh-agent.enable = mkForce false; - services.gnome.sushi.enable = true; + # services.gnome.sushi.enable = true; services.gnome.gnome-settings-daemon.enable = true; - services.gvfs.enable = true; + + programs.thunar = { + enable = true; + plugins = with pkgs.xfce; [ + thunar-archive-plugin + thunar-volman + ]; + }; + services.tumbler.enable = true; # thunar image preview + services.gvfs.enable = true; # thunar network device mount xdg.terminal-exec = { enable = true; @@ -88,35 +138,28 @@ in { pkgs, ... }: { xyno.mpv.enable = true; - # xdg.mimeApps = { - # enable = true; - # defaultApplications = { - # "x-scheme-handler/mailto" = [ "aerc.desktop" ]; - # "inode/directory" = [ "org.gnome.Nautilus.desktop" ]; - # "application/x-gnome-saved-search" = [ "org.gnome.Nautilus.desktop" ]; - # "x-scheme-handler/http" = "userapp-Zen-D2P132.desktop"; - # "x-scheme-handler/https" = "userapp-Zen-D2P132.desktop"; - # "x-scheme-handler/chrome" = "userapp-Zen-D2P132.desktop"; - # "text/html" = "userapp-Zen-D2P132.desktop"; - # "application/x-extension-htm" = "userapp-Zen-D2P132.desktop"; - # "application/x-extension-html" = "userapp-Zen-D2P132.desktop"; - # "application/x-extension-shtml" = "userapp-Zen-D2P132.desktop"; - # "application/xhtml+xml" = "userapp-Zen-D2P132.desktop"; - # "application/x-extension-xhtml" = "userapp-Zen-D2P132.desktop"; - # "application/x-extension-xht" = "userapp-Zen-D2P132.desktop"; - # "application/pdf" = "org.gnome.Evince.desktop"; + # xdg.mimeApps = { + # enable = true; + # defaultApplications = { + # "x-scheme-handler/mailto" = [ "aerc.desktop" ]; + # "inode/directory" = [ "org.gnome.Nautilus.desktop" ]; + # "application/x-gnome-saved-search" = [ "org.gnome.Nautilus.desktop" ]; + # "x-scheme-handler/http" = "userapp-Zen-D2P132.desktop"; + # "x-scheme-handler/https" = "userapp-Zen-D2P132.desktop"; + # "x-scheme-handler/chrome" = "userapp-Zen-D2P132.desktop"; + # "text/html" = "userapp-Zen-D2P132.desktop"; + # "application/x-extension-htm" = "userapp-Zen-D2P132.desktop"; + # "application/x-extension-html" = "userapp-Zen-D2P132.desktop"; + # "application/x-extension-shtml" = "userapp-Zen-D2P132.desktop"; + # "application/xhtml+xml" = "userapp-Zen-D2P132.desktop"; + # "application/x-extension-xhtml" = "userapp-Zen-D2P132.desktop"; + # "application/x-extension-xht" = "userapp-Zen-D2P132.desktop"; + # "application/pdf" = "org.gnome.Evince.desktop"; - # }; - # }; + # }; + # }; }; - environment.systemPackages = with pkgs; [ - kdePackages.breeze-gtk - kdePackages.breeze.qt5 - kdePackages.breeze - kdePackages.breeze-icons - ]; - # fonts fonts.fontconfig.defaultFonts = { sansSerif = [ diff --git a/overlays/default.nix b/overlays/default.nix index 8391833c..e5344178 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -27,16 +27,16 @@ inputs: self: super: { fido2-hid-bridge = super.callPackage ../packages/fido2-hid-bridge.nix {}; python-uhid = super.callPackage ../packages/uhid.nix {}; caddy-desec = super.callPackage ../packages/caddy-desec.nix {}; - - # todo: remove on next supersonic release - supersonic-wayland = super.supersonic-wayland.overrideAttrs (old: { - patches = (if old?patches then old.patches else []) ++ [ + ibus-patched = super.unstable.ibus.overrideAttrs (old: { + patches = old.patches ++ [ + # (builtins.head old.patches) + # (builtins.head (builtins.tail old.patches)) (self.fetchpatch2 { - url = "https://github.com/dweymouth/supersonic/commit/ee742cf34ef7225d345c16354d9c21d72a41bf4a.patch"; - hash = "sha256-kSeEbzrfJ4Pe8JC4rIWlSmADOcjrCRBNWlcO8VfVnn4="; + url = "https://github.com/ibus/ibus/commit/dde00b1b689037e70d79a703aa028f7c3de289e2.patch"; + hash = "sha256-Q5XANWsN7f9Kcno8Icgn8wlXL489YlcrlUrqeA67nWU="; }) ]; - vendorHash = "sha256-Sh3PxRwb6ElSeWzdvIQ+nD9VVGlpUDwxG7nAoGWPTRQ="; }); + }