diff --git a/configuration.nix b/configuration.nix index 6567327..66fbc66 100644 --- a/configuration.nix +++ b/configuration.nix @@ -8,7 +8,7 @@ inputs.home-manager.nixosModules.default ]; - + nix.settings.trusted-users = [ "root" "nico" ]; # home manager home-manager = { extraSpecialArgs = { inherit inputs; }; @@ -18,10 +18,10 @@ }; # hyprland - programs.hyprland = { - enable = true; - xwayland.enable = true; - }; + # programs.hyprland = { + # enable = true; + # xwayland.enable = true; + # }; programs.niri.enable = true; @@ -30,12 +30,13 @@ # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; +boot.loader.grub.useOSProber = true; - -# fileSystems."mnt/win" = { -# device = "/dev/sdb1"; -# fsType = "ntfs"; -# }; +fileSystems."mnt/win" = { + device = "/dev/disk/by-partuuid/8d0a8dd9-7a4c-4d3e-a5eb-98c0aed35db5"; + fsType = "ntfs-3g"; + options = ["rw" "uid=1000"]; +}; # Flakes nix.settings.experimental-features = [ "nix-command" "flakes" ]; @@ -53,14 +54,14 @@ boot.loader.efi.canTouchEfiVariables = true; networking.enableIPv6 = false; # VM - virtualisation.virtualbox.host.enable = true; - virtualisation.virtualbox.host.enableExtensionPack = true; - virtualisation.virtualbox.host.enableKvm = true; - virtualisation.virtualbox.host.addNetworkInterface = false; - users.extraGroups.vboxusers.members = [ "nico" ]; - # virtualisation.virtualbox.guest.enable = true; - # virtualisation.virtualbox.guest.dragAndDrop = true; - virtualisation.docker.enable = true; +# virtualisation.virtualbox.host.enable = true; +# virtualisation.virtualbox.host.enableExtensionPack = true; +# virtualisation.virtualbox.host.enableKvm = true; +# virtualisation.virtualbox.host.addNetworkInterface = false; +# users.extraGroups.vboxusers.members = [ "nico" ]; +# # virtualisation.virtualbox.guest.enable = true; +# # virtualisation.virtualbox.guest.dragAndDrop = true; +# virtualisation.docker.enable = true; # Set your time zone. time.timeZone = "Europe/Berlin"; @@ -76,6 +77,28 @@ boot.loader.efi.canTouchEfiVariables = true; # Enable the X11 windowing system. You can disable this if you're only using the Wayland session. services.xserver.enable = true; + xdg.portal = { + enable = true; + extraPortals = with pkgs; [ + xdg-desktop-portal-gtk + xdg-desktop-portal-gnome + ]; + config = { + common = { + default = [ "gtk" ]; + }; + niri = { + default = [ + "gtk" + "gnome" + ]; + "org.freedesktop.impl.portal.ScreenCast" = [ "gnome" ]; + "org.freedesktop.impl.portal.Screenshot" = [ "gnome" ]; + }; + }; + }; + + # Enable the KDE Plasma Desktop Environment. services.displayManager.sddm.enable = true; services.desktopManager.plasma6.enable = true; @@ -91,10 +114,10 @@ boot.loader.efi.canTouchEfiVariables = true; services.printing.enable = true; # Enable sound with pipewire. - services.pulseaudio.enable = true; + services.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { - enable = false; + enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; @@ -105,6 +128,7 @@ boot.loader.efi.canTouchEfiVariables = true; #media-session.enable = true; }; + systemd.user.services.orca.enable = false; # Enable touchpad support (enabled default in most desktopManager). services.xserver.libinput.enable # = true; services.mullvad-vpn.enable = true; @@ -114,7 +138,6 @@ services.mullvad-vpn.enable = true; "wheel" "adbusers" "docker" "input" "dialout"]; packages = with pkgs; [ ]; }; - users.defaultUserShell = pkgs.zsh; environment.shells = with pkgs; [ zsh nushell ]; programs.zsh.enable = true; @@ -128,6 +151,7 @@ services.mullvad-vpn.enable = true; ]; # services.flatpak.enable = true; +programs.nix-ld.enable = true; # List packages installed in system profile. To search, run: $ nix search wget environment.systemPackages = with pkgs; [ @@ -146,12 +170,16 @@ services.mullvad-vpn.enable = true; tree nodejs gparted + ntfs3g heroic wineWowPackages.stable + winetricks spotify #spicetify-cli sshfs + freetube # anydesk + devenv # sway networkmanager @@ -183,7 +211,7 @@ hardware.amdgpu.opencl.enable = true; services.gnome.gnome-keyring.enable = true; programs.sway = { - enable = true; + enable = false; wrapperFeatures.gtk = true; }; diff --git a/flake.lock b/flake.lock index b7d52ed..eebcab7 100644 --- a/flake.lock +++ b/flake.lock @@ -6,11 +6,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1756679577, - "narHash": "sha256-pkfftqE2CxVN6nKDZvlNdBxIkb/x5ch4wVfwZMYNGCM=", + "lastModified": 1763165251, + "narHash": "sha256-HqprJ5e5+tLVbk3EuWnyiBkVfKTA149eHh+u2VzUrY0=", "owner": "Aylur", "repo": "ags", - "rev": "04d51ac4082af3ec47e8a803417a1a55b75151d7", + "rev": "0cbca42b11d23aad8c0689fc7385e517bde94c61", "type": "github" }, "original": { @@ -27,11 +27,11 @@ ] }, "locked": { - "lastModified": 1756474652, - "narHash": "sha256-iiBU6itpEqE0spXeNJ3uJTfioSyKYjt5bNepykpDXTE=", + "lastModified": 1762012522, + "narHash": "sha256-ncEN4OVFM5M9VFc4oR3gOI5K8r99GcYxtU+Cf4Z8pbs=", "owner": "aylur", "repo": "astal", - "rev": "20bd8318e4136fbd3d4eb2d64dbabc3acbc915dd", + "rev": "671d4229c798834190a50fb8b8d8addd19b529e9", "type": "github" }, "original": { @@ -40,6 +40,21 @@ "type": "github" } }, + "crane": { + "locked": { + "lastModified": 1762538466, + "narHash": "sha256-8zrIPl6J+wLm9MH5ksHcW7BUHo7jSNOu0/hA0ohOOaM=", + "owner": "ipetkov", + "repo": "crane", + "rev": "0cea393fffb39575c46b7a0318386467272182fe", + "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": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -64,11 +94,11 @@ ] }, "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": { @@ -84,11 +114,11 @@ ] }, "locked": { - "lastModified": 1756991914, - "narHash": "sha256-4ve/3ah5H/SpL2m3qmZ9GU+VinQYp2MN1G7GamimTds=", + "lastModified": 1763416652, + "narHash": "sha256-8EBEEvtzQ11LCxpQHMNEBQAGtQiCu/pqP9zSovDSbNM=", "owner": "nix-community", "repo": "home-manager", - "rev": "b08f8737776f10920c330657bee8b95834b7a70f", + "rev": "ea164b7c9ccdc2321379c2ff78fd4317b4c41312", "type": "github" }, "original": { @@ -105,11 +135,11 @@ ] }, "locked": { - "lastModified": 1752603129, - "narHash": "sha256-S+wmHhwNQ5Ru689L2Gu8n1OD6s9eU9n9mD827JNR+kw=", + "lastModified": 1762964643, + "narHash": "sha256-RYHN8O/Aja59XDji6WSJZPkJpYVUfpSkyH+PEupBJqM=", "owner": "nix-community", "repo": "home-manager", - "rev": "e8c19a3cec2814c754f031ab3ae7316b64da085b", + "rev": "827f2a23373a774a8805f84ca5344654c31f354b", "type": "github" }, "original": { @@ -120,11 +150,11 @@ }, "mnw": { "locked": { - "lastModified": 1756659871, - "narHash": "sha256-v6Rh4aQ6RKjM2N02kK9Usn0Ix7+OY66vNpeklc1MnGE=", + "lastModified": 1758834834, + "narHash": "sha256-Y7IvY4F8vajZyp3WGf+KaiIVwondEkMFkt92Cr9NZmg=", "owner": "Gerg-L", "repo": "mnw", - "rev": "ed6cc3e48557ba18266e598a5ebb6602499ada16", + "rev": "cfbc7d1cc832e318d0863a5fc91d940a96034001", "type": "github" }, "original": { @@ -135,11 +165,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1761907660, + "narHash": "sha256-kJ8lIZsiPOmbkJypG+B5sReDXSD1KGu2VEPNqhRa/ew=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "2fb006b87f04c4d3bdf08cfdbc7fab9c13d94a15", "type": "github" }, "original": { @@ -151,11 +181,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1756787288, - "narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=", + "lastModified": 1763421233, + "narHash": "sha256-Stk9ZYRkGrnnpyJ4eqt9eQtdFWRRIvMxpNRf4sIegnw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d0fc30899600b9b3466ddb260fd83deb486c32f1", + "rev": "89c2b2330e733d6cdb5eae7b899326930c2c0648", "type": "github" }, "original": { @@ -167,11 +197,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1756696532, - "narHash": "sha256-6FWagzm0b7I/IGigOv9pr6LL7NQ86mextfE8g8Q6HBg=", + "lastModified": 1761880412, + "narHash": "sha256-QoJjGd4NstnyOG4mm4KXF+weBzA2AH/7gn1Pmpfcb0A=", "owner": "nixos", "repo": "nixpkgs", - "rev": "58dcbf1ec551914c3756c267b8b9c8c86baa1b2f", + "rev": "a7fc11be66bdfb5cdde611ee5ce381c183da8386", "type": "github" }, "original": { @@ -183,11 +213,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1756542300, - "narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=", + "lastModified": 1762977756, + "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d7600c775f877cd87b4f5a831c28aa94137377aa", + "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55", "type": "github" }, "original": { @@ -199,11 +229,24 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1755615617, - "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "lastModified": 315532800, + "narHash": "sha256-5CwQ80ucRHiqVbMEEbTFnjz70/axSJ0aliyzSaFSkmY=", + "rev": "f6b44b2401525650256b977063dbcf830f762369", + "type": "tarball", + "url": "https://releases.nixos.org/nixpkgs/nixpkgs-25.11pre891648.f6b44b240152/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz" + } + }, + "nixpkgs_6": { + "locked": { + "lastModified": 1762977756, + "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "20075955deac2583bb12f07151c2df830ef346b4", + "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55", "type": "github" }, "original": { @@ -222,11 +265,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1756870502, - "narHash": "sha256-0diPvHFwQbKvKkz0bmEVEoFIzL4rdD80CaApHaj6hzs=", + "lastModified": 1762622004, + "narHash": "sha256-NpzzgaoMK8aRHnndHWbYNKLcZN0r1y6icCoJvGoBsoE=", "owner": "notashelf", "repo": "nvf", - "rev": "7b009c945d2f0213409aa0bae07c79d28b92d625", + "rev": "09470524a214ed26633ddc2b6ec0c9bf31a8b909", "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": 1762915112, + "narHash": "sha256-d9j1g8nKmYDHy+/bIOPQTh9IwjRliqaTM0QLHMV92Ic=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "aa1e85921cfa04de7b6914982a94621fbec5cc02", + "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": 1763267524, + "narHash": "sha256-CywB4iCpGr4CYZAD+WboFwBQ7Wnc7LdfSemFWuH/1Ro=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "374eb5d97092b97f7aaafd58a2012943b388c0df", + "rev": "cf33e39bd1a21993a28ffee8be433e212ecf346a", "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": 1763568568, + "narHash": "sha256-PP4h13/BhOnqagvJUtILvnGIylQFm9EmIKeW6vzpWhY=", + "owner": "zed-industries", + "repo": "zed", + "rev": "f05eef58c46be2d6617847494b444ac442780367", + "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": 1763521945, + "narHash": "sha256-Zcrafbe4niRJMbzaVOwg7+iedJhwBFttre2DpyCC6qA=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "369fbe5c53420b1a17295c5e85ea0dbe02fbcfbd", + "rev": "24d7381b9231c23daceec5d372cc28e877f7785d", "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..baa1bae 100644 --- a/home-nico.nix +++ b/home-nico.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, ... }: +{ config, pkgs, lib, system, inputs, ... }: { home.username = "nico"; @@ -10,7 +10,7 @@ inputs.zen-browser.homeModules.default ]; - nixpkgs = { + nixpkgs = { config = { allowUnfree = true; allowUnfreePredicate = (_: true); @@ -18,11 +18,40 @@ }; home.packages = with pkgs; [ - floorp + # floorp ]; programs.zen-browser.enable = true; + + + home.pointerCursor = + let + getFrom = url: hash: name: { + gtk.enable = true; + x11.enable = true; + name = name; + size = 48; + package = + pkgs.runCommand "moveUp" {} '' + mkdir -p $out/share/icons + ln -s ${pkgs.fetchzip { + url = url; + hash = hash; + }} $out/share/icons/${name} + ''; + }; + in + getFrom + "https://github.com/ful1e5/banana-cursor/releases/download/v2.0.0/Banana-Blue.tar.xz" + # "https://github.com/ful1e5/fuchsia-cursor/releases/download/v2.0.0/Fuchsia-Pop.tar.gz" + "sha256-IZ6sidRjcg0r+E2eFlVfIouTpKWndvrZlCNNYZMQJE0=" + "Banana-Blue"; + + + + + programs.spicetify = let spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system}; @@ -49,5 +78,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..0a8d281 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -9,12 +9,13 @@ ./waybar ./wpaperd ./nvim - ./emacs + # ./emacs ./terminal ./rofi ./fuzzel ./niri ./hyprland + ./zed-editor # ./tmux # ./vscode ]; diff --git a/packages/niri/config.kdl b/packages/niri/config.kdl index 9979899..e9a9e74 100644 --- a/packages/niri/config.kdl +++ b/packages/niri/config.kdl @@ -1,3 +1,11 @@ +cursor { + xcursor-theme "Banana-Blue" + xcursor-size 30 +} + + + + // This config is in the KDL format: https://kdl.dev // "/-" comments out the following node. // Check the wiki for a full description of the configuration: @@ -366,6 +374,7 @@ binds { // Mod+M hotkey-overlay-title="Run an Application: rofi" { spawn "rofi" "-show" "drun"; } Super+Alt+L hotkey-overlay-title="Power menu" { spawn "rofi" "-show" "power-menu" "-modi" "power-menu:rofi-power-menu"; } Super+V hotkey-overlay-title="Clipboard history" { spawn "bash" "-c" "cliphist list | fuzzel -d | cliphist decode | wl-copy"; } + Super+E hotkey-overlay-title="Umlaute" { spawn "bash" "-c" "echo 'ä\nö\nü\nß\nÄ\nÖ\nÜ' | fuzzel -d | wl-copy"; } // You can also use a shell. Do this if you need pipes, multiple commands, etc. // Note: the entire command goes as a single argument in the end. diff --git a/packages/nvim/default.nix b/packages/nvim/default.nix index d0836d1..ba6e32f 100644 --- a/packages/nvim/default.nix +++ b/packages/nvim/default.nix @@ -32,7 +32,8 @@ programs.neovim.plugins = [ # ".config/nvim/lua/plugins/coq.lua".source = ./lua/plugins/coq.lua; ".config/nvim/lua/plugins/blink-cmp.lua".source = ./lua/plugins/blink-cmp.lua; ".config/nvim/lua/plugins/lsp.lua".source = ./lua/plugins/lsp.lua; -# ".config/nvim/lua/plugins/mason.lua".source = ./lua/plugins/mason.lua; + ".config/nvim/lua/plugins/mason.lua".source = ./lua/plugins/mason.lua; + ".config/nvim/lua/plugins/mason-lspconfig.lua".source = ./lua/plugins/mason-lspconfig.lua; # ".config/nvim/lua/plugins/treesitter.lua".source = ./lua/plugins/treesitter.lua; ".config/nvim/lua/plugins/catppuccin.lua".source = ./lua/plugins/catppuccin.lua; ".config/nvim/lua/plugins/telescope.lua".source = ./lua/plugins/telescope.lua; @@ -44,7 +45,7 @@ programs.neovim.plugins = [ ".config/nvim/lua/plugins/trouble.lua".source = ./lua/plugins/trouble.lua; ".config/nvim/lua/plugins/dap.lua".source = ./lua/plugins/dap.lua; ".config/nvim/lua/plugins/blankline.lua".source = ./lua/plugins/blankline.lua; - ".config/nvim/lua/plugins/rustaceanvim.lua".source = ./lua/plugins/rustaceanvim.lua; + # ".config/nvim/lua/plugins/rustaceanvim.lua".source = ./lua/plugins/rustaceanvim.lua; ".config/nvim/lua/plugins/lazygit.lua".source = ./lua/plugins/lazygit.lua; ".config/nvim/lua/plugins/toggleterm.lua".source = ./lua/plugins/toggleterm.lua; ".config/nvim/lua/plugins/love.lua".source = ./lua/plugins/love.lua; @@ -57,6 +58,8 @@ programs.neovim.plugins = [ ".config/nvim/lua/plugins/tiny-inline-diagnostic.lua".source = ./lua/plugins/tiny-inline-diagnostic.lua; ".config/nvim/lua/plugins/conform.lua".source = ./lua/plugins/conform.lua; ".config/nvim/lua/plugins/nvim-tree.lua".source = ./lua/plugins/nvim-tree.lua; + ".config/nvim/lua/plugins/notify.lua".source = ./lua/plugins/notify.lua; + # ".config/nvim/lua/plugins/go.lua".source = ./lua/plugins/go.lua; # ".config/nvim/lua/plugins/typst.lua".source = ./lua/plugins/typst.lua; diff --git a/packages/nvim/init.lua b/packages/nvim/init.lua index 87450c2..47d58cb 100644 --- a/packages/nvim/init.lua +++ b/packages/nvim/init.lua @@ -112,13 +112,6 @@ dap.configurations.rust = dap.configurations.gdb -------------------------------------------- local builtin = require("telescope.builtin") local conform = require("conform") --- Rust binds -vim.keymap.set("n", "rrr", ":RustRun", { desc = "Run rust program" }) -vim.keymap.set("n", "rd", ":RustLsp debug", { desc = "Debug rust program" }) -vim.keymap.set("n", "rh", ":RustLsp hover actions", { desc = "rust hover actions" }) -vim.keymap.set("n", "re", ":RustLsp explainError", { desc = "explain rust error" }) -vim.keymap.set("n", "rs", ":RustLsp openDocs", { desc = "open rust docs for symbol under cursor" }) -vim.keymap.set("n", "rrn", ":RustLsp ssr ", { desc = "rust rename" }) -- Love binds vim.keymap.set("n", "lr", ":LoveRun", { desc = "Love run" }) -- Telescope binds @@ -145,7 +138,7 @@ vim.keymap.set("n", "tt", ":ToggleTerm direction=tab size=50 ", { de vim.keymap.set("n", "tv", ":ToggleTerm direction=vertical ", { desc = "Open terminal vertical" }) vim.keymap.set("n", "ts", ":ToggleTerm direction=vertical ", { desc = "select open terminal" }) -- file explorer binds (nvim-tree) -vim.keymap.set("n", "fe", ":NvimTreeToggle ", { desc = "select open terminal" }) +vim.keymap.set("n", "fe", ":NvimTreeToggle ", { desc = "Toggle nvim tree" }) -- code actions vim.keymap.set("n", "ca", function() require("tiny-code-action").code_action() @@ -154,3 +147,5 @@ end, { desc = "Show code actions", noremap = true, silent = true }) -- disable annoying inline type things vim.lsp.inlay_hint.enable(false) vim.diagnostic.config({virtual_text = false}) + + diff --git a/packages/nvim/lua/plugins/lsp.lua b/packages/nvim/lua/plugins/lsp.lua index 67de36d..50ee281 100644 --- a/packages/nvim/lua/plugins/lsp.lua +++ b/packages/nvim/lua/plugins/lsp.lua @@ -1,32 +1,70 @@ return { 'neovim/nvim-lspconfig', dependencies = { 'saghen/blink.cmp' }, + config = function(_,_) - -- example using `opts` for defining servers - opts = { - servers = { - lua_ls = {}, - nil_ls = {}, - -- vue_ls = {}, - -- rust_analyzer = {}, - -- gopls = {}, + local vue_language_server_path = vim.fn.expand '$MASON/packages' .. '/vue-language-server' .. '/node_modules/@vue/language-server' + + local tsserver_filetypes = { 'typescript', 'javascript', 'javascriptreact', 'typescriptreact', 'vue' } + local vue_plugin = { + name = '@vue/typescript-plugin', + location = vue_language_server_path, + languages = { 'vue' }, + configNamespace = 'typescript', } - }, - config = function(_, opts) - local lspconfig = require('lspconfig') - for server, config in pairs(opts.servers) do - -- passing config.capabilities to blink.cmp merges with the capabilities in your - -- `opts[server].capabilities, if you've defined it - config.capabilities = require('blink.cmp').get_lsp_capabilities(config.capabilities) - lspconfig[server].setup(config) - end + local vtsls_config = { + settings = { + vtsls = { + tsserver = { + globalPlugins = { + vue_plugin, + }, + }, + }, + }, + filetypes = tsserver_filetypes, + } + + local ts_ls_config = { + init_options = { + plugins = { + vue_plugin, + }, + }, + filetypes = tsserver_filetypes, + } + + -- If you are on most recent `nvim-lspconfig` + local vue_ls_config = {} + -- nvim 0.11 or above + vim.lsp.config('vtsls', vtsls_config) + vim.lsp.config('vue_ls', vue_ls_config) + vim.lsp.config('lua_ls', {}) + -- vim.lsp.config('rust_analyzer', {}) + vim.lsp.enable({'vtsls', 'vue_ls', 'lua_ls'}) end - -- -- example calling setup directly for each LSP - -- config = function() - -- local capabilities = require('blink.cmp').get_lsp_capabilities() - -- local lspconfig = require('lspconfig') - -- - -- lspconfig['lua_ls'].setup({ capabilities = capabilities }) - -- end + + -- opts = { + -- servers = { + -- lua_ls = {}, + -- nil_ls = {}, + -- vstls = {}, + -- vue_ls = {}, + -- -- rust_analyzer = {}, + -- -- gopls = {}, + -- } + -- }, + -- config = function(_, opts) + -- for server, config in pairs(opts.servers) do + -- config.capabilities = require('blink.cmp').get_lsp_capabilities(config.capabilities) + -- + -- -- Verwende `vim.lsp.config` um die Konfiguration anzupassen + -- vim.lsp.config(server, config) + -- + -- -- Aktiviere die Konfiguration + -- vim.lsp.enable(server) + -- end + -- end } + diff --git a/packages/nvim/lua/plugins/mason-lspconfig.lua b/packages/nvim/lua/plugins/mason-lspconfig.lua new file mode 100644 index 0000000..da4ffd4 --- /dev/null +++ b/packages/nvim/lua/plugins/mason-lspconfig.lua @@ -0,0 +1,8 @@ +return { + "mason-org/mason-lspconfig.nvim", + opts = {}, + dependencies = { + { "mason-org/mason.nvim", opts = {} }, + "neovim/nvim-lspconfig", + }, +} diff --git a/packages/nvim/lua/plugins/mason.lua b/packages/nvim/lua/plugins/mason.lua index 73457d4..bad19f3 100644 --- a/packages/nvim/lua/plugins/mason.lua +++ b/packages/nvim/lua/plugins/mason.lua @@ -1,37 +1,46 @@ return { - - "williamboman/mason.nvim", - cmd = "Mason", - keys = { { "cm", "Mason", desc = "Mason" } }, - build = ":MasonUpdate", - opts_extend = { "ensure_installed" }, - opts = { - ensure_installed = { - "stylua", - "shfmt", - }, - }, - ---@param opts MasonSettings | {ensure_installed: string[]} - config = function(_, opts) - require("mason").setup(opts) - local mr = require("mason-registry") - mr:on("package:install:success", function() - vim.defer_fn(function() - -- trigger FileType event to possibly load this newly installed LSP server - require("lazy.core.handler.event").trigger({ - event = "FileType", - buf = vim.api.nvim_get_current_buf(), - }) - end, 100) - end) - - mr.refresh(function() - for _, tool in ipairs(opts.ensure_installed) do - local p = mr.get_package(tool) - if not p:is_installed() then - p:install() - end - end - end) - end, + "mason-org/mason.nvim", + config = function () + require("mason").setup() + end } + + +-- return { +-- +-- "williamboman/mason.nvim", +-- cmd = "Mason", +-- keys = { { "cm", "Mason", desc = "Mason" } }, +-- build = ":MasonUpdate", +-- opts_extend = { "ensure_installed" }, +-- opts = { +-- ensure_installed = { +-- -- "stylua", +-- -- "shfmt", +-- }, +-- }, +-- ---@param opts MasonSettings | {ensure_installed: string[]} +-- config = function(_, opts) +-- require("mason").setup(opts) +-- local mr = require("mason-registry") +-- mr:on("package:install:success", function() +-- vim.defer_fn(function() +-- -- trigger FileType event to possibly load this newly installed LSP server +-- require("lazy.core.handler.event").trigger({ +-- event = "FileType", +-- buf = vim.api.nvim_get_current_buf(), +-- }) +-- end, 100) +-- end) +-- +-- mr.refresh(function() +-- for _, tool in ipairs(opts.ensure_installed) do +-- local p = mr.get_package(tool) +-- if not p:is_installed() then +-- p:install() +-- end +-- end +-- end) +-- end, +-- } + diff --git a/packages/nvim/lua/plugins/notify.lua b/packages/nvim/lua/plugins/notify.lua new file mode 100644 index 0000000..716c948 --- /dev/null +++ b/packages/nvim/lua/plugins/notify.lua @@ -0,0 +1,6 @@ +return { + "rcarriga/nvim-notify", + config = function () + vim.notify = require("notify") + end +} diff --git a/packages/nvim/lua/plugins/rustaceanvim.lua b/packages/nvim/lua/plugins/rustaceanvim.lua index eb83332..7f4356d 100644 --- a/packages/nvim/lua/plugins/rustaceanvim.lua +++ b/packages/nvim/lua/plugins/rustaceanvim.lua @@ -1,5 +1,29 @@ return { - 'mrcjkb/rustaceanvim', - version = '^6', -- Recommended - lazy = false, -- This plugin is already lazy + "mrcjkb/rustaceanvim", + version = "^6", -- Recommended + lazy = false, -- This plugin is already lazy + + keys = { + { "rrr", ":RustRun", desc = "Rust run" }, + {"rd", ":RustLsp debug", desc = "Debug rust program" }, + {"rh", ":RustLsp hover actions", desc = "rust hover actions" }, + {"re", ":RustLsp explainError", desc = "explain rust error" }, + {"rs", ":RustLsp openDocs",desc = "open rust docs for symbol under cursor" }, + {"rrn", ":RustLsp ssr ", desc = "rust rename" } + }, + -- opts = { + -- function() + -- vim.keymap.set("n", "rrr", ":RustRun", { desc = "Run rust program" }) + -- vim.keymap.set("n", "rd", ":RustLsp debug", { desc = "Debug rust program" }) + -- vim.keymap.set("n", "rh", ":RustLsp hover actions", { desc = "rust hover actions" }) + -- vim.keymap.set("n", "re", ":RustLsp explainError", { desc = "explain rust error" }) + -- vim.keymap.set( + -- "n", + -- "rs", + -- ":RustLsp openDocs", + -- { desc = "open rust docs for symbol under cursor" } + -- ) + -- vim.keymap.set("n", "rrn", ":RustLsp ssr ", { desc = "rust rename" }) + -- end, + -- }, } diff --git a/packages/other/default.nix b/packages/other/default.nix index dbb7648..56eea38 100644 --- a/packages/other/default.nix +++ b/packages/other/default.nix @@ -15,9 +15,9 @@ set preview_images_method kitty programs.git = { enable = true; - userName = "Nico"; - userEmail = "nicovessen@gmail.com"; - extraConfig = { + settings.user.name = "Nico"; + settings.user.email = "nico@getmemy.coffee"; + settings.extraConfig = { safe.directory = "/etc/nixos"; }; }; diff --git a/packages/settings.json b/packages/settings.json new file mode 100644 index 0000000..e69de29 diff --git a/packages/terminal/default.nix b/packages/terminal/default.nix index b831707..edcc149 100644 --- a/packages/terminal/default.nix +++ b/packages/terminal/default.nix @@ -48,8 +48,11 @@ programs.zsh = { initContent = '' eval "$(starship init zsh)" + + export NIX_LD=$(nix eval --impure --raw --expr 'let pkgs = import {}; NIX_LD = pkgs.lib.fileContents "${pkgs.stdenv.cc}/nix-support/dynamic-linker"; in NIX_LD') ''; + zplug = { enable = false; plugins = [ diff --git a/packages/zed-editor/default.nix b/packages/zed-editor/default.nix new file mode 100644 index 0000000..fb6c7f7 --- /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..2e3835d --- /dev/null +++ b/packages/zed-editor/settings.json @@ -0,0 +1,57 @@ +{ + "diagnostics": { + "include_warnings": true, + "inline": { + "enabled": true + } +}, + "git": { + "inline_blame": { + "enabled": false + } +}, + "ssh_connections": [ + { + "host": "localhost", + "projects": [ + { + "paths": [ + "/home/dev/ids/prog" + ] + } + ] + } + ], + "agent": { + "enabled": true + }, + "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" + }, + "features": { + "edit_prediction_provider": "none" + }, + "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/flalingo/arduino/flake.nix b/shells/flalingo/arduino/flake.nix new file mode 100644 index 0000000..24c082d --- /dev/null +++ b/shells/flalingo/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/flalingo/devenv.lock b/shells/flalingo/devenv.lock new file mode 100644 index 0000000..6e2114e --- /dev/null +++ b/shells/flalingo/devenv.lock @@ -0,0 +1,103 @@ +{ + "nodes": { + "devenv": { + "locked": { + "dir": "src/modules", + "lastModified": 1761343822, + "owner": "cachix", + "repo": "devenv", + "rev": "679d2951cee2d09da3c732d00b320ce752d21ee0", + "type": "github" + }, + "original": { + "dir": "src/modules", + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1760663237, + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1758532697, + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "207a4cb0e1253c7658c6736becc6eb9cace1f25f", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "git-hooks": "git-hooks", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": [ + "git-hooks" + ] + } + } + }, + "root": "root", + "version": 7 +} diff --git a/shells/flalingo/devenv.nix b/shells/flalingo/devenv.nix new file mode 100644 index 0000000..f1ef704 --- /dev/null +++ b/shells/flalingo/devenv.nix @@ -0,0 +1,24 @@ +{ + pkgs, + lib, + config, + ... +}: +{ + # https://devenv.sh/languages/ + languages = { + rust.enable = true; + javascript.enable = true; + }; + + # https://devenv.sh/packages/ + packages = [ + pkgs.nodejs + pkgs.yarn + pkgs.wabt # Wasm dependencies for Tauri + # pkgs.webkitgtk # Linux Tauri dependency (Webview2 is the one used on Widnows) + ]; + + # See full reference at https://devenv.sh/reference/options/ +} + diff --git a/shells/flalingo/devenv.yaml b/shells/flalingo/devenv.yaml new file mode 100644 index 0000000..116a2ad --- /dev/null +++ b/shells/flalingo/devenv.yaml @@ -0,0 +1,15 @@ +# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json +inputs: + nixpkgs: + url: github:cachix/devenv-nixpkgs/rolling + +# If you're using non-OSS software, you can set allowUnfree to true. +# allowUnfree: true + +# If you're willing to use a package that's vulnerable +# permittedInsecurePackages: +# - "openssl-1.1.1w" + +# If you have more than one devenv you can merge them +#imports: +# - ./backend diff --git a/shells/flalingo/flake.lock b/shells/flalingo/flake.lock new file mode 100644 index 0000000..2ed4352 --- /dev/null +++ b/shells/flalingo/flake.lock @@ -0,0 +1,100 @@ +{ + "nodes": { + "fenix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1756795219, + "narHash": "sha256-tKBQtz1JLKWrCJUxVkHKR+YKmVpm0KZdJdPWmR2slQ8=", + "owner": "nix-community", + "repo": "fenix", + "rev": "80dbdab137f2809e3c823ed027e1665ce2502d74", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "fenix", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1756819007, + "narHash": "sha256-12V64nKG/O/guxSYnr5/nq1EfqwJCdD2+cIGmhz3nrE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "aaff8c16d7fc04991cac6245bee1baa31f72b1e1", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "fenix": "fenix", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1756597274, + "narHash": "sha256-wfaKRKsEVQDB7pQtAt04vRgFphkVscGRpSx3wG1l50E=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "21614ed2d3279a9aa1f15c88d293e65a98991b30", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/shells/flalingo/flake.nix b/shells/flalingo/flake.nix new file mode 100644 index 0000000..8447ea6 --- /dev/null +++ b/shells/flalingo/flake.nix @@ -0,0 +1,111 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + fenix.url = "github:nix-community/fenix"; + fenix.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = { + self, + nixpkgs, + flake-utils, + fenix, + }: + flake-utils.lib.eachDefaultSystem (system: let + pkgs = import nixpkgs { + system = system; + config.allowUnfree = true; + # config.android_sdk.accept_license = true; + }; + + # android_sdk = + # (pkgs.androidenv.composeAndroidPackages { + # platformVersions = ["34"]; + # ndkVersions = ["26.3.11579264"]; + # includeNDK = true; + # useGoogleAPIs = false; + # useGoogleTVAddOns = false; + # includeEmulator = false; + # includeSystemImages = false; + # includeSources = false; + # }) + # .androidsdk; + + packages = with pkgs; [ + curl + wget + pkg-config + + nodejs_20 + # typescript-language-server + # vtsls + # vue-language-server + + zed-editor + # (vscode-with-extensions.override { + # # vscode = vscodium; + # vscodeExtensions = with vscode-extensions; [ + # vscodevim.vim + # vue.volar + # catppuccin.catppuccin-vsc + # github.copilot + # github.copilot-chat + # tauri-apps.tauri-vscode + # rust-lang.rust-analyzer + # ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + # # { + # # name = "vscode-arduino-community"; + # # publisher = "vscode-arduino"; + # # version = "0.7.2"; + # # sha256 = "/HdPJ6LBnyPhz7jeJ0MLRXO2L3bcAzM7J65nKsXsacY="; + # # } + # ]; + # }) + + (with fenix.packages.${system}; + combine [ + complete.rustc + complete.cargo + complete.clippy + # targets.aarch64-linux-android.latest.rust-std + # targets.armv7-linux-androideabi.latest.rust-std + # targets.i686-linux-android.latest.rust-std + targets.x86_64-linux-android.latest.rust-std + ]) + rust-analyzer + sqlx-cli + + # android_sdk + jdk + ]; + + libraries = with pkgs; [ + gtk3 + libsoup_3 + webkitgtk_4_1 + cairo + gdk-pixbuf + glib + dbus + openssl + librsvg + ]; + in { + devShell = pkgs.mkShell { + buildInputs = packages ++ libraries; + + shellHook = '' + zsh + + exit + ''; + + LD_LIBRARY_PATH = "${pkgs.lib.makeLibraryPath libraries}:$LD_LIBRARY_PATH"; + XDG_DATA_DIRS = "${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}:$XDG_DATA_DIRS"; + # ANDROID_HOME = "${android_sdk}/libexec/android-sdk"; + # NDK_HOME = "${android_sdk}/libexec/android-sdk/ndk/26.3.11579264"; + # GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${android_sdk}/libexec/android-sdk/build-tools/34.0.0/aapt2"; + }; + }); +} diff --git a/shells/flalingo/flutter/flake.nix b/shells/flalingo/flutter/flake.nix new file mode 100644 index 0000000..b00d8c9 --- /dev/null +++ b/shells/flalingo/flutter/flake.nix @@ -0,0 +1,43 @@ +{ +description = "Flutter 3.13.x"; +inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; +}; +outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + config = { + android_sdk.accept_license = true; + allowUnfree = true; + }; + }; + androidComposition = pkgs.androidenv.composeAndroidPackages { + buildToolsVersions = [ "28.0.3" "34.0.0" ]; + platformVersions = [ "34" "35" "33" ]; + includeNDK = true; + ndkVersions = ["26.3.11579264"]; + abiVersions = [ "armeabi-v7a" "arm64-v8a" ]; + cmakeVersions = [ "3.22.1" ]; + }; + androidSdk = androidComposition.androidsdk; + in + { + devShell = + with pkgs; mkShell rec { + ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; + GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${androidSdk}/libexec/android-sdk/build-tools/34.0.0/aapt2"; + buildInputs = [ + flutter + androidSdk # The customized SDK that we've made above + jdk17 + ]; + shellHook = '' + zsh + exit + ''; + }; + }); +} diff --git a/shells/flalingo/flutter/flake.nix.bk b/shells/flalingo/flutter/flake.nix.bk new file mode 100644 index 0000000..fe2e04e --- /dev/null +++ b/shells/flalingo/flutter/flake.nix.bk @@ -0,0 +1,109 @@ +{ + inputs = { + nixpkgs.url = "nixpkgs/nixpkgs-unstable"; + + flake-parts = { + url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; + }; + + android-nixpkgs.url = "github:tadfisher/android-nixpkgs"; + + cursor.url = "github:omarcresp/cursor-flake/main"; + }; + + + outputs = { + self, + nixpkgs, + flake-parts, + cursor, + ... + } @ inputs: + flake-parts.lib.mkFlake {inherit inputs;} { + systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; + perSystem = { + pkgs, + system, + lib, + ... + }: { + devShells.default = let + pkgs = import nixpkgs { + inherit system; + config = { + allowUnfree = true; + android_sdk.accept_license = true; + }; + overlays = []; + }; + android-nixpkgs = pkgs.callPackage inputs.android-nixpkgs {}; + androidSdk = android-nixpkgs.sdk (sdkPkgs: + with sdkPkgs; [ + cmdline-tools-latest + build-tools-34-0-0 + build-tools-30-0-3 + platform-tools + platforms-android-35 + platforms-android-34 + platforms-android-33 + platforms-android-31 + platforms-android-30 + ndk-26-3-11579264 + cmake-3-22-1 + ]); + PWD = builtins.getEnv "PWD"; + patchedFlutter = pkgs.flutter.override (prev: rec { + flutter = prev.flutter.overrideAttrs (prevAttrs: { + patches = prevAttrs.patches ++ [ + # This patch is needed to avoid the Kotlin Gradle plugin writing to the store. + (pkgs.writeText "kotlin-fix.patch" '' + --- a/packages/flutter_tools/gradle/build.gradle.kts + +++ b/packages/flutter_tools/gradle/build.gradle.kts + @@ -4,6 +4,8 @@ + + import org.jetbrains.kotlin.gradle.dsl.JvmTarget + + +gradle.startParameter.projectCacheDir = layout.buildDirectory.dir("cache").get().asFile + + + plugins { + `java-gradle-plugin` + groovy + '') + ]; + passthru = prevAttrs.passthru // { + sdk = flutter; + }; + # postInstall = (prevAttrs.postInstall or "") + '' + # mkdir -p $out/bin/cache + # touch $out/bin/cache/engine.realm + # ''; + }); + }); + in + pkgs.mkShell { + ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; + ANDROID_NDK_ROOT = "${androidSdk}/libexec/android-sdk/ndk-bundle"; + ANDROID_AVD_HOME = "${PWD}/.android/avd"; + ANDROID_HOME = "${androidSdk}/libexec/android-sdk"; + FLUTTER_SDK = "${patchedFlutter}"; + GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${androidSdk}/share/android-sdk/build-tools/34.0.0/aapt2"; + buildInputs = with pkgs; [ + patchedFlutter + jdk17 + androidSdk + clang + dart + cmake + android-tools + cursor.packages.${pkgs.system}.default + ]; + shellHook = '' + zsh + exit + ''; + }; + # formatter = pkgs.alejandra; + }; + }; +} diff --git a/shells/flalingo/go/flake.nix b/shells/flalingo/go/flake.nix new file mode 100644 index 0000000..ef98c72 --- /dev/null +++ b/shells/flalingo/go/flake.nix @@ -0,0 +1,32 @@ +{ + description = "GO"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + }; + in + { + devShell = + with pkgs; mkShell rec { + # ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; + GOPATH="${go}"; + buildInputs = [ + go + ]; + + shellHook = '' + zsh + + exit + ''; + }; + }); +} + + diff --git a/shells/flalingo/linguacafe/flake.nix b/shells/flalingo/linguacafe/flake.nix new file mode 100644 index 0000000..cdbd9cb --- /dev/null +++ b/shells/flalingo/linguacafe/flake.nix @@ -0,0 +1,53 @@ +{ + description = "Everything for linguacafe <3"; + 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 { + config.allowUnfree = true; + inherit system; + }; + in + { + devShell = + with pkgs; mkShell rec { + buildInputs = [ + vue-language-server + cursor.packages.${pkgs.system}.default + php + + (vscode-with-extensions.override { + # vscode = vscodium; + vscodeExtensions = with vscode-extensions; [ + vscodevim.vim + vue.volar + catppuccin.catppuccin-vsc + github.copilot + github.copilot-chat + ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + # { + # name = "vscode-arduino-community"; + # publisher = "vscode-arduino"; + # version = "0.7.2"; + # sha256 = "/HdPJ6LBnyPhz7jeJ0MLRXO2L3bcAzM7J65nKsXsacY="; + # } + ]; + }) + + ]; + + shellHook = '' + zsh + + exit + ''; + }; + }); +} + + diff --git a/shells/flalingo/luckyshroom/flake.nix b/shells/flalingo/luckyshroom/flake.nix new file mode 100644 index 0000000..a089161 --- /dev/null +++ b/shells/flalingo/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 + ''; + }; + }); +} + + diff --git a/shells/flalingo/rust/flake.nix b/shells/flalingo/rust/flake.nix new file mode 100644 index 0000000..5611091 --- /dev/null +++ b/shells/flalingo/rust/flake.nix @@ -0,0 +1,73 @@ +{ + description = "Rust development environment"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + # Read the file relative to the flake's root + # overrides = (builtins.fromTOML (builtins.readFile (self + "/rust-toolchain.toml"))); + libPath = with pkgs; lib.makeLibraryPath [ + # load external libraries that you need in your rust project here + ]; + in + { + devShells.default = pkgs.mkShell rec { + nativeBuildInputs = [ pkgs.pkg-config ]; + buildInputs = with pkgs; [ + clang + llvmPackages.bintools + rustup + dioxus-cli + webkitgtk_4_1 + wasm-pack + wasm-bindgen-cli + curl + wget + file + openssl + gtk3 + librsvg + xdotool + ]; + + # RUSTC_VERSION = overrides.toolchain.channel; + + # https://github.com/rust-lang/rust-bindgen#environment-variables + LIBCLANG_PATH = pkgs.lib.makeLibraryPath [ pkgs.llvmPackages_latest.libclang.lib ]; + + shellHook = '' + export PATH=$PATH:''${CARGO_HOME:-~/.cargo}/bin + export PATH=$PATH:''${RUSTUP_HOME:-~/.rustup}/toolchains/$RUSTC_VERSION-x86_64-unknown-linux-gnu/bin/ + ''; + + # Add precompiled library to rustc search path + RUSTFLAGS = (builtins.map (a: ''-L ${a}/lib'') [ + # add libraries here (e.g. pkgs.libvmi) + ]); + + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (buildInputs ++ nativeBuildInputs); + + + # Add glibc, clang, glib, and other headers to bindgen search path + BINDGEN_EXTRA_CLANG_ARGS = + # Includes normal include path + (builtins.map (a: ''-I"${a}/include"'') [ + # add dev libraries here (e.g. pkgs.libvmi.dev) + pkgs.glibc.dev + ]) + # Includes with special directory paths + ++ [ + ''-I"${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include"'' + ''-I"${pkgs.glib.dev}/include/glib-2.0"'' + ''-I${pkgs.glib.out}/lib/glib-2.0/include/'' + ]; + }; + } + ); +} 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 + ''; + }; + }); +} + +