commit 2fae7ecb9828094e0df180410653e56960a6261f Author: Juni Kim Date: Sat Jul 16 12:44:04 2022 -0400 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c0cedf8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.DS_Store +hardware-configuration.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..c98a226 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,89 @@ +{ config, pkgs, ... }: +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ./users.nix + ]; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "multiuser-server-example"; + + # Set your time zone. + time.timeZone = "US/Eastern"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + useXkbConfig = true; # use xkbOptions in tty. + }; + + nix = { + package = pkgs.nixFlakes; # or versioned attributes like nix_2_7 + extraOptions = '' + experimental-features = nix-command flakes + ''; + }; + + environment.systemPackages = with pkgs; [ + vim nano + wget curl + neofetch + screen tmux fff + bash dash git + docker-compose + nodejs + ]; + + virtualisation.docker.enable = true; + + programs.starship.enable = true; + programs.neovim = { + enable = true; + plugins = with pkgs.vimPlugins; [ + coc-nvim + neovim-sensible + vim-airline + vim-airline-themes + vim-nix + ]; + }; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + networking.firewall.enable = false; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + system.copySystemConfiguration = true; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "22.05"; # Did you read the comment? +} + diff --git a/users.nix b/users.nix new file mode 100644 index 0000000..1146a18 --- /dev/null +++ b/users.nix @@ -0,0 +1,34 @@ +{ pkgs, ... }: +let + home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/master.tar.gz"; +in +{ + imports = [ + #(import "${home-manager}/nixos") + ]; + + users.users = + let + server_user = + name: passwd: { + isNormalUser = true; + home = "/server/current/${name}"; + groups = [ "current" ]; + shell = pkgs.bash; + password = passwd; + }; + server_manager = + name: passwd: { + isNormalUser = true; + home = "/server/current/${name}"; + groups = [ "current" "docker" "wheel" ]; + shell = pkgs.bash; + password = passwd; + }; + in + { + owner = server_manager "junikim" "1234"; + a = server_user "a" "1234"; + b = server_user "b" "1234"; + } +}