Various changes to config, see notes under the fold.
- Adds `mySSHKeys` via `inherit` from `system/sshKeys.nix` for easier setting of allowed SSH keys - Especially useful for self-built `x86_64-linux` NixOS ISO. - Swap where user groups are set to `system/users.nix` - Add `myOptions.isWSL` to identify if an environment is used in WSL or not. - Used for setting user groups between WSL and bare-metal. - Requires adding `myOptions` as module to WSL systems? - Need to investiage if this properly works on bare-metal machines - So likely needs tested in VM? - Added `myOptions.isWSL` option to `nixos-wsl` for group setting reasons, see above. - Fleshed out `nixosConfigurations.isoimage-pc` to make keep some tools handy for live environment. - Plus, gave ssh key access to `root` user on ISO. - Need to double check if `nixos` user needs keys too. - Is that user still even generated with current config? Need to test. - Added `unnix_script` to `home-manager` environment's `home.packages`, so I can remove Nix Store paths from text input easily for ease of comparing against other builds.
This commit is contained in:
parent
1a6da08c20
commit
d9046b8321
7 changed files with 141 additions and 11 deletions
|
@ -91,11 +91,13 @@
|
||||||
# Am I going to use "configuration.nix" in this next config?
|
# Am I going to use "configuration.nix" in this next config?
|
||||||
# Am I going to put it all into the flake itself?
|
# Am I going to put it all into the flake itself?
|
||||||
# Am I going to do something else?
|
# Am I going to do something else?
|
||||||
./system/chimchar/users.nix
|
|
||||||
./system/dotnet_os_codename-workaround.nix
|
./system/dotnet_os_codename-workaround.nix
|
||||||
# Source of this fix file is
|
# Source of this fix file is
|
||||||
# https://github.com/nazarewk-iac/nix-configs/blob/main/modules/ascii-workaround.nix
|
# https://github.com/nazarewk-iac/nix-configs/blob/main/modules/ascii-workaround.nix
|
||||||
./system/nix_lix.nix
|
./system/nix_lix.nix
|
||||||
|
# Enable Nix fork "Lix" instead of default "Nix" version from
|
||||||
|
# upstream
|
||||||
|
./system/users.nix
|
||||||
lix-module.nixosModules.default
|
lix-module.nixosModules.default
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
|
|
78
flake.nix
78
flake.nix
|
@ -87,23 +87,48 @@
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inherit (import ./system/sshKeys.nix) mySSHKeys;
|
||||||
|
# inherit (import ./system/groups.nix) myWslGroups myHardwareGroups;
|
||||||
|
|
||||||
|
myOptions = { lib, ... }: {
|
||||||
|
options = {
|
||||||
|
isWSL = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
type = lib.types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
nixos-wsl = nixpkgs.lib.nixosSystem {
|
nixos-wsl = nixpkgs.lib.nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [
|
modules = [
|
||||||
|
myOptions
|
||||||
./system/nixos-wsl/configuration.nix
|
./system/nixos-wsl/configuration.nix
|
||||||
./system/dotnet_os_codename-workaround.nix
|
./system/dotnet_os_codename-workaround.nix
|
||||||
# Source of this fix file is
|
# Source of this fix file is
|
||||||
# https://github.com/nazarewk-iac/nix-configs/blob/main/modules/ascii-workaround.nix
|
# https://github.com/nazarewk-iac/nix-configs/blob/main/modules/ascii-workaround.nix
|
||||||
./system/nix_lix.nix
|
./system/nix_lix.nix
|
||||||
|
./system/users.nix
|
||||||
nixos-wsl.nixosModules.wsl
|
nixos-wsl.nixosModules.wsl
|
||||||
lix-module.nixosModules.default
|
lix-module.nixosModules.default
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
{
|
{
|
||||||
system.configurationRevision = self.shortRev or self.dirtyShortRev or "dirty";
|
system.configurationRevision = self.shortRev or self.dirtyShortRev or "dirty";
|
||||||
|
|
||||||
|
isWSL = true;
|
||||||
|
|
||||||
|
users.users.whovian = {
|
||||||
|
# extraGroups = myWslGroups;
|
||||||
|
# See above "let" expression
|
||||||
|
# and/or look at "system/groups.nix"
|
||||||
|
openssh.authorizedKeys.keys = mySSHKeys;
|
||||||
|
};
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
|
@ -134,26 +159,65 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
isoimage = nixpkgs.lib.nixosSystem {
|
isoimage-pc = nixpkgs.lib.nixosSystem {
|
||||||
|
# How to build:
|
||||||
|
# $ nix build .#nixosConfigurations.isoimage-pc.config.system.build.isoImage
|
||||||
|
# TODO: Add to "packages.x86_64-linux" later?
|
||||||
|
# "packages.x86_64-linux.isoimage-pc = self.<iso_entry>"
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
modules = [
|
modules = [
|
||||||
# ./configuration.nix
|
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix"
|
||||||
{
|
{
|
||||||
nix = {
|
environment.systemPackages = [
|
||||||
extraOptions = "
|
pkgs._7zz
|
||||||
|
pkgs.bat
|
||||||
|
pkgs.dhex
|
||||||
|
pkgs.fd
|
||||||
|
pkgs.file
|
||||||
|
pkgs.git
|
||||||
|
pkgs.lynx
|
||||||
|
pkgs.ncdu
|
||||||
|
pkgs.progress
|
||||||
|
pkgs.ripgrep
|
||||||
|
pkgs.sshfs
|
||||||
|
pkgs.wget
|
||||||
|
pkgs.xxd
|
||||||
|
pkgs.yq
|
||||||
|
xil.packages.x86_64-linux.xil
|
||||||
|
];
|
||||||
|
|
||||||
|
nix.extraOptions = ''
|
||||||
experimental-features = nix-command flakes
|
experimental-features = nix-command flakes
|
||||||
";
|
'';
|
||||||
};
|
|
||||||
programs = {
|
programs = {
|
||||||
|
nano.enable = true;
|
||||||
|
screen.enable = true;
|
||||||
zsh = {
|
zsh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# Honestly unsure if I should be using `programs.zsh.envExtra` or
|
||||||
|
# `programs.zsh.localVariables` here.
|
||||||
|
/*
|
||||||
|
localVariables = {
|
||||||
|
DISABLE_MAGIC_FUNCTIONS = true;
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
ohMyZsh = {
|
||||||
|
enable = true;
|
||||||
|
theme = "bira";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
users = {
|
users = {
|
||||||
defaultUserShell = pkgs.zsh;
|
defaultUserShell = pkgs.zsh;
|
||||||
|
users.root = {
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
openssh.authorizedKeys.keys = mySSHKeys;
|
||||||
|
# Check if needed for "nixos" ISO user.
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix"
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -22,9 +22,14 @@ let
|
||||||
patches = [ ./packages/new_rclone/patches/rclone_8ffe3e462cbf5688c37c54009db09d8dcb486860.diff ];
|
patches = [ ./packages/new_rclone/patches/rclone_8ffe3e462cbf5688c37c54009db09d8dcb486860.diff ];
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
unnix_script = pkgs.writeShellApplication {
|
||||||
|
name = "unnix";
|
||||||
|
/* runtimeInputs = [ sed ]; */
|
||||||
|
text = '' sed -r 's@/nix/store/[0-9a-z]{32}-@/<<NIX>>/@g' '';
|
||||||
|
# Quick command to remove Nix Store paths from output. Original source:
|
||||||
|
# https://trofi.github.io/posts/247-NixOS-22.05-release.html
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
programs = {
|
programs = {
|
||||||
|
@ -126,6 +131,7 @@ in
|
||||||
my_packages.sabretools
|
my_packages.sabretools
|
||||||
my_packages.new_rclone
|
my_packages.new_rclone
|
||||||
my_packages.rom-properties
|
my_packages.rom-properties
|
||||||
|
my_packages.unnix_script
|
||||||
# my_packages.hactoolnet-bin
|
# my_packages.hactoolnet-bin
|
||||||
|
|
||||||
agenix.packages.${system}.default
|
agenix.packages.${system}.default
|
||||||
|
|
23
system/groups.nix
Normal file
23
system/groups.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
myWslGroups = [
|
||||||
|
"wheel"
|
||||||
|
# Enable 'sudo' for the user.
|
||||||
|
];
|
||||||
|
|
||||||
|
myHardwareGroups = [
|
||||||
|
"wheel"
|
||||||
|
# Enable 'sudo' for the user.
|
||||||
|
"networkmanager"
|
||||||
|
# Enable use of NetworkManager
|
||||||
|
"usb"
|
||||||
|
# This should enable access to usb devices.
|
||||||
|
"docker"
|
||||||
|
# Enable 'docker' for the user.
|
||||||
|
];
|
||||||
|
|
||||||
|
users.groups = {
|
||||||
|
usb = {
|
||||||
|
# Placeholder to create group.
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -9,7 +9,7 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./packages.nix
|
./packages.nix
|
||||||
./users.nix
|
# ./users.nix
|
||||||
./wsl.nix
|
./wsl.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
5
system/sshKeys.nix
Normal file
5
system/sshKeys.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
mySSHKeys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE5E4BLKTeFAeRdIMJbdi1ZcphWF3WnJAZ6FX6zbKHI3" # NixOS WSL
|
||||||
|
];
|
||||||
|
}
|
30
system/users.nix
Normal file
30
system/users.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
users = {
|
||||||
|
users = {
|
||||||
|
whovian = {
|
||||||
|
name = "whovian";
|
||||||
|
description = "Whovian9369";
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
initialPassword = "abcde"; # I need to log in somehow
|
||||||
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
# Enable 'sudo' for the user.
|
||||||
|
] ++ lib.optionals (!config.isWSL) [
|
||||||
|
# These are the groups for baremetal machines, or possibly VMs.
|
||||||
|
"networkmanager"
|
||||||
|
# Enable use of NetworkManager
|
||||||
|
"usb"
|
||||||
|
# This should enable access to usb devices.
|
||||||
|
"docker"
|
||||||
|
# Enable 'docker' for the user.
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue