Got local packages working again
This commit is contained in:
parent
0ee115d2ca
commit
b09647c970
69
config/hardware/spark.nix
Normal file
69
config/hardware/spark.nix
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ <nixpkgs/nixos/modules/installer/scan/not-detected.nix>
|
||||||
|
];
|
||||||
|
|
||||||
|
system.stateVersion = "20.03";
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
loader = {
|
||||||
|
systemd-boot.enable = true;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "sd_mod" "rtsx_usb_sdmmc" ];
|
||||||
|
kernelModules = [ ];
|
||||||
|
};
|
||||||
|
kernelModules = [ "kvm-intel" ];
|
||||||
|
extraModulePackages = [ ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{ device = "/dev/disk/by-label/nixos";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot" =
|
||||||
|
{ device = "/dev/disk/by-label/BOOT";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
|
||||||
|
cpu.intel.updateMicrocode = true;
|
||||||
|
|
||||||
|
opengl = {
|
||||||
|
driSupport = true;
|
||||||
|
driSupport32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
pulseaudio.support32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
macvlans = {
|
||||||
|
extif0 = {
|
||||||
|
interface = "enp3s0";
|
||||||
|
mode = "bridge";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
interfaces = {
|
||||||
|
enp3s0 = {
|
||||||
|
useDHCP = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
extif0 = {
|
||||||
|
# output of: echo spark-extif0|md5sum|sed 's/^\(..\)\(..\)\(..\)\(..\)\(..\).*$/02:\1:\2:\3:\4:\5/'
|
||||||
|
macAddress = "02:9c:b7:b6:ad:c4";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.xserver.videoDrivers = [ "intel" ];
|
||||||
|
nix.maxJobs = lib.mkDefault 4;
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
|
}
|
@ -130,7 +130,12 @@
|
|||||||
|
|
||||||
pselby-work = { description = "Google Lenovo work laptop."; };
|
pselby-work = { description = "Google Lenovo work laptop."; };
|
||||||
|
|
||||||
spark = { description = "Niten's backup desktop."; };
|
spark = {
|
||||||
|
description = "Niten's backup desktop.";
|
||||||
|
rp = "niten";
|
||||||
|
admin-email = "niten@fudo.org";
|
||||||
|
enable-gui = true;
|
||||||
|
};
|
||||||
|
|
||||||
upstairs-desktop = {
|
upstairs-desktop = {
|
||||||
description = "Upstairs desktop in Russell.";
|
description = "Upstairs desktop in Russell.";
|
||||||
@ -144,12 +149,13 @@
|
|||||||
];
|
];
|
||||||
rp = "niten";
|
rp = "niten";
|
||||||
admin-email = "niten@fudo.org";
|
admin-email = "niten@fudo.org";
|
||||||
domain = "rus.selby.ca";
|
|
||||||
site = "russell";
|
|
||||||
profile = "desktop";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
zbox = { description = "Niten's primary desktop.";
|
zbox = {
|
||||||
enable-gui = true;};
|
description = "Niten's primary desktop.";
|
||||||
|
rp = "niten";
|
||||||
|
admin-email = "niten@fudo.org";
|
||||||
|
enable-gui = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
16
config/hosts/spark.nix
Normal file
16
config/hosts/spark.nix
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
# TODO: remove?
|
||||||
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
|
"openssh-with-gssapi-8.4p1" # CVE-2021-28041
|
||||||
|
];
|
||||||
|
|
||||||
|
fudo.slynk.enable = true;
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
interfaces = {
|
||||||
|
extif0 = { useDHCP = true; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -12,30 +12,36 @@ in {
|
|||||||
|
|
||||||
boot.tmpOnTmpfs = true;
|
boot.tmpOnTmpfs = true;
|
||||||
|
|
||||||
system.autoUpgrade.enable = true;
|
environment = mkIf enable-gui {
|
||||||
|
systemPackages = [
|
||||||
|
#libva
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
system = {
|
||||||
firefox
|
autoUpgrade.enable = true;
|
||||||
spotify
|
};
|
||||||
];
|
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
xserver = mkIf enable-gui {
|
xserver = mkIf enable-gui {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
desktopManager.gnome3.enable = true;
|
desktopManager.gnome3.enable = true;
|
||||||
|
|
||||||
displayManager.gdm.enable = true;
|
displayManager.gdm = {
|
||||||
|
enable = true;
|
||||||
|
wayland = true;
|
||||||
|
};
|
||||||
|
|
||||||
windowManager.stumpwm.enable = true;
|
windowManager.stumpwm.enable = true;
|
||||||
|
|
||||||
# windowManager.session = pkgs.lib.singleton {
|
# windowManager.session = pkgs.lib.singleton {
|
||||||
# name = "stumpwm";
|
# name = "stumpwm";
|
||||||
# start = ''
|
# start = ''
|
||||||
# ${pkgs.lispPackages.stumpwm}/bin/stumpwm &
|
# ${pkgs.lispPackages.stumpwm}/bin/stumpwm &
|
||||||
# waidPID=$!
|
# waidPID=$!
|
||||||
# '';
|
# '';
|
||||||
# };
|
# };
|
||||||
};
|
};
|
||||||
|
|
||||||
emacs = {
|
emacs = {
|
||||||
@ -44,6 +50,17 @@ in {
|
|||||||
package = pkgs.emacs;
|
package = pkgs.emacs;
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
trezord.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
|
||||||
|
opengl = mkIf enable-gui {
|
||||||
|
driSupport = true;
|
||||||
|
driSupport32Bit = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sound.enable = true;
|
sound.enable = true;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
let
|
let
|
||||||
name = "Niten";
|
name = "Niten";
|
||||||
email = "niten@fudo.org";
|
email = "niten@fudo.org";
|
||||||
@ -19,6 +20,7 @@ let
|
|||||||
file
|
file
|
||||||
firefox
|
firefox
|
||||||
fortune
|
fortune
|
||||||
|
git
|
||||||
gnupg
|
gnupg
|
||||||
guile
|
guile
|
||||||
imagemagick
|
imagemagick
|
||||||
|
34
lib/fudo/users-common.nix
Normal file
34
lib/fudo/users-common.nix
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
# Common home-manager config
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
sys = import ../system.nix { inherit lib config; };
|
||||||
|
|
||||||
|
list-contains = lst: item: any (i: i == item) lst;
|
||||||
|
|
||||||
|
domain-realm = domain: domainOpts: domainOpts.gssapi-realm;
|
||||||
|
|
||||||
|
user-realms = username:
|
||||||
|
mapAttrsToList domain-realm
|
||||||
|
(filterAttrs (domain: domainOpts: list-contains domainOpts.local-users username)
|
||||||
|
config.fudo.domains);
|
||||||
|
|
||||||
|
user-principals = username:
|
||||||
|
map (realm: "${username}@${realm}") (user-realms username);
|
||||||
|
|
||||||
|
user-k5login = username: userOpts: let
|
||||||
|
principals = userOpts.k5login ++ (user-principals username);
|
||||||
|
in ''
|
||||||
|
${concatStringsSep "\n" principals}
|
||||||
|
'';
|
||||||
|
|
||||||
|
user-config = username: userOpts: {
|
||||||
|
home.file.".k5login" = {
|
||||||
|
source = pkgs.writeText "${username}-k5login" (user-k5login username userOpts);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
in {
|
||||||
|
config.home-manager.users = mapAttrs user-config sys.local-users;
|
||||||
|
}
|
@ -150,28 +150,13 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./users-common.nix
|
||||||
|
];
|
||||||
|
|
||||||
config = let
|
config = let
|
||||||
local-host = config.instance.hostname;
|
sys = import ../system.nix { inherit lib config; };
|
||||||
local-domain = config.fudo.hosts.${local-host}.domain;
|
|
||||||
local-site = config.fudo.hosts.${local-host}.site;
|
|
||||||
|
|
||||||
host-user-list = config.fudo.hosts."${local-host}".local-users;
|
|
||||||
domain-user-list = config.fudo.domains."${local-domain}".local-users;
|
|
||||||
local-users =
|
|
||||||
getAttrs (host-user-list ++ domain-user-list) config.fudo.users;
|
|
||||||
|
|
||||||
host-admin-list = config.fudo.hosts."${local-host}".local-admins;
|
|
||||||
domain-admin-list = config.fudo.domains."${local-domain}".local-admins;
|
|
||||||
site-admin-list = config.fudo.sites."${local-site}".local-admins;
|
|
||||||
local-admins = host-admin-list ++ domain-admin-list ++ site-admin-list;
|
|
||||||
|
|
||||||
host-group-list = config.fudo.hosts."${local-host}".local-groups;
|
|
||||||
domain-group-list = config.fudo.domains."${local-domain}".local-groups;
|
|
||||||
site-group-list = config.fudo.sites."${local-site}".local-groups;
|
|
||||||
local-groups =
|
|
||||||
getAttrs (host-group-list ++ domain-group-list ++ site-group-list)
|
|
||||||
config.fudo.groups;
|
|
||||||
|
|
||||||
in {
|
in {
|
||||||
fudo.auth.ldap-server = let
|
fudo.auth.ldap-server = let
|
||||||
ldapUsers = (filterAttrs
|
ldapUsers = (filterAttrs
|
||||||
@ -211,29 +196,39 @@ in {
|
|||||||
"/home/${userOpts.primary-group}/${username}";
|
"/home/${userOpts.primary-group}/${username}";
|
||||||
hashedPassword = userOpts.login-hashed-passwd;
|
hashedPassword = userOpts.login-hashed-passwd;
|
||||||
openssh.authorizedKeys.keys = userOpts.ssh-authorized-keys;
|
openssh.authorizedKeys.keys = userOpts.ssh-authorized-keys;
|
||||||
}) local-users;
|
}) sys.local-users;
|
||||||
|
|
||||||
groups = (mapAttrs (groupname: groupOpts: {
|
groups = (mapAttrs (groupname: groupOpts: {
|
||||||
gid = groupOpts.gid;
|
gid = groupOpts.gid;
|
||||||
members = filterExistingUsers local-users groupOpts.members;
|
members = filterExistingUsers sys.local-users groupOpts.members;
|
||||||
}) local-groups) // {
|
}) sys.local-groups) // {
|
||||||
wheel = { members = local-admins; };
|
wheel = { members = sys.local-admins; };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users = let
|
home-manager = {
|
||||||
home-manager-users =
|
useGlobalPkgs = true;
|
||||||
filterAttrs (username: userOpts: userOpts.home-manager-config != null)
|
|
||||||
local-users;
|
users = let
|
||||||
common-user-config = username: {
|
home-manager-users =
|
||||||
home.file.".k5login" = {
|
filterAttrs (username: userOpts: userOpts.home-manager-config != null)
|
||||||
source = pkgs.writeText "${username}-k5login" ''
|
sys.local-users;
|
||||||
${concatStringsSep "\n" config.fudo.users.${username}.k5login}
|
in mapAttrs (username: userOpts: userOpts.home-manager-config) home-manager-users;
|
||||||
'';
|
|
||||||
};
|
# users = let
|
||||||
};
|
# home-manager-users =
|
||||||
in mapAttrs (username: userOpts:
|
# filterAttrs (username: userOpts: userOpts.home-manager-config != null)
|
||||||
userOpts.home-manager-config // (common-user-config username))
|
# local-users;
|
||||||
home-manager-users;
|
# common-user-config = username: {
|
||||||
|
# home.file.".k5login" = {
|
||||||
|
# source = pkgs.writeText "${username}-k5login" ''
|
||||||
|
# ${concatStringsSep "\n" config.fudo.users.${username}.k5login}
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# in mapAttrs (username: userOpts:
|
||||||
|
# userOpts.home-manager-config // (common-user-config username))
|
||||||
|
# home-manager-users;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
31
lib/system.nix
Normal file
31
lib/system.nix
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
local-host = config.instance.hostname;
|
||||||
|
local-domain = config.fudo.hosts.${local-host}.domain;
|
||||||
|
local-site = config.fudo.hosts.${local-host}.site;
|
||||||
|
|
||||||
|
host-user-list = config.fudo.hosts."${local-host}".local-users;
|
||||||
|
domain-user-list = config.fudo.domains."${local-domain}".local-users;
|
||||||
|
site-user-list = config.fudo.sites."${local-site}".local-users;
|
||||||
|
local-users =
|
||||||
|
getAttrs (host-user-list ++ domain-user-list ++ site-user-list) config.fudo.users;
|
||||||
|
|
||||||
|
host-admin-list = config.fudo.hosts."${local-host}".local-admins;
|
||||||
|
domain-admin-list = config.fudo.domains."${local-domain}".local-admins;
|
||||||
|
site-admin-list = config.fudo.sites."${local-site}".local-admins;
|
||||||
|
local-admins = host-admin-list ++ domain-admin-list ++ site-admin-list;
|
||||||
|
|
||||||
|
host-group-list = config.fudo.hosts."${local-host}".local-groups;
|
||||||
|
domain-group-list = config.fudo.domains."${local-domain}".local-groups;
|
||||||
|
site-group-list = config.fudo.sites."${local-site}".local-groups;
|
||||||
|
local-groups =
|
||||||
|
getAttrs (host-group-list ++ domain-group-list ++ site-group-list)
|
||||||
|
config.fudo.groups;
|
||||||
|
|
||||||
|
in {
|
||||||
|
local-users = local-users;
|
||||||
|
local-admins = local-admins;
|
||||||
|
local-groups = local-groups;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user