diff --git a/flake.nix b/flake.nix index ad1d3c2..82d3fbd 100644 --- a/flake.nix +++ b/flake.nix @@ -28,8 +28,8 @@ inherit (utils) user; in { nixosConfigurations = { - architect = host.mkHost { name = "architect"; users = [ "giulio" ]; }; - gAluminum = host.mkHost { name = "gAluminum"; users = [ "giulio" ]; roles = [ "gnome" ]; }; + architect = host.mkHost { name = "architect"; users = [ { user = "giulio"; } ]; }; + gAluminum = host.mkHost { name = "gAluminum"; users = [ { user = "giulio"; roles = [ "desktop" "ssh" ]; } ]; roles = [ "gnome" ]; }; proxy = host.mkHost { name = "proxy"; }; }; }; diff --git a/lib/host.nix b/lib/host.nix index 9dab99f..d52facf 100644 --- a/lib/host.nix +++ b/lib/host.nix @@ -7,7 +7,7 @@ mkRole = role : import (../roles + "/${role}.nix"); - users_mod= (map (u: user.mkUser u) users); + users_mod= (map (u: user.mkUser {name = u.user; roles= u.roles; }) users); roles_mod = (map (r: mkRole r) roles); in nixpkgs.lib.nixosSystem { inherit system; @@ -23,6 +23,12 @@ ]; nix.registry.nixpkgs.flake = nixpkgs; nix.registry.unstable.flake = nixos-unstable; + + users.users.root = { + shell = pkgs.zsh; + }; + + home-manager.users.root.imports = [ ../roles/home/common.nix ]; } home-manager.nixosModules.home-manager diff --git a/lib/user.nix b/lib/user.nix index d4e2caa..18b055f 100644 --- a/lib/user.nix +++ b/lib/user.nix @@ -1,7 +1,11 @@ { pkgs, ...}: { - mkUser = name: { + mkUser = { name, roles ? [] }: + let + mkRole = role: import (../roles/home + "/${role}.nix"); + roles_mod = (map (r: mkRole r) roles); + in { fileSystems."/home/${name}/Downloads" = { device = "tmpfs"; fsType = "tmpfs"; @@ -14,6 +18,6 @@ extraGroups = [ "wheel" ]; }; - home-manager.users.${name}.imports = [ ../roles/home ]; + home-manager.users.${name}.imports = [ ../roles/home/common.nix ] ++ roles_mod; }; } diff --git a/roles/home/code.nix b/roles/home/common.nix similarity index 91% rename from roles/home/code.nix rename to roles/home/common.nix index e60b1ac..fe1b6a2 100644 --- a/roles/home/code.nix +++ b/roles/home/common.nix @@ -1,13 +1,21 @@ -{ config, pkgs, lib, home, ... }: +{ config, pkgs, ... }: -{ - nixpkgs.config.allowUnfree = true; +{ + imports = [ ./zsh.nix ]; - home.packages = with pkgs; [ - nixfmt - vscode - jetbrains.idea-ultimate - ]; + home = { + stateVersion = "21.05"; + sessionVariables = { + EDITOR = "nvim"; + VISUAL = "nvim"; + }; + + packages = with pkgs; [ + rizin + sshfs + nixfmt + ]; + }; programs.neovim = { enable = true; @@ -69,8 +77,6 @@ set cindent cinkeys-=0# set expandtab shiftwidth=2 tabstop=2 softtabstop=2 - - set statusline+=%#warningmsg# set statusline+=%{SyntasticStatuslineFlag()} set statusline+=%* @@ -95,5 +101,4 @@ vimtex ]; }; - } diff --git a/roles/home/default.nix b/roles/home/default.nix deleted file mode 100644 index c09823b..0000000 --- a/roles/home/default.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ config, pkgs, ... }: - -let - albert_autostart = (pkgs.makeAutostartItem { - name = "albert"; - package = pkgs.albert; - }); - guake_autostart = (pkgs.makeAutostartItem { - name = "guake"; - package = pkgs.guake; - }); -in - { - imports = [ - ./zsh.nix - ./code.nix - ./git.nix - ./gnome.nix - ./ssh.nix - ]; - - - home = { - stateVersion = "21.05"; - sessionVariables = { - EDITOR = "nvim"; - VISUAL = "nvim"; - }; - - packages = with pkgs; [ - albert - guake - - firefox - brave - chromium - - rizin - - nmap - - slack - signal-desktop - teams - discord - element-desktop - - spotify - - bind - - gparted - sshfs - - libreoffice - - albert_autostart - guake_autostart - ]; - }; - - programs = { - direnv = { - enable = true; - nix-direnv.enable = true; - nix-direnv.enableFlakes = true; - }; - }; - } diff --git a/roles/home/desktop.nix b/roles/home/desktop.nix new file mode 100644 index 0000000..323ad24 --- /dev/null +++ b/roles/home/desktop.nix @@ -0,0 +1,42 @@ +{ pkgs, ... }: + +let + albert_autostart = (pkgs.makeAutostartItem { + name = "albert"; + package = pkgs.albert; + }); + guake_autostart = (pkgs.makeAutostartItem { + name = "guake"; + package = pkgs.guake; + }); +in + { + imports = [ ./gnome.nix ]; + + nixpkgs.config.allowUnfree = true; + home.packages = with pkgs; [ + albert + guake + + firefox + brave + chromium + + slack + signal-desktop + teams + discord + element-desktop + + spotify + + gparted + + libreoffice + vscode + jetbrains.idea-ultimate + + albert_autostart + guake_autostart + ]; + }