You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.5 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. { pkgs, ... }:
  2. let
  3. home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/master.tar.gz";
  4. prefix = "/server/project";
  5. in
  6. {
  7. imports = [
  8. (import "${home-manager}/nixos")
  9. ];
  10. systemd.tmpfiles.rules = [
  11. "d /server 0777 root root"
  12. "d /server/project 0770 root project"
  13. ];
  14. users.groups = {
  15. project = {};
  16. };
  17. users.users =
  18. let
  19. user =
  20. { zsh ? false, manager ? false, name, passwd }: {
  21. isNormalUser = true;
  22. home = "${prefix}/${name}";
  23. createHome = true;
  24. extraGroups = [ "project" ] ++
  25. (if manager then ["docker" "wheel"] else []);
  26. shell = (if zsh then pkgs.zsh else pkgs.bash);
  27. password = passwd;
  28. };
  29. in
  30. {
  31. junikim = user { manager = true; name = "junikim"; passwd = "1234"; };
  32. a = user { zsh = true; name = "a"; passwd = "1234"; };
  33. b = user { name = "b"; passwd = "1234"; };
  34. c = user { name = "c"; passwd = "1234"; };
  35. };
  36. home-manager.users =
  37. let
  38. user = name: {
  39. home = {
  40. username = name;
  41. homeDirectory = "${prefix}/${name}";
  42. stateVersion = "22.05";
  43. };
  44. programs = {
  45. home-manager.enable = true;
  46. neovim = {
  47. enable = true;
  48. plugins = with pkgs.vimPlugins; [
  49. neovim-sensible
  50. vim-airline
  51. vim-airline-themes
  52. vim-nix
  53. ];
  54. };
  55. git = {
  56. enable = true;
  57. };
  58. };
  59. };
  60. in {
  61. junikim = user "junikim";
  62. a = user "a";
  63. b = user "b";
  64. };
  65. }