Setup WSL Host
This commit is contained in:
26
nix/configuration.nix
Normal file
26
nix/configuration.nix
Normal file
@@ -0,0 +1,26 @@
|
||||
# Edit this configuration file to define what should be installed on
|
||||
# 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, meta, ... }:
|
||||
|
||||
{
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
environment.systemPackages = with pkgs; [ wget busybox ];
|
||||
programs.nix-ld.enable = true;
|
||||
networking.hostName = meta.hostname;
|
||||
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.luca = import ./users/luca/home.nix;
|
||||
users.users.luca.shell = pkgs.zsh;
|
||||
programs.zsh.enable = true;
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It's perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "24.05"; # Did you read the comment?
|
||||
}
|
||||
37
nix/flake.nix
Normal file
37
nix/flake.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
description = "Top level flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs = inputs@{ nixpkgs, ... }:
|
||||
let
|
||||
systems = [ "x86_64-linux" ];
|
||||
hosts = [{
|
||||
name = "wsl-kumatani";
|
||||
isWSL = true;
|
||||
}];
|
||||
in {
|
||||
nixosConfigurations = builtins.listToAttrs (map (host: {
|
||||
name = host.name;
|
||||
value = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {
|
||||
inherit inputs outputs;
|
||||
meta = { hostname = host.name; };
|
||||
};
|
||||
system = "x86_64-linux";
|
||||
modules =
|
||||
[ ./configuration.nix home-manager.nixosModules.home-manager ]
|
||||
++ (if host.isWSL then [
|
||||
./wsl.nix
|
||||
nixos-wsl.nixosModules.default
|
||||
] else
|
||||
[ ]);
|
||||
};
|
||||
}) hosts);
|
||||
};
|
||||
}
|
||||
13
nix/users/luca/git.nix
Executable file
13
nix/users/luca/git.nix
Executable file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
enable = true;
|
||||
userName = "rocketcamel";
|
||||
userEmail = "luca_lise@icloud.com";
|
||||
extraConfig = {
|
||||
init = {
|
||||
defaultBranch = "main";
|
||||
};
|
||||
commit.gpgsign = true;
|
||||
gpg.format = "ssh";
|
||||
user.signingkey = "~/.ssh/commits.id_rsa.pub";
|
||||
};
|
||||
}
|
||||
53
nix/users/luca/helix.nix
Executable file
53
nix/users/luca/helix.nix
Executable file
@@ -0,0 +1,53 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
enable = true;
|
||||
languages.language = [
|
||||
{
|
||||
name = "nix";
|
||||
auto-format = true;
|
||||
formatter.command = "${pkgs.nixfmt}/bin/nixfmt";
|
||||
}
|
||||
{
|
||||
name = "typescript";
|
||||
auto-format = true;
|
||||
formatter = {
|
||||
command = "${pkgs.nodePackages_latest.prettier}/bin/prettier";
|
||||
args = [ "--parser" "typescript" ];
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "tsx";
|
||||
auto-format = true;
|
||||
formatter = {
|
||||
command = "${pkgs.nodePackages_latest.prettier}/bin/prettier";
|
||||
args = [ "--parser" "typescript" ];
|
||||
};
|
||||
}
|
||||
];
|
||||
settings = {
|
||||
theme = "rose_pine";
|
||||
editor = {
|
||||
true-color = true;
|
||||
line-number = "relative";
|
||||
lsp.display-messages = true;
|
||||
cursor-shape = {
|
||||
insert = "block";
|
||||
normal = "block";
|
||||
};
|
||||
};
|
||||
keys.normal = {
|
||||
space.q = ":q";
|
||||
w = [ "move_next_word_start" "move_char_right" "collapse_selection" ];
|
||||
b = [ "move_prev_word_start" "collapse_selection" ];
|
||||
i = [ "insert_mode" "collapse_selection" ];
|
||||
a = [ "append_mode" "collapse_selection" ];
|
||||
};
|
||||
};
|
||||
themes = {
|
||||
rose_pine = {
|
||||
inherits = "rose_pine";
|
||||
"ui.background" = "transparent";
|
||||
};
|
||||
};
|
||||
}
|
||||
25
nix/users/luca/home.nix
Executable file
25
nix/users/luca/home.nix
Executable file
@@ -0,0 +1,25 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
home.username = "luca";
|
||||
home.homeDirectory = "/home/luca";
|
||||
|
||||
programs = {
|
||||
git = import ./git.nix;
|
||||
zsh = import ./zsh.nix;
|
||||
tmux = import ./tmux.nix { inherit pkgs; };
|
||||
helix = import ./helix.nix { inherit pkgs; };
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
nodePackages_latest.typescript-language-server
|
||||
nodejs_22
|
||||
pnpm
|
||||
gh
|
||||
oh-my-posh
|
||||
];
|
||||
|
||||
home.stateVersion = "24.11";
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
16
nix/users/luca/tmux.nix
Executable file
16
nix/users/luca/tmux.nix
Executable file
@@ -0,0 +1,16 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
enable = true;
|
||||
prefix = "C-Space";
|
||||
mouse = true;
|
||||
baseIndex = 1;
|
||||
sensibleOnTop = true;
|
||||
keyMode = "vi";
|
||||
plugins = with pkgs; [{ plugin = tmuxPlugins.tokyo-night-tmux; }];
|
||||
extraConfig = ''
|
||||
bind -n M-H previous-window
|
||||
bind -n M-L next-window
|
||||
'';
|
||||
escapeTime = 0;
|
||||
}
|
||||
9
nix/users/luca/zsh.nix
Normal file
9
nix/users/luca/zsh.nix
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
autosuggestion.enable = true;
|
||||
envExtra = ''
|
||||
. "$HOME/.rokit/env"
|
||||
eval "$(oh-my-posh init zsh -c ~/.config/ohmyposh/zen.toml)"
|
||||
'';
|
||||
}
|
||||
4
nix/wsl.nix
Normal file
4
nix/wsl.nix
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
wsl.enable = true;
|
||||
wsl.defaultUser = "luca";
|
||||
}
|
||||
Reference in New Issue
Block a user