This commit is contained in:
sadan 2024-05-27 12:34:10 -04:00
parent c67d895cfa
commit dcd354ca61
No known key found for this signature in database
4 changed files with 442 additions and 1 deletions

146
boxes/wsl/configuration.nix Normal file
View file

@ -0,0 +1,146 @@
# Edit this configuration file to define what should be installed onconfigurati
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
# { config, lib, pkgs, inputs, ... }:
{ config, lib, pkgs, inputs, ... }:
{
wsl.enable = true;
wsl.defaultUser = "meyer";
# Use the systemd-boot EFI boot loader.
boot.kernelPackages = pkgs.linuxPackages_zen;
hardware.i2c.enable = true;
networking.hostName = "nix-wsl"; # Define your hostname.
# Set your time zone.
time.timeZone = "America/New_York";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system.
# servives.desktopManager.plasma6.enable = true;
# services.desktopManager.plasma6.enable = true;
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Enable sound.
# hardware.pulseaudio.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.meyer = {
isNormalUser = true;
extraGroups = [
"wheel" # Enable sudo for the user.
"input"
"tty"
];
shell = pkgs.zsh;
};
programs.zsh.enable = true;
nixpkgs.config.allowUnfree = true;
home-manager = {
extraSpecialArgs = { inherit inputs; };
users = {
"meyer" = import ./home.nix;
};
};
# networking.nameservers = ["10.0.0.97" "1.1.1.1"];
networking.nameservers = [ "10.0.0.97" ];
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
ddcutil
i2c-tools
# python311
# python311Packages.evdev
# python311Packages.xlib
gcc
neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
curl
wget
git
ripgrep
tldr
gnupg
openssh
pinentry-curses
pinentry
libnotify
file
];
#LD fix
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
pkgs.curlWithGnuTls
];
programs.ssh.startAgent = true;
# programs.ssh.askPassword = pkgs.lib.mkForce "${pkgs.ksshaskpass.out}/bin/ksshaskpass";
programs.gnupg.agent = {
enable = true;
};
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix.
# system.copySystemConfiguration = true;
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
#
# Most users should NEVER change this value after the initial install, for any reason,
# even if you've upgraded your system to a new NixOS release.
#
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
# so changing it will NOT upgrade your system.
#
# This value being lower than the current NixOS release does NOT mean your system is
# out of date, out of support, or vulnerable.
#
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
# and migrated your data accordingly.
#
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "23.11"; # Did you read the comment?
}

199
boxes/wsl/home.nix Normal file
View file

