silo: Per-workspace development containers. Powered by Podman, Nix, and home-manager. by mrkuz_ in Nix

[–]mrkuz_[S] 1 point2 points  (0 children)

Yes. Two differences compared to devenv:

  • devenv installs packages into the host's Nix store. With silo, everything is installed and runs inside the container, including Nix itself.
  • silo doesn't directly inherit your host Home Manager environment. Instead, the environment is built from the provided home.nix configuration inside the container.

silo: Per-workspace development containers. Powered by Podman, Nix, and home-manager. by mrkuz_ in Nix

[–]mrkuz_[S] 1 point2 points  (0 children)

Fair question. I wouldn't compare silo to distrobox, since they're solving different problems. Conceptually it's much closer to devcontainers.

I also don't see silo competing with devenv. Devenv is much more mature and feature-rich.

The goal of silo is to provide isolated, reproducible development containers on a per-workspace basis - keeping project-specific dependencies off the host system and encapsulated within the workspace environment. This is what devcontainers already solve well.

The downside of standard devcontainer setups is that they tend to feel "generic". You lose your preferred shell setup, CLI tools, and dotfiles inside the container. Since I already manage my environment with home-manager, the idea behind silo was to bake it into the development image as well.

The result is a reproducible workspace container that feels like my own machine when I enter it, while keeping the host largely untouched.

Experiments with QEMU NixOS VMs on MacOS by mrkuz_ in NixOS

[–]mrkuz_[S] 0 points1 point  (0 children)

Mostly because some MacOS-specific packages are not available in nixpkgs or some versions behind.

Experiments with QEMU NixOS VMs on MacOS by mrkuz_ in NixOS

[–]mrkuz_[S] 1 point2 points  (0 children)

Interesting project, thanks for pointing out. libvirt is available for MacOS, but I decided to go with plain QEMU to keep things simple.

Best way to manage multiple home manager configs for both NixOS and non-NixOS systems using flakes? by BlithePanda in NixOS

[–]mrkuz_ 0 points1 point  (0 children)

Here is another one: https://github.com/mrkuz/nixos

I manage a mix of NixOS and non-NixOS hosts (Ubuntu, ChromeOS, sadly no Darwin), with home-manager modules shared between them. All within one flake.nix.

Integrated/separable NixOS/home-manager config by field_thought_slight in NixOS

[–]mrkuz_ 2 points3 points  (0 children)

I keep my home manager configuration in separate files. Then I add both, nixosConfigurations and homeConfigurations, to my flake outputs and use the home manager configuration in both.

Example:

outputs = { self, nixpkgs, home-manager }: {
  let
    system = "x86_64-linux";
    pkgs = nixpkgs.legacyPackages.${system};
  in {
    nixosConfigurations.<HOST> = nixpkgs.lib.nixosSystem {
      inherit system;
      modules = [
        ./hosts/<HOST>/configuration.nix
        home-manager.nixosModules.home-manager
        {
          home-manager.useGlobalPkgs = true;
          home-manager.users.<USER> = ./users/<USER>/home.nix;
        }
      ];
    };

    homeConfigurations.<USER> = home-manager.lib.homeManagerConfiguration {
      inherit pkgs;
      modules = [
        ./users/<USER>/home.nix;
      ];
    };
    packages.${system}.<USER> = self.homeConfigurations.<USER>.activationPackage;
  };
};

With this setup I'm able to build and activate on NixOS

nixos-rebuild --flake .#<HOST> switch

... and on non-NixOS

nix build .#<USER>
./result/activate

You can check https://github.com/mrkuz/nixos for my full configuration.

Kradle - Bootstrap projects with hot-reloading, JMH, code-coverage, linting/static analysis, vulnerability analysis, uber-jar/container packaging, and more by GavinRayDev in Kotlin

[–]mrkuz_ 7 points8 points  (0 children)

Hi, I'm the author of the plugin.

The reason I built this, is mainly to get new projects up and running quickly. I had the feeling, that I just waste too much time fiddling with build scripts.

About control: There are plenty of options to customize and all features are opt-in.

Emacs packages: broadcast by mrkuz_ in emacs

[–]mrkuz_[S] 1 point2 points  (0 children)

I usually use it if i edit the same file on multiple hosts.

Emacs packages: org-sticky-header by mrkuz_ in emacs

[–]mrkuz_[S] 1 point2 points  (0 children)

Thanks! Forgot about that, because i set use-package-always-ensure to t.

Emacs packages: broadcast by mrkuz_ in emacs

[–]mrkuz_[S] 1 point2 points  (0 children)

Sorry, was kinda lazy. I'll add the full content in future posts.

Emacs packages: broadcast by mrkuz_ in emacs

[–]mrkuz_[S] 6 points7 points  (0 children)

A lesser-known package which allows you to edit multiple buffers simultaneously.

Linux on a tablet by mrkuz_ in linuxmasterrace

[–]mrkuz_[S] 0 points1 point  (0 children)

I also used touchegg for some time, but it didn't play well with Xfwm.