From cbdd5998ec07d431fd78ab0c7850a45ad3238210 Mon Sep 17 00:00:00 2001 From: Donovan Glover Date: Mon, 12 Jun 2023 14:51:30 -0400 Subject: [PATCH] meta: Add dev container Note that this container uses home-manager from the Nix flake on the host system, which is pretty cool. Currently modules in this repository *don't* differentiate between home-manager and nixos, but this could be changed in the future to support e.g. my home-manager neovim config on a non-nixos system. --- containers/dev.nix | 62 ++++++++++++++++++++++++++++++++++++++++++++++ src/main.nix | 1 + 2 files changed, 63 insertions(+) create mode 100644 containers/dev.nix diff --git a/containers/dev.nix b/containers/dev.nix new file mode 100644 index 00000000..9e609a29 --- /dev/null +++ b/containers/dev.nix @@ -0,0 +1,62 @@ +{ home-manager, ... }: +let + VARIABLES = import ../src/variables.nix; +in +{ + containers.dev = { + privateNetwork = true; + ephemeral = true; + autoStart = true; + hostAddress = "192.168.100.30"; + localAddress = "192.168.100.31"; + + bindMounts = { + "/mnt" = { + hostPath = "/home/${VARIABLES.username}/containers/dev"; + isReadOnly = false; + }; + }; + + config = { pkgs, lib, ... }: { + imports = [ + home-manager.nixosModules.home-manager + ../modules/git + ../modules/neovim + ]; + + programs = { + fish.enable = true; + neovim.enable = true; + starship.enable = true; + }; + + users = { + defaultUserShell = pkgs.fish; + mutableUsers = false; + allowNoPasswordLogin = true; + + users.user = { + isNormalUser = true; + home = "/home/user"; + }; + }; + + home-manager.users.user = { pkgs, ... }: { + home.packages = [ pkgs.atool pkgs.httpie ]; + home.stateVersion = VARIABLES.stateVersion; + }; + + environment = { + shells = with pkgs; [ fish ]; + + variables = { TERM = "xterm-kitty"; }; + + defaultPackages = [ ]; + }; + + environment.systemPackages = with pkgs; [ kitty ]; + + system.stateVersion = VARIABLES.stateVersion; + }; + }; +} diff --git a/src/main.nix b/src/main.nix index b71bcf24..5a2dc089 100644 --- a/src/main.nix +++ b/src/main.nix @@ -15,6 +15,7 @@ let VARIABLES = import ./variables.nix; in { ../modules ../containers/rar.nix ../containers/wine.nix + ../containers/dev.nix ]; # locale