@ -0,0 +1,199 @@
{ config, lib, pkgs, inputs, ... }:
let
cpkg = import ../../customPackages { inherit pkgs; };
zshInitArgs = [
"source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme"
"source ${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"
"[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh"
"setopt globstarshort"
];
_z1 = lib.concatMapStrings (x: x + "\n") zshInitArgs;
in
{
programs.zsh.enable = true;
programs.zsh.oh-my-zsh.enable = true;
programs.zsh.initExtra = builtins.trace _z1 _z1;
programs.java.enable = true;
programs.java.package = pkgs.temurin-bin-17;
programs.zoxide.enable = true;
programs.zoxide.enableZshIntegration = true;
nixpkgs.config.allowUnfreePredicate = (pkg: true);
# Home Manager needs a bit of information about you and the paths it should
# nixpkg.config.allowUnfree = true;
# manage.
home.username = "meyer";
home.homeDirectory = "/home/meyer";
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
home.stateVersion = "23.11"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs;[
tailscale
clang
gnumake
jq
gradle
lazygit
linuxHeaders
#NODE
nodePackages.nodemon
nodePackages.ts-node
nodePackages.pnpm
nodePackages.prisma
prisma-engines
nodePackages.live-server
#ENDNODE
zsh-powerlevel10k
zsh-syntax-highlighting
gh
fzf
#C AND CXX START
glib
glibc
#C AND CXX END
#PYTHONSTART
(python39.withPackages (ps: with ps;[
evdev
setuptools
]))
# python311Packages.evdev
# python311Packages.xlib
#PYTHONEND
#JAVASTART
#JAVAEND
eslint_d
go
php
nodejs_21
# pkgs.temurin-jre-bin-8
cargo
nerdfonts
lua
btop
unzip
typescript
#MASON
nodePackages_latest.typescript-language-server
#ENDMASON
# # You can also create simple shell scripts directly inside your
# # configuration. For example, this adds a command 'my-hello' to your
# # environment:
# (pkgs.writeShellScriptBin "my-hello" ''
# echo "Hello, ${config.home.username}!"
# '')
(pkgs.writeShellScriptBin "git_fetchAll" ''
git branch -r | grep -v '\->' | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" | while read remote; do git branch --track "''${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
'')
(pkgs.writeShellScriptBin "install_eslint" ''
set -x
cp /home/${config.home.username}/.config/.eslintrc.json .
pkgs=("@stylistic/eslint-plugin" "@typescript-eslint/eslint-plugin")
if [[ -z $1 ]]; then
echo please specify npm, pnpm, or yarn
exit 1
fi
for i in "''${pkgs[@]}"; do
`$1 i -D $i`
done
'')
(pkgs.writeShellScriptBin "math" ''
set -e
python3 -c "print($*)"
'')
];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = {
kitty = {
recursive = true;
source = ../../dotfiles/kitty;
target = "./.config/kitty";
};
eslint_d_config = {
source = ../../dotfiles/eslintrc.json;
target = "./.config/.eslintrc.json";
};
gh = {
recursive = true;
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos/dotfiles/gh";
target = "./.config/gh";
};
btop = {
recursive = true;
source = ../../dotfiles/btop;
target = "./.config/btop";
};
nvim = {
recursive = true;
source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos/dotfiles/nvim";
target = "./.config/nvim";
};
# "testconfigfile".source = ../../dotfiles/testconfigfile;
# ".gitconfig".source = ../../dotfiles/.gitconfig;
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
# # symlink to the Nix store copy.
# ".screenrc".source = dotfiles/screenrc;
# # You can also set the file content immediately.
# ".gradle/gradle.properties".text = ''
# org.gradle.console=verbose
# org.gradle.daemon.idletimeout=3600000
# '';
};
# Home Manager can also manage your environment variables through
# 'home.sessionVariables'. If you don't want to manage your shell through Home
# Manager then you have to manually source 'hm-session-vars.sh' located at
# either
#
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
#
# or
#
# /etc/profiles/per-user/meyer/etc/profile.d/hm-session-vars.sh
#
home.shellAliases = {
paste = "xsel -ob";
lg = "lazygit";
copy = "xsel -ib";
b = "/home/${config.home.username}/nixos/build";
};
home.sessionPath = [
"$HOME/.local/bin"
];
home.sessionVariables = {
EDITOR = "nvim";
MANPAGER = "nvim +Man!";
MANWIDTH = "999";
SSH_ASKPASS_REQUIRE = "prefer";
PRISMA_QUERY_ENGINE_BINARY = "${pkgs.prisma-engines}/bin/query-engine";
PRISMA_SCHEMA_ENGINE_BINARY = "${pkgs.prisma-engines}/bin/schema-engine";
PRISMA_QUERY_ENGINE_LIBRARY = "${pkgs.prisma-engines}/lib/libquery_engine.node";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}

View file

@ -1,5 +1,39 @@
{ {
"nodes": { "nodes": {
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -20,7 +54,43 @@
"type": "github" "type": "github"
} }
}, },
"nixos-wsl": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1716640344,
"narHash": "sha256-AZKQs+KrL70le0RZH8XqZJMc2SahU4LpfEJ2Vd5SWzM=",
"owner": "nix-community",
"repo": "nixos-wsl",
"rev": "020cd466170204e448b24b246045599fce69ad91",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixos-wsl",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": {
"lastModified": 1714782413,
"narHash": "sha256-tbg0MEuKaPcUrnmGCu4xiY5F+7LW2+ECPKVAJd2HLwM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "651b4702e27a388f0f18e1b970534162dec09aff",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1713537308, "lastModified": 1713537308,
"narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=", "narHash": "sha256-XtTSSIB2DA6tOv+l0FhvfDMiyCmhoRbNB+0SeInZkbk=",
@ -91,6 +161,22 @@
"original": { "original": {
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_2"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github" "type": "github"
} }
} }

View file

@ -7,12 +7,13 @@
sops-nix = { sops-nix = {
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
}; };
nixos-wsl.url = "github:nix-community/nixos-wsl";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = { self, nixpkgs, ... }@inputs: outputs = { self, nixpkgs, nixos-wsl, ... }@inputs:
# let # let
# boxes = [ # boxes = [
# "default" # "default"
@ -28,6 +29,15 @@
inputs.home-manager.nixosModules.default inputs.home-manager.nixosModules.default
]; ];
}; };
wsl = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [
./boxes/wsl/configuration.nix
inputs.home-manager.nixosModules.default
nixos-wsl.nixosModules.wsl
];
};
}; };
# nixosConfigurations.default = nixpkgs.lib.nixosSystem { # nixosConfigurations.default = nixpkgs.lib.nixosSystem {
# specialArgs = {inherit inputs;}; # specialArgs = {inherit inputs;};