diff --git a/README.md b/README.md index 8bcb5ed..e9f9e8f 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ - Look into this for flake templates https://nix.dev/manual/nix/2.22/command-ref/new-cli/nix3-flake-init - Look into this for headscale https://carlosvaz.com/posts/setting-up-headscale-on-nixos/ - Look into this for home assistant configuration https://nixos.wiki/wiki/Home_Assistant https://myme.no/posts/2021-11-25-nixos-home-assistant.html +- This person seams to know what they are doing with home manager https://github.com/arvigeus/nixos-config/ ## Configuration set up git configuration for local development: `git config --local include.path .gitconfig` diff --git a/flake.nix b/flake.nix index 8e2192e..4f551e2 100644 --- a/flake.nix +++ b/flake.nix @@ -71,13 +71,13 @@ modules = [ ./hosts/horizon/configuration.nix nixos-hardware.nixosModules.framework-11th-gen-intel - home-manager.nixosModules.default - # { - # home-manager.useGlobalPkgs = true; - # home-manager.useUserPackages = true; - # home-manager.extraSpecialArgs = { inherit inputs; }; - # home-manager.users = import ./users; - # } + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.backupFileExtension = "backup"; + home-manager.extraSpecialArgs = { inherit inputs; }; + } ]; }; # Leyla Desktop diff --git a/hosts/horizon/configuration.nix b/hosts/horizon/configuration.nix index 018fb77..714429d 100644 --- a/hosts/horizon/configuration.nix +++ b/hosts/horizon/configuration.nix @@ -14,6 +14,10 @@ ../../enviroments/client ]; + home-manager.users.leyla.config = { + isFullUser = true; + }; + users = { leyla.isFullUser = true; ester.isFullUser = true; diff --git a/users/default.nix b/users/default.nix index 4c0b5d7..3dc52d9 100644 --- a/users/default.nix +++ b/users/default.nix @@ -4,4 +4,5 @@ users.mutableUsers = false; home-manager.extraSpecialArgs = {inherit inputs;}; + home-manager.users = import ./home.nix; } diff --git a/users/home.nix b/users/home.nix new file mode 100644 index 0000000..62be450 --- /dev/null +++ b/users/home.nix @@ -0,0 +1,5 @@ +{ + leyla = import ./leyla/home.nix; + # ester = import ./ester/home.nix; + # eve = import ./eve/home.nix; +} \ No newline at end of file diff --git a/users/leyla/default.nix b/users/leyla/default.nix index 69f8193..0089d35 100644 --- a/users/leyla/default.nix +++ b/users/leyla/default.nix @@ -6,9 +6,9 @@ }: let cfg = config.users.leyla; in { - imports = [ - ./packages.nix - ]; + # imports = [ + # ./packages.nix + # ]; options.users.leyla = { isFullUser = lib.mkEnableOption "create usable leyla user"; @@ -69,6 +69,6 @@ in { ]; }; - home-manager.users.leyla = lib.mkIf (cfg.isFullUser || cfg.isThinUser) (import ./home.nix); + # home-manager.users.leyla = lib.mkIf (cfg.isFullUser || cfg.isThinUser) (import ./home.nix); }; } diff --git a/users/leyla/home.nix b/users/leyla/home.nix index af3940a..9644e62 100644 --- a/users/leyla/home.nix +++ b/users/leyla/home.nix @@ -1,259 +1,272 @@ { + lib, config, pkgs, ... }: { - # Home Manager needs a bit of information about you and the paths it should - # manage. - home = { - username = "leyla"; - homeDirectory = "/home/leyla"; + imports = [ + ./packages.nix + ]; - # This value determines the Home Manager release that your configuration is - # compatible with. This helps avoid breakage when a new Home Manager release - # introduces backwards incompatible changes. - # - # You should not change this value, even if you update Home Manager. If you do - # want to update the value, then make sure to first check the Home Manager - # release notes. - stateVersion = "23.11"; # Please read the comment before changing. - - # The home.packages option allows you to install Nix packages into your - # environment. - packages = [ - # # Adds the 'hello' command to your environment. It prints a friendly - # # "Hello, world!" when run. - # pkgs.hello - - # # It is sometimes useful to fine-tune packages, for example, by applying - # # overrides. You can do that directly here, just don't forget the - # # parentheses. Maybe you want to install Nerd Fonts with a limited number of - # # fonts? - # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) - - # # You can also create simple shell scripts directly inside your - # # configuration. For example, this adds a command 'my-hello' to your - # # environment: - # (pkgs.writeShellScriptBin "my-hello" '' - # echo "Hello, ${config.home.username}!" - # '') - ]; - - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. - file = { - # # Building this configuration will create a copy of 'dotfiles/screenrc' in - # # the Nix store. Activating the configuration will then make '~/.screenrc' a - # # symlink to the Nix store copy. - # ".screenrc".source = dotfiles/screenrc; - - # # You can also set the file content immediately. - # ".gradle/gradle.properties".text = '' - # org.gradle.console=verbose - # org.gradle.daemon.idletimeout=3600000 - # ''; - }; - - # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. If you don't want to manage your shell through Home - # Manager then you have to manually source 'hm-session-vars.sh' located at - # either - # - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh - # - sessionVariables = { - # EDITOR = "emacs"; - }; + options = { + isFullUser = lib.mkEnableOption "create usable leyla user"; + isThinUser = lib.mkEnableOption "create usable user but witohut user applications"; + hasGPU = lib.mkEnableOption "installs gpu intensive programs"; }; - programs = { - # Let Home Manager install and manage itself. - home-manager.enable = true; + config = { + # Home Manager needs a bit of information about you and the paths it should + # manage. + home = { + username = "leyla"; + homeDirectory = "/home/leyla"; - # set up git defaults - git = { - enable = true; - userName = "Leyla Becker"; - userEmail = "git@jan-leila.com"; - extraConfig.init.defaultBranch = "main"; + # This value determines the Home Manager release that your configuration is + # compatible with. This helps avoid breakage when a new Home Manager release + # introduces backwards incompatible changes. + # + # You should not change this value, even if you update Home Manager. If you do + # want to update the value, then make sure to first check the Home Manager + # release notes. + stateVersion = "23.11"; # Please read the comment before changing. + + # The home.packages option allows you to install Nix packages into your + # environment. + packages = [ + # # Adds the 'hello' command to your environment. It prints a friendly + # # "Hello, world!" when run. + # pkgs.hello + + # # It is sometimes useful to fine-tune packages, for example, by applying + # # overrides. You can do that directly here, just don't forget the + # # parentheses. Maybe you want to install Nerd Fonts with a limited number of + # # fonts? + # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) + + # # You can also create simple shell scripts directly inside your + # # configuration. For example, this adds a command 'my-hello' to your + # # environment: + # (pkgs.writeShellScriptBin "my-hello" '' + # echo "Hello, ${config.home.username}!" + # '') + ]; + + # Home Manager is pretty good at managing dotfiles. The primary way to manage + # plain files is through 'home.file'. + file = { + # # Building this configuration will create a copy of 'dotfiles/screenrc' in + # # the Nix store. Activating the configuration will then make '~/.screenrc' a + # # symlink to the Nix store copy. + # ".screenrc".source = dotfiles/screenrc; + + # # You can also set the file content immediately. + # ".gradle/gradle.properties".text = '' + # org.gradle.console=verbose + # org.gradle.daemon.idletimeout=3600000 + # ''; + }; + + # Home Manager can also manage your environment variables through + # 'home.sessionVariables'. If you don't want to manage your shell through Home + # Manager then you have to manually source 'hm-session-vars.sh' located at + # either + # + # ~/.nix-profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh + # + # or + # + # /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh + # + sessionVariables = { + # EDITOR = "emacs"; + }; }; - # add direnv to auto load flakes for development - direnv = { - enable = true; - enableBashIntegration = true; # see note on other shells below - nix-direnv.enable = true; + programs = { + # Let Home Manager install and manage itself. + home-manager.enable = true; + + # set up git defaults + git = { + enable = true; + userName = "Leyla Becker"; + userEmail = "git@jan-leila.com"; + extraConfig.init.defaultBranch = "main"; + }; + + # add direnv to auto load flakes for development + direnv = { + enable = true; + enableBashIntegration = true; # see note on other shells below + nix-direnv.enable = true; + }; + bash.enable = true; # see note on other shells below + + # firefox = { + # enable = true; + # profiles.leyla = { + + # settings = { + # "browser.search.defaultenginename" = "Searx"; + # "browser.search.order.1" = "Searx"; + # }; + + # search = { + # force = true; + # default = "Searx"; + # engines = { + # "Nix Packages" = { + # urls = [{ + # template = "https://search.nixos.org/packages"; + # params = [ + # { name = "type"; value = "packages"; } + # { name = "query"; value = "{searchTerms}"; } + # ]; + # }]; + # icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; + # definedAliases = [ "@np" ]; + # }; + # "NixOS Wiki" = { + # urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }]; + # iconUpdateURL = "https://nixos.wiki/favicon.png"; + # updateInterval = 24 * 60 * 60 * 1000; # every day + # definedAliases = [ "@nw" ]; + # }; + # "Searx" = { + # urls = [{ template = "https://search.jan-leila.com/?q={searchTerms}"; }]; + # iconUpdateURL = "https://nixos.wiki/favicon.png"; + # updateInterval = 24 * 60 * 60 * 1000; # every day + # definedAliases = [ "@searx" ]; + # }; + # }; + # }; + + # extentions = with pkgs.nur.repos.rycee.firefox-addons; [ + # ublock-origin + # bitwarden + + # ]; + + # bookmarks = [ + # { + # name = "Media"; + # url = "https://jellyfin.jan-leila.com/"; + # keyword = ""; + # tags = [""]; + # } + # { + # name = "Drive"; + # url = "https://drive.jan-leila.com/"; + # keyword = ""; + # tags = [""]; + # } + # { + # name = "Git"; + # url = "https://git.jan-leila.com/"; + # keyword = ""; + # tags = [""]; + # } + # { + # name = "Home Automation"; + # url = "https://home-assistant.jan-leila.com/"; + # keyword = ""; + # tags = [""]; + # } + # { + # name = "Mail"; + # url = "https://mail.protonmail.com"; + # keyword = ""; + # tags = [""]; + # } + # { + # name = "Open Street Map"; + # url = "https://www.openstreetmap.org/"; + # keyword = ""; + # tags = [""]; + # } + # { + # name = "Password Manager"; + # url = "https://vault.bitwarden.com/"; + # keyword = ""; + # tags = [""]; + # } + # { + # name = "Mastodon"; + # url = "https://tech.lgbt"; + # keyword = ""; + # tags = [""]; + # } + # { + # name = "Linked In"; + # url = "https://www.linkedin.com/"; + # keyword = ""; + # tags = [""]; + # } + # { + # name = "Job Search"; + # url = "https://www.jobsinnetwork.com/?state=cleaned_history&language%5B%5D=en&query=react&locations.countryCode%5B%5D=IT&locations.countryCode%5B%5D=DE&locations.countryCode%5B%5D=NL&experience%5B%5D=medior&experience%5B%5D=junior&page=1"; + # keyword = ""; + # tags = [""]; + # } + # { + # name = "React Docs"; + # url = "https://react.dev/"; + # keyword = ""; + # tags = [""]; + # } + # # Template + # # { + # # name = ""; + # # url = ""; + # # keyword = ""; + # # tags = [""]; + # # } + # ]; + # }; + # } }; - bash.enable = true; # see note on other shells below - # firefox = { - # enable = true; - # profiles.leyla = { + dconf = { + enable = true; + settings = { + "org/gnome/desktop/interface".color-scheme = "prefer-dark"; - # settings = { - # "browser.search.defaultenginename" = "Searx"; - # "browser.search.order.1" = "Searx"; - # }; + "org/gnome/shell" = { + disable-user-extensions = false; # enables user extensions + enabled-extensions = [ + # Put UUIDs of extensions that you want to enable here. + # If the extension you want to enable is packaged in nixpkgs, + # you can easily get its UUID by accessing its extensionUuid + # field (look at the following example). + pkgs.gnomeExtensions.dash-to-dock.extensionUuid - # search = { - # force = true; - # default = "Searx"; - # engines = { - # "Nix Packages" = { - # urls = [{ - # template = "https://search.nixos.org/packages"; - # params = [ - # { name = "type"; value = "packages"; } - # { name = "query"; value = "{searchTerms}"; } - # ]; - # }]; - # icon = "''${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - # definedAliases = [ "@np" ]; - # }; - # "NixOS Wiki" = { - # urls = [{ template = "https://nixos.wiki/index.php?search={searchTerms}"; }]; - # iconUpdateURL = "https://nixos.wiki/favicon.png"; - # updateInterval = 24 * 60 * 60 * 1000; # every day - # definedAliases = [ "@nw" ]; - # }; - # "Searx" = { - # urls = [{ template = "https://search.jan-leila.com/?q={searchTerms}"; }]; - # iconUpdateURL = "https://nixos.wiki/favicon.png"; - # updateInterval = 24 * 60 * 60 * 1000; # every day - # definedAliases = [ "@searx" ]; - # }; - # }; - # }; + # Alternatively, you can manually pass UUID as a string. + # "dash-to-dock@micxgx.gmail.com" + ]; + }; - # extentions = with pkgs.nur.repos.rycee.firefox-addons; [ - # ublock-origin - # bitwarden + "org/gnome/shell/extensions/dash-to-dock" = { + "dock-position" = "LEFT"; + "intellihide-mode" = "ALL_WINDOWS"; + "show-trash" = false; + "require-pressure-to-show" = false; + "show-mounts" = false; + }; - # ]; - - # bookmarks = [ - # { - # name = "Media"; - # url = "https://jellyfin.jan-leila.com/"; - # keyword = ""; - # tags = [""]; - # } - # { - # name = "Drive"; - # url = "https://drive.jan-leila.com/"; - # keyword = ""; - # tags = [""]; - # } - # { - # name = "Git"; - # url = "https://git.jan-leila.com/"; - # keyword = ""; - # tags = [""]; - # } - # { - # name = "Home Automation"; - # url = "https://home-assistant.jan-leila.com/"; - # keyword = ""; - # tags = [""]; - # } - # { - # name = "Mail"; - # url = "https://mail.protonmail.com"; - # keyword = ""; - # tags = [""]; - # } - # { - # name = "Open Street Map"; - # url = "https://www.openstreetmap.org/"; - # keyword = ""; - # tags = [""]; - # } - # { - # name = "Password Manager"; - # url = "https://vault.bitwarden.com/"; - # keyword = ""; - # tags = [""]; - # } - # { - # name = "Mastodon"; - # url = "https://tech.lgbt"; - # keyword = ""; - # tags = [""]; - # } - # { - # name = "Linked In"; - # url = "https://www.linkedin.com/"; - # keyword = ""; - # tags = [""]; - # } - # { - # name = "Job Search"; - # url = "https://www.jobsinnetwork.com/?state=cleaned_history&language%5B%5D=en&query=react&locations.countryCode%5B%5D=IT&locations.countryCode%5B%5D=DE&locations.countryCode%5B%5D=NL&experience%5B%5D=medior&experience%5B%5D=junior&page=1"; - # keyword = ""; - # tags = [""]; - # } - # { - # name = "React Docs"; - # url = "https://react.dev/"; - # keyword = ""; - # tags = [""]; - # } - # # Template - # # { - # # name = ""; - # # url = ""; - # # keyword = ""; - # # tags = [""]; - # # } - # ]; - # }; - # } - }; - - dconf = { - enable = true; - settings = { - "org/gnome/desktop/interface".color-scheme = "prefer-dark"; - - "org/gnome/shell" = { - disable-user-extensions = false; # enables user extensions - enabled-extensions = [ - # Put UUIDs of extensions that you want to enable here. - # If the extension you want to enable is packaged in nixpkgs, - # you can easily get its UUID by accessing its extensionUuid - # field (look at the following example). - pkgs.gnomeExtensions.dash-to-dock.extensionUuid - - # Alternatively, you can manually pass UUID as a string. - # "dash-to-dock@micxgx.gmail.com" - ]; - }; - - "org/gnome/shell/extensions/dash-to-dock" = { - "dock-position" = "LEFT"; - "intellihide-mode" = "ALL_WINDOWS"; - "show-trash" = false; - "require-pressure-to-show" = false; - "show-mounts" = false; - }; - - "org/gnome/settings-daemon/plugins/media-keys" = { - custom-keybindings = [ - "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" - ]; - }; - "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { - binding = "t"; - command = "kgx"; - name = "Open Terminal"; + "org/gnome/settings-daemon/plugins/media-keys" = { + custom-keybindings = [ + "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" + ]; + }; + "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { + binding = "t"; + command = "kgx"; + name = "Open Terminal"; + }; }; }; }; diff --git a/users/leyla/packages.nix b/users/leyla/packages.nix index a5960d9..e14f157 100644 --- a/users/leyla/packages.nix +++ b/users/leyla/packages.nix @@ -1,17 +1,12 @@ { lib, config, + osConfig, pkgs, inputs, ... -}: let - cfg = config.users.leyla; -in { - imports = [ - ../../overlays/intellij.nix - ../../overlays/vscodium.nix - ]; - +}: +{ nixpkgs = { overlays = [ inputs.nix-vscode-extensions.overlays.default @@ -19,119 +14,177 @@ in { }; programs = { - bash.shellAliases = lib.mkIf cfg.isFullUser { + bash.shellAliases = lib.mkIf config.isFullUser { code = "codium"; }; - steam = lib.mkIf cfg.isFullUser { + vscode = let + extensions = inputs.nix-vscode-extensions.extensions.${pkgs.system}; + open-vsx = extensions.open-vsx; + vscode-marketplace = extensions.vscode-marketplace; + in + { enable = true; - remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play - dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server + + package = pkgs.vscodium; + + mutableExtensionsDir = false; + enableUpdateCheck = false; + enableExtensionUpdateCheck = false; + + userSettings = { + "workbench.colorTheme" = "Atom One Dark"; + }; + + extensions = with extensions.open-vsx; [ + # vs code feel extensions + ms-vscode.atom-keybindings + akamud.vscode-theme-onedark + streetsidesoftware.code-spell-checker + streetsidesoftware.code-spell-checker-german + streetsidesoftware.code-spell-checker-italian + jeanp413.open-remote-ssh + + # nix extensions + pinage404.nix-extension-pack + jnoortheen.nix-ide + + # html extensions + formulahendry.auto-rename-tag + ms-vscode.live-server + + # js extensions + dsznajder.es7-react-js-snippets + dbaeumer.vscode-eslint + standard.vscode-standard + firsttris.vscode-jest-runner + stylelint.vscode-stylelint + tauri-apps.tauri-vscode + + # misc extensions + bungcip.better-toml + + # the number at the start of the name here doesnt resolve nicely so we have to refernce it as a part of open-vsx directly instead of though with + open-vsx."10nates".ollama-autocoder + ] + ++ (with extensions.vscode-marketplace; [ + # js extensions + karyfoundation.nearley + ]); }; - noisetorch.enable = cfg.isFullUser; - adb.enable = cfg.isFullUser; + # steam = lib.mkIf config.isFullUser { + # enable = true; + # remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play + # dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server + # }; + + # noisetorch.enable = config.isFullUser; + + # adb.enable = config.isFullUser; }; - users.users.leyla.packages = lib.mkIf (cfg.isFullUser || cfg.isThinUser) ( - lib.mkMerge [ - ( - with pkgs; [ - # comand line tools - yt-dlp - ffmpeg - imagemagick - ] - ) - ( - lib.mkIf (!cfg.isThinUser) ( + home = { + packages = lib.mkIf (config.isFullUser || config.isThinUser) ( + lib.mkMerge [ + ( with pkgs; [ - #foss platforms - signal-desktop - bitwarden - firefox - ungoogled-chromium - libreoffice - inkscape - gimp - krita - freecad - # cura - kicad-small - makemkv - transmission_4-gtk - onionshare - easytag - # rhythmbox - (lib.mkIf cfg.hasGPU obs-studio) - # wireshark - # rpi-imager - # fritzing - - # proprietary platforms - discord - obsidian - steam - (lib.mkIf cfg.hasGPU davinci-resolve) - - # development tools - (vscode-with-extensions.override { - vscode = vscodium; - vscodeExtensions = with open-vsx; - [ - # vs code feel extensions - ms-vscode.atom-keybindings - akamud.vscode-theme-onedark - streetsidesoftware.code-spell-checker - streetsidesoftware.code-spell-checker-german - streetsidesoftware.code-spell-checker-italian - jeanp413.open-remote-ssh - - # nix extensions - pinage404.nix-extension-pack - jnoortheen.nix-ide - - # html extensions - formulahendry.auto-rename-tag - ms-vscode.live-server - - # js extensions - dsznajder.es7-react-js-snippets - dbaeumer.vscode-eslint - standard.vscode-standard - firsttris.vscode-jest-runner - stylelint.vscode-stylelint - tauri-apps.tauri-vscode - - # misc extensions - bungcip.better-toml - - open-vsx."10nates".ollama-autocoder - ] - ++ (with vscode-marketplace; [ - # js extensions - karyfoundation.nearley - ]); - }) - androidStudioPackages.canary - jetbrains.idea-community - dbeaver-bin - bruno - - # system tools - protonvpn-gui - openvpn - nextcloud-client - noisetorch - - # hardware managment tools - (lib.mkIf config.hardware.piperMouse.enable piper) - (lib.mkIf config.hardware.openRGB.enable openrgb) - (lib.mkIf config.hardware.viaKeyboard.enable via) + # comand line tools + yt-dlp + ffmpeg + imagemagick ] ) - ) - ] - ); + ( + lib.mkIf (!config.isThinUser) ( + with pkgs; [ + #foss platforms + signal-desktop + bitwarden + firefox + ungoogled-chromium + libreoffice + inkscape + gimp + krita + freecad + # cura + kicad-small + makemkv + transmission_4-gtk + onionshare + easytag + # rhythmbox + (lib.mkIf config.hasGPU obs-studio) + # wireshark + # rpi-imager + # fritzing + + # proprietary platforms + discord + obsidian + steam + (lib.mkIf config.hasGPU davinci-resolve) + + # development tools + # (vscode-with-extensions.override { + # vscode = vscodium; + # vscodeExtensions = with open-vsx; + # [ + # # vs code feel extensions + # ms-vscode.atom-keybindings + # akamud.vscode-theme-onedark + # streetsidesoftware.code-spell-checker + # streetsidesoftware.code-spell-checker-german + # streetsidesoftware.code-spell-checker-italian + # jeanp413.open-remote-ssh + + # # nix extensions + # pinage404.nix-extension-pack + # jnoortheen.nix-ide + + # # html extensions + # formulahendry.auto-rename-tag + # ms-vscode.live-server + + # # js extensions + # dsznajder.es7-react-js-snippets + # dbaeumer.vscode-eslint + # standard.vscode-standard + # firsttris.vscode-jest-runner + # stylelint.vscode-stylelint + # tauri-apps.tauri-vscode + + # # misc extensions + # bungcip.better-toml + + # open-vsx."10nates".ollama-autocoder + # ] + # ++ (with vscode-marketplace; [ + # # js extensions + # karyfoundation.nearley + # ]); + # }) + androidStudioPackages.canary + jetbrains.idea-community + dbeaver-bin + bruno + + # system tools + protonvpn-gui + openvpn + nextcloud-client + noisetorch + + # hardware managment tools + (lib.mkIf osConfig.hardware.piperMouse.enable piper) + (lib.mkIf osConfig.hardware.openRGB.enable openrgb) + (lib.mkIf osConfig.hardware.viaKeyboard.enable via) + ] + ) + ) + ] + ); + }; }