diff --git a/inventories/default.nix b/inventories/default.nix index 2f16bd5..651086d 100644 --- a/inventories/default.nix +++ b/inventories/default.nix @@ -46,14 +46,6 @@ }; }; - user-emmie = { - module = { - name = "emmie-home"; - input = "self"; - }; - roles.default.machines."rana" = { }; - }; - tor = { module = { name = "tor"; diff --git a/machines/rana/configuration.nix b/machines/rana/configuration.nix index efc9883..95db0d4 100644 --- a/machines/rana/configuration.nix +++ b/machines/rana/configuration.nix @@ -1,5 +1,11 @@ -{ ... }: +{ self, ... }: { + imports = [ + self.nixosModules.common + self.nixosModules.personalComputer + self.nixosModules.home.emmie + ]; + nixpkgs.hostPlatform = { system = "x86_64-linux"; }; diff --git a/modules/clan/home-manager-users/emmie/default.nix b/modules/clan/home-manager-users/emmie/default.nix deleted file mode 100644 index e177efc..0000000 --- a/modules/clan/home-manager-users/emmie/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ ... }: -{ - _class = "clan.service"; - manifest.name = "emmie"; - manifest.description = "Home manager for user Emmie"; - manifest.categories = [ "System" ]; - - roles.default = { - - perInstance.nixosModule = - { - config, - lib, - inputs, - ... - }: - let - username = "emmie"; - in - { - imports = [ inputs.home-manager.nixosModules.home-manager ]; - - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.${username} = ./home.nix; - home-manager.extraSpecialArgs = { - inherit inputs; - }; - }; - }; -} diff --git a/modules/clan/home-manager-users/flake-module.nix b/modules/clan/home-manager-users/flake-module.nix deleted file mode 100644 index 4c6715d..0000000 --- a/modules/clan/home-manager-users/flake-module.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ lib, ... }: -let - emmie = lib.modules.importApply ./emmie/default.nix { }; -in -{ - clan.modules = { - emmie-home = emmie; - }; - -} diff --git a/modules/home-manager/emmie/default.nix b/modules/home-manager/emmie/default.nix new file mode 100644 index 0000000..0931bf2 --- /dev/null +++ b/modules/home-manager/emmie/default.nix @@ -0,0 +1,26 @@ +{ + inputs, + ... +}: +let + username = "emmie"; +in +{ + imports = [ inputs.home-manager.nixosModules.home-manager ]; + + users.users.${username} = { + isNormalUser = true; + extraGroups = [ + "audio" + "video" + "networkmanager" + ]; + }; + + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.${username} = ./home.nix; + home-manager.extraSpecialArgs = { + inherit inputs; + }; +} diff --git a/modules/clan/home-manager-users/emmie/home.nix b/modules/home-manager/emmie/home.nix similarity index 96% rename from modules/clan/home-manager-users/emmie/home.nix rename to modules/home-manager/emmie/home.nix index e218816..0118263 100644 --- a/modules/clan/home-manager-users/emmie/home.nix +++ b/modules/home-manager/emmie/home.nix @@ -18,7 +18,6 @@ in brave firefox keepassxc - drawio vlc ]; }; diff --git a/modules/home-manager/flake-module.nix b/modules/home-manager/flake-module.nix new file mode 100644 index 0000000..7be22a3 --- /dev/null +++ b/modules/home-manager/flake-module.nix @@ -0,0 +1,7 @@ +{ + flake.nixosModules = { + home.emmie = { + imports = [ ./emmie ]; + }; + }; +} diff --git a/modules/nixos/flake-module.nix b/modules/nixos/flake-module.nix index f0a8017..c88ac15 100644 --- a/modules/nixos/flake-module.nix +++ b/modules/nixos/flake-module.nix @@ -3,6 +3,9 @@ common = { imports = [ ./common.nix ]; }; + personalComputer = { + imports = [ ./personal-computer ]; + }; think-gtcm = { imports = [ ./think-gtcm.nix ]; }; diff --git a/modules/nixos/personal-computer/default.nix b/modules/nixos/personal-computer/default.nix new file mode 100644 index 0000000..9b98d07 --- /dev/null +++ b/modules/nixos/personal-computer/default.nix @@ -0,0 +1 @@ +{ imports = [ ./printing.nix ]; } diff --git a/modules/nixos/personal-computer/printing.nix b/modules/nixos/personal-computer/printing.nix new file mode 100644 index 0000000..a034d8a --- /dev/null +++ b/modules/nixos/personal-computer/printing.nix @@ -0,0 +1,63 @@ +{ + pkgs, + lib, + config, + ... +}: +let + allowManageGroups = [ + "root" + "wheel" + "lpadmin" + ]; + polkitAllowGroups = builtins.concatStringsSep "||" ( + builtins.map (group: ''subject.isInGroup("${group}")'') allowManageGroups + ); +in +{ + services.printing = { + enable = true; + drivers = [ + pkgs.brlaser + pkgs.gutenprint + ]; + + extraFilesConf = '' + SystemGroup ${builtins.concatStringsSep " " allowManageGroups} + ''; + }; + + security.polkit = { + enable = true; + + extraConfig = '' + polkit.addRule(function(action, subject) { + var actionMatchs = ( + action.id.indexOf('org.opensuse.cupspkhelper.mechanism.') === 0 + ); + if (actionMatchs) { + if (${polkitAllowGroups}) { + return polkit.Result.YES + } + } + }); + ''; + }; + + hardware.sane = { + enable = true; + }; + + users.groups.lpadmin.members = lib.pipe config.users.users [ + (lib.attrsets.filterAttrs (name: value: value.isNormalUser)) + (lib.attrsets.attrsToList) + (lib.map (user: user.name)) + ]; + + users.groups.lp.members = lib.pipe config.users.users [ + (lib.attrsets.filterAttrs (name: value: value.isNormalUser)) + (lib.attrsets.attrsToList) + (lib.map (user: user.name)) + ]; + +}