diff --git a/configuration.nix b/configuration.nix index 6567327..ca21300 100644 --- a/configuration.nix +++ b/configuration.nix @@ -146,11 +146,15 @@ services.mullvad-vpn.enable = true; tree nodejs gparted + ntfs3g heroic wineWowPackages.stable + winetricks + bottles spotify #spicetify-cli sshfs + freetube # anydesk # sway diff --git a/flake.lock b/flake.lock index b7d52ed..a4be8e5 100644 --- a/flake.lock +++ b/flake.lock @@ -6,11 +6,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1756679577, - "narHash": "sha256-pkfftqE2CxVN6nKDZvlNdBxIkb/x5ch4wVfwZMYNGCM=", + "lastModified": 1759227262, + "narHash": "sha256-ibKJckw+KWH6n+pscOA7DWImanr988zKB7R2Z6ZEMLM=", "owner": "Aylur", "repo": "ags", - "rev": "04d51ac4082af3ec47e8a803417a1a55b75151d7", + "rev": "f68a0d03fbb94f4beacedd922ffaa0bf0f10397a", "type": "github" }, "original": { @@ -40,6 +40,21 @@ "type": "github" } }, + "crane": { + "locked": { + "lastModified": 1758215636, + "narHash": "sha256-8nkzkPbdxze8CxWhKWlcLbJEU1vfLM/nVqRlTy17V54=", + "owner": "ipetkov", + "repo": "crane", + "rev": "a669fe77a8b0cd6f11419d89ea45a16691ca5121", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -56,6 +71,21 @@ "url": "https://git.lix.systems/lix-project/flake-compat.git" } }, + "flake-compat_2": { + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -84,11 +114,11 @@ ] }, "locked": { - "lastModified": 1756991914, - "narHash": "sha256-4ve/3ah5H/SpL2m3qmZ9GU+VinQYp2MN1G7GamimTds=", + "lastModified": 1759337100, + "narHash": "sha256-CcT3QvZ74NGfM+lSOILcCEeU+SnqXRvl1XCRHenZ0Us=", "owner": "nix-community", "repo": "home-manager", - "rev": "b08f8737776f10920c330657bee8b95834b7a70f", + "rev": "004753ae6b04c4b18aa07192c1106800aaacf6c3", "type": "github" }, "original": { @@ -151,11 +181,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1756787288, - "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", + "lastModified": 1759036355, + "narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", + "rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", "type": "github" }, "original": { @@ -183,11 +213,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1758690382, + "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "e643668fd71b949c53f8626614b21ff71a07379d", "type": "github" }, "original": { @@ -198,6 +228,19 @@ } }, "nixpkgs_5": { + "locked": { + "lastModified": 315532800, + "narHash": "sha256-YPoFUJMpbuPvIS4FJBn2Sv/iWsui9S26gu2ufFWEY0g=", + "rev": "a1f79a1770d05af18111fbbe2a3ab2c42c0f6cd0", + "type": "tarball", + "url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre864673.a1f79a1770d0/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" + } + }, + "nixpkgs_6": { "locked": { "lastModified": 1755615617, "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", @@ -222,11 +265,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1756870502, - "narHash": "sha256-0diPvHFwQbKvKkz0bmEVEoFIzL4rdD80CaApHaj6hzs=", + "lastModified": 1758271661, + "narHash": "sha256-ENqd2/33uP5vB44ClDjjAV+J78oF8q1er4QUZuT8Z7g=", "owner": "notashelf", "repo": "nvf", - "rev": "7b009c945d2f0213409aa0bae07c79d28b92d625", + "rev": "b7571df4d6e9ac08506a738ddceeec0b141751b0", "type": "github" }, "original": { @@ -242,20 +285,42 @@ "nixpkgs": "nixpkgs_2", "nvf": "nvf", "spicetify-nix": "spicetify-nix", + "zed": "zed", "zen-browser": "zen-browser" } }, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "zed", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1758508617, + "narHash": "sha256-kx2uELmVnAbiekj/YFfWR26OXqXedImkhe2ocnbumTA=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "d2bac276ac7e669a1f09c48614538a37e3eb6d0f", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "spicetify-nix": { "inputs": { "nixpkgs": "nixpkgs_4", "systems": "systems_2" }, "locked": { - "lastModified": 1756614537, - "narHash": "sha256-qyszmZO9CEKAlj5NBQo1AIIADm5Fgqs5ZggW1sU1TVo=", + "lastModified": 1759033744, + "narHash": "sha256-fQovpddotIEsvdJzpQhtb3wYZYGIg4I/QUX5rJJQTi4=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "374eb5d97092b97f7aaafd58a2012943b388c0df", + "rev": "f102312235c3628fc3eddfb8cc6d7d0922427f46", "type": "github" }, "original": { @@ -294,17 +359,38 @@ "type": "github" } }, + "zed": { + "inputs": { + "crane": "crane", + "flake-compat": "flake-compat_2", + "nixpkgs": "nixpkgs_5", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1759344846, + "narHash": "sha256-WIhSRa4m8I5Epl3Ajpaxodl22EwWit0bC2Y1/sv1HGM=", + "owner": "zed-industries", + "repo": "zed", + "rev": "3314de81755d7ef949007f6b804f4496092b0cc8", + "type": "github" + }, + "original": { + "owner": "zed-industries", + "repo": "zed", + "type": "github" + } + }, "zen-browser": { "inputs": { "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_5" + "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1756999202, - "narHash": "sha256-AiJDRmIt2DuMk2IlBPnMG52ghUI9+D1nO7JRBF2vnZ0=", + "lastModified": 1759292536, + "narHash": "sha256-fWTojLEpXgqwtKZb+qJ5gn9y8N6MAKM35yu0k+4yWmo=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "369fbe5c53420b1a17295c5e85ea0dbe02fbcfbd", + "rev": "d11cff279fb1d879cd72d6fb3bbd1ae7b584674b", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index ed7011e..401a23e 100644 --- a/flake.nix +++ b/flake.nix @@ -17,9 +17,11 @@ spicetify-nix.url = "github:Gerg-L/spicetify-nix"; + zed.url = "github:zed-industries/zed"; + }; - outputs = { self, nixpkgs, nvf, zen-browser, spicetify-nix, ... }@inputs: + outputs = { self, nixpkgs, nvf, zen-browser, spicetify-nix, zed, ... }@inputs: let system = "x86_64-linux"; in { nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { @@ -31,6 +33,7 @@ ./configuration.nix # inputs.zen-browser.packages."${system}".default # nvf.homeManagerModules.default + # inputs.zed.packages."${system}".default inputs.home-manager.nixosModules.default ]; }; diff --git a/home-nico.nix b/home-nico.nix index a266f55..49a74a2 100644 --- a/home-nico.nix +++ b/home-nico.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, ... }: +{ config, pkgs, lib, system, inputs, ... }: { home.username = "nico"; @@ -18,7 +18,7 @@ }; home.packages = with pkgs; [ - floorp + # floorp ]; programs.zen-browser.enable = true; @@ -49,5 +49,17 @@ programs.home-manager.enable = true; + # options = { + # services.zed = { + # enable = lib.mkEnableOption "Zed Editor"; + # }; + # }; + # + # config = lib.mkIf config.services.zed.enable { + # environment.systemPackages = [ + # inputs.zed.packages.${system}.default + # pkgs.nixd # System-wide Nix LSP installation + # ]; + # }; } diff --git a/packages/default.nix b/packages/default.nix index d79b685..0776256 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -15,6 +15,7 @@ ./fuzzel ./niri ./hyprland + ./zed-editor # ./tmux # ./vscode ]; diff --git a/packages/nvim/lua/plugins/lsp.lua b/packages/nvim/lua/plugins/lsp.lua index 67de36d..916d2f1 100644 --- a/packages/nvim/lua/plugins/lsp.lua +++ b/packages/nvim/lua/plugins/lsp.lua @@ -7,7 +7,7 @@ return { servers = { lua_ls = {}, nil_ls = {}, - -- vue_ls = {}, + vue_ls = {}, -- rust_analyzer = {}, -- gopls = {}, } diff --git a/packages/settings.json b/packages/settings.json new file mode 100644 index 0000000..e69de29 diff --git a/packages/zed-editor/default.nix b/packages/zed-editor/default.nix new file mode 100644 index 0000000..6fa87f0 --- /dev/null +++ b/packages/zed-editor/default.nix @@ -0,0 +1,54 @@ +{pkgs, lib, ... }: + +{ + home.file."/home/nico/.config/zed/settings.json" = { + source = ./settings.json; + }; + # programs.zed-editor = { + # enable = true; + # + # ## This populates the userSettings "auto_install_extensions" + # extensions = ["nix" "Catppuccin"]; + # + # ## everything inside of these brackets are Zed options. + # userSettings = { + # assistant = { + # enabled = false; + # }; + # + # hour_format = "hour24"; + # auto_update = false; + # lsp = { + # rust-analyzer = { + # binary = { + # path_lookup = true; + # }; + # }; + # nix = { + # binary = { + # path_lookup = true; + # }; + # }; + # }; + # + # + # languages = { + # }; + # + # vim_mode = true; + # ## tell zed to use direnv and direnv can use a flake.nix enviroment. + # load_direnv = "shell_hook"; + # base_keymap = "VSCode"; + # theme = { + # mode = "dark"; + # light = "Catppuccin frappe"; + # dark = "Catppuccin mocha"; + # }; + # show_whitespaces = "all" ; + # ui_font_size = 16; + # buffer_font_size = 16; + # + # }; + # + # }; +} diff --git a/packages/zed-editor/settings.json b/packages/zed-editor/settings.json new file mode 100644 index 0000000..b2a7c04 --- /dev/null +++ b/packages/zed-editor/settings.json @@ -0,0 +1,54 @@ +{ + "diagnostics": { + "include_warnings": true, + "inline": { + "enabled": true + } +}, + "git": { + "inline_blame": { + "enabled": false + } +}, + "ssh_connections": [ + { + "host": "localhost", + "projects": [ + { + "paths": [ + "/home/dev/ids/prog" + ] + } + ] + } + ], + "agent": { + "enabled": false + }, + "auto_update": false, + "base_keymap": "VSCode", + "buffer_font_size": 16, + "hour_format": "hour24", + "languages": {}, + "load_direnv": "shell_hook", + "lsp": { + "nix": { + "binary": { + "path_lookup": true + } + }, + "rust-analyzer": { + "binary": { + "path_lookup": true + } + } + }, + "show_whitespaces": "all", + "theme": { + "dark": "Catppuccin Mocha", + "light": "Catppuccin frappe", + "mode": "system" + }, + "ui_font_size": 16, + "vim_mode": true +} diff --git a/shells/arduino/flake.nix b/shells/arduino/flake.nix new file mode 100644 index 0000000..24c082d --- /dev/null +++ b/shells/arduino/flake.nix @@ -0,0 +1,198 @@ +{ + description = "PlatformIO Development Environment with VSCodium"; + + inputs = { + }; + + outputs = { self, nixpkgs }: + let + system = "x86_64-linux"; + pkgs = import { inherit system; }; + + platformioVsix = pkgs.fetchurl { + url = "https://marketplace.visualstudio.com/_apis/public/gallery/publishers/platformio/vsextensions/platformio-ide/3.3.4/vspackage?targetPlatform=linux-x64"; + sha256 = "sha256-Ri5TZDxSsW1cW33Rh+l/5Fxl23MNzFEjcFGLDx/xzT8="; + }; + + patchedExtension = pkgs.stdenv.mkDerivation { + name = "platformio-ide-patched"; + src = platformioVsix; + buildInputs = [ pkgs.jq pkgs.unzip pkgs.gzip ]; + unpackCmd = '' + gzip -d < $src > temp.zip + unzip temp.zip + rm temp.zip + ''; + buildPhase = '' + jq '.extensionDependencies = [] | + .["platformio-ide.useBuiltinPIOCore"].default = false | + .["platformio-ide.useBuiltinPython"].default = false | + .["platformio-ide.forceSystemPIOCore"].default = true | + .["platformio-ide.forceSystemPython"].default = true' \ + package.json > package.json.new + mv package.json.new package.json + ''; + installPhase = '' + cd .. + mkdir -p $out + ${pkgs.zip}/bin/zip -r $out/platformio-ide.vsix . + ''; + }; + + platformioWrapper = pkgs.writeScriptBin "platformio" '' + #!/bin/sh + VENV_DIR="''${PLATFORMIO_VENV_DIR:-$HOME/.platformio/penv}" + . "$VENV_DIR/bin/activate" + exec ${pkgs.platformio}/bin/platformio "$@" + ''; + + configureVSCodeSettings = '' + USER_CONFIG_DIR="''${XDG_CONFIG_HOME:-$HOME/.config}/VSCodium/User" + mkdir -p "$USER_CONFIG_DIR" + SETTINGS_FILE="$USER_CONFIG_DIR/settings.json" + if [ ! -f "$SETTINGS_FILE" ]; then + echo '{}' > "$SETTINGS_FILE" + fi + ${pkgs.jq}/bin/jq '. + { + "platformio-ide.useBuiltinPIOCore": true, + "platformio-ide.useBuiltinPython": false, + "platformio-ide.forceSystemPIOCore": false, + "platformio-ide.forceSystemPython": true, + "platformio-ide.customPATH": "$PATH" + }' "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp" + if [ $? -eq 0 ]; then + mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE" + else + rm -f "$SETTINGS_FILE.tmp" + fi + ''; + + fhsEnv = pkgs.buildFHSEnv { + name = "platformio-env"; + targetPkgs = pkgs: with pkgs; [ + platformio + platformioWrapper + python312 + git + vscodium + gcc + gdb + gnumake + udev + zlib + ncurses + stdenv.cc.cc.lib + glibc + libusb1 + openssl + tio + chromium + ]; + profile = '' + export PYTHONPATH=${pkgs.platformio}/lib/python3.12/site-packages:$PYTHONPATH + export PLATFORMIO_CORE_DIR="''${PLATFORMIO_CORE_DIR:-$HOME/.platformio}" + export PATH=${platformioWrapper}/bin:$PATH + export PATH=${pkgs.python312}/bin:$PATH + ''; + runScript = pkgs.writeScript "platformio-shell" '' + export XDG_DATA_HOME="''${XDG_DATA_HOME:-$HOME/.local/share}" + export PATH=${pkgs.python312}/bin:${platformioWrapper}/bin:$PATH + export PYTHONPATH=${pkgs.platformio}/lib/python3.12/site-packages:$PYTHONPATH + ${configureVSCodeSettings} + VSCODE_PORTABLE="''${VSCODE_PORTABLE:-$HOME/.vscode-portable}" + EXTENSION_DIR="''${VSCODE_PORTABLE}/extensions" + mkdir -p "$EXTENSION_DIR" + ${pkgs.vscodium}/bin/codium --install-extension ${patchedExtension}/platformio-ide.vsix + mkdir -p $HOME/.local/bin + ln -sf ${platformioWrapper}/bin/platformio $HOME/.local/bin/pio + echo "PlatformIO environment ready. PlatformIO Core: $(platformio --version)" + echo "Run 'codium .' to open VSCodium in current directory" + if [ -f $HOME/.platformio/penv/bin/activate ]; then + source $HOME/.platformio/penv/bin/activate + fi + PS1="Codium-PIO> " + exec bash --norc + ''; + }; + + # Create a dedicated VSCodium launcher package that accepts arguments + codiumLauncher = pkgs.writeScriptBin "launch-codium" '' + #!/usr/bin/env bash + export XDG_DATA_HOME="''${XDG_DATA_HOME:-$HOME/.local/share}" + export PATH=${pkgs.python312}/bin:${platformioWrapper}/bin:$PATH + export PYTHONPATH=${pkgs.platformio}/lib/python3.12/site-packages:$PYTHONPATH + ${configureVSCodeSettings} + VSCODE_PORTABLE="''${VSCODE_PORTABLE:-$HOME/.vscode-portable}" + EXTENSION_DIR="''${VSCODE_PORTABLE}/extensions" + mkdir -p "$EXTENSION_DIR" + ${pkgs.vscodium}/bin/codium --install-extension ${patchedExtension}/platformio-ide.vsix + mkdir -p $HOME/.local/bin + ln -sf ${platformioWrapper}/bin/platformio $HOME/.local/bin/pio + + # Initialize PlatformIO environment if needed + if [ ! -f $HOME/.platformio/penv/bin/activate ] && [ -x "$(command -v python3)" ]; then + echo "Initializing PlatformIO environment..." + python3 -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py)" + fi + + if [ -f $HOME/.platformio/penv/bin/activate ]; then + source $HOME/.platformio/penv/bin/activate + fi + + # If no arguments are provided, open the current directory + if [ $# -eq 0 ]; then + exec ${pkgs.vscodium}/bin/codium . + else + # Otherwise, pass all arguments to VSCodium + exec ${pkgs.vscodium}/bin/codium "$@" + fi + ''; + + # Create an FHS environment specifically for launching VSCodium + codiumFhsEnv = pkgs.buildFHSEnv { + name = "codium-launcher"; + targetPkgs = pkgs: with pkgs; [ + platformio + platformioWrapper + python312 + git + vscodium + gcc + gdb + gnumake + udev + zlib + ncurses + stdenv.cc.cc.lib + glibc + libusb1 + openssl + codiumLauncher + tio + ]; + profile = '' + export PYTHONPATH=${pkgs.platformio}/lib/python3.12/site-packages:$PYTHONPATH + export PLATFORMIO_CORE_DIR="''${PLATFORMIO_CORE_DIR:-$HOME/.platformio}" + export PATH=${platformioWrapper}/bin:$PATH + export PATH=${pkgs.python312}/bin:$PATH + ''; + # Pass all arguments received to the launch-codium script + runScript = pkgs.writeScript "codium-launch-wrapper" '' + exec ${codiumLauncher}/bin/launch-codium "$@" + ''; + }; + + in + { + devShells.${system} = { + default = fhsEnv.env; + codium = codiumFhsEnv.env; + }; + + packages.${system} = { + default = fhsEnv; + platformioExtension = patchedExtension; + codium = codiumFhsEnv; + }; + }; +} diff --git a/shells/luckyshroom/flake.nix b/shells/luckyshroom/flake.nix new file mode 100644 index 0000000..a089161 --- /dev/null +++ b/shells/luckyshroom/flake.nix @@ -0,0 +1,33 @@ +{ + description = "Love you"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + cursor.url = "github:omarcresp/cursor-flake/main"; + }; + outputs = { self, nixpkgs, flake-utils, cursor }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + }; + in + { + devShell = + with pkgs; mkShell rec { + buildInputs = [ + love + cursor.packages.${pkgs.system}.default + ]; + + shellHook = '' + zsh + + exit + ''; + }; + }); +} + +