Initial commit.
commit
da9b70bb43
|
@ -0,0 +1 @@
|
|||
hardware-configuration.nix
|
|
@ -0,0 +1,4 @@
|
|||
# nixos-configuration
|
||||
|
||||
The collection of publically visible nixos-configuration files used for my
|
||||
personal machines.
|
|
@ -0,0 +1,108 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running `nixos-help`).
|
||||
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
boot.loader = {
|
||||
efi.canTouchEfiVariables = true;
|
||||
systemd-boot.enable = true;
|
||||
};
|
||||
|
||||
environment = {
|
||||
# Excludes some KDE plasma applications from the default
|
||||
# install. We choose to use KDE since, with wayland support,
|
||||
# is is capable of fractional scaling.
|
||||
plasma5.excludePackages = with pkgs.libsForQt5; [
|
||||
elisa
|
||||
gwenview
|
||||
khelpcenter
|
||||
konsole
|
||||
okular
|
||||
oxygen
|
||||
plasma-browser-integration
|
||||
print-manager
|
||||
];
|
||||
systemPackages = with pkgs; [
|
||||
gcc
|
||||
git
|
||||
];
|
||||
variables = {
|
||||
EDITOR = "nvim";
|
||||
};
|
||||
};
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
configure = {
|
||||
customRC = ''
|
||||
set colorcolumn=80,100
|
||||
set expandtab " Spaces instead of tabs.
|
||||
set shiftwidth=2 " # of spaces to use for each (auto)indent.
|
||||
set tabstop=2 " # of spaces a <Tab> in the file counts for.
|
||||
'';
|
||||
};
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
};
|
||||
|
||||
networking.hostName = "nixos";
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
|
||||
# Recommended when using pipewire.
|
||||
# https://nixos.wiki/wiki/PipeWire
|
||||
security.rtkit.enable = true;
|
||||
|
||||
services = {
|
||||
mullvad-vpn.enable = true;
|
||||
openssh.enable = true;
|
||||
pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
};
|
||||
xserver = {
|
||||
enable = true;
|
||||
desktopManager.plasma5.enable = true;
|
||||
desktopManager.xterm.enable = false;
|
||||
displayManager.defaultSession = "plasmawayland";
|
||||
xkbOptions = "ctrl:swapcaps";
|
||||
};
|
||||
};
|
||||
|
||||
time.timeZone = "America/Denver";
|
||||
|
||||
# Don't forget to set a password with `passwd`.
|
||||
users.users.jrpotter = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel" # Enable `sudo` for the user.
|
||||
];
|
||||
};
|
||||
|
||||
# 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 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 = "23.05";
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
{
|
||||
"nodes": {
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1699748081,
|
||||
"narHash": "sha256-MOmMapBydd7MTjhX4eeQZzKlCABWw8W6iSHSG4OeFKE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "04bac349d585c9df38d78e0285b780a140dc74a4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-23.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1699596684,
|
||||
"narHash": "sha256-XSXP8zjBZJBVvpNb2WmY0eW8O2ce+sVyj1T0/iBRIvg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "da4024d0ead5d7820f6bd15147d3fe2a0c0cec73",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-23.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
description = "NixOS Flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-23.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, home-manager, ... }: {
|
||||
# Used with `nixos-rebuild --flake .#<hostname>`
|
||||
# nixosConfigurations."<hostname>".config.system.build.toplevel must be a derivation
|
||||
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
|
||||
# Used to pass non-default parameters to submodules.
|
||||
# specialArgs = {...};
|
||||
|
||||
# Modules can be attribute sets or a function that returns an attribute set.
|
||||
# https://nixos-and-flakes.thiscute.world/nixos-with-flakes/nixos-with-flakes-enabled
|
||||
modules = [
|
||||
./configuration.nix
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users.jrpotter = import ./jrpotter;
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
imports = [
|
||||
./git.nix
|
||||
./neovim
|
||||
];
|
||||
|
||||
home = {
|
||||
username = "jrpotter";
|
||||
homeDirectory = "/home/jrpotter";
|
||||
|
||||
packages = with pkgs; [
|
||||
anki-bin
|
||||
bitwarden
|
||||
firefox
|
||||
mullvad-vpn
|
||||
python3
|
||||
wezterm
|
||||
zotero
|
||||
];
|
||||
};
|
||||
|
||||
programs = {
|
||||
bash.enable = true;
|
||||
direnv.enable = true;
|
||||
git.enable = true;
|
||||
home-manager.enable = true;
|
||||
neovim.enable = true;
|
||||
};
|
||||
|
||||
# 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 can update Home Manager without changing this value.
|
||||
# See the Home Manager release notes for a list of state
|
||||
# version changes in each release.
|
||||
home.stateVersion = "23.05";
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{ ... }:
|
||||
{
|
||||
programs.git = {
|
||||
userName = "Joshua Potter";
|
||||
userEmail = "jrpotter2112@gmail.com";
|
||||
};
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
args @ { pkgs, ... }:
|
||||
let
|
||||
conf = {
|
||||
lua = import ./lua.nix args;
|
||||
nix = import ./nix.nix args;
|
||||
python = import ./python.nix args;
|
||||
};
|
||||
|
||||
nvim-dap = {
|
||||
plugin = pkgs.vimPlugins.nvim-dap;
|
||||
config = ''
|
||||
lua << EOF
|
||||
${builtins.concatStringsSep "\n" (builtins.map (m: "do\n${m}\nend") [
|
||||
conf.python.nvim-dap
|
||||
])}
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
|
||||
nvim-lspconfig = {
|
||||
plugin = pkgs.vimPlugins.nvim-lspconfig;
|
||||
config = ''
|
||||
lua << EOF
|
||||
${builtins.concatStringsSep "\n" (builtins.map (m: "do\n${m}\nend") [
|
||||
conf.lua.nvim-lspconfig
|
||||
conf.nix.nvim-lspconfig
|
||||
conf.python.nvim-lspconfig
|
||||
])}
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
|
||||
nvim-treesitter = {
|
||||
plugin = (pkgs.vimPlugins.nvim-treesitter.withPlugins (
|
||||
ps: with ps; [
|
||||
lua
|
||||
nix
|
||||
python
|
||||
]
|
||||
));
|
||||
config = ''
|
||||
lua << EOF
|
||||
require('nvim-treesitter.configs').setup {
|
||||
auto_install = false,
|
||||
highlight = { enable = true },
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
keymaps = {
|
||||
init_selection = '<Tab>',
|
||||
node_incremental = '<Tab>',
|
||||
node_decremental = '<S-Tab>',
|
||||
scope_incremental = false,
|
||||
},
|
||||
},
|
||||
}
|
||||
EOF
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.neovim = {
|
||||
extraLuaConfig = ''
|
||||
vim.o.colorcolumn = '80,100'
|
||||
vim.o.expandtab = true -- Spaces instead of tabs.
|
||||
vim.o.shiftwidth = 2 -- # of spaces to use for each (auto)indent.
|
||||
vim.o.tabstop = 2 -- # of spaces a <Tab> in the file counts for.
|
||||
'';
|
||||
extraPackages = (
|
||||
conf.lua.extraPackages ++
|
||||
conf.nix.extraPackages ++
|
||||
conf.python.extraPackages
|
||||
);
|
||||
plugins = [
|
||||
nvim-dap
|
||||
nvim-lspconfig
|
||||
nvim-treesitter
|
||||
];
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
nvim-lspconfig = ''
|
||||
require('lspconfig').lua_ls.setup { }
|
||||
'';
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
lua-language-server
|
||||
];
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
nvim-lspconfig = ''
|
||||
require('lspconfig').nil_ls.setup { }
|
||||
'';
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
nil
|
||||
];
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
{ pkgs, ... }:
|
||||
let
|
||||
venv = pkgs.python3.withPackages (ps: with ps; [
|
||||
debugpy
|
||||
mccabe
|
||||
pycodestyle
|
||||
pyflakes
|
||||
python-lsp-server
|
||||
python-lsp-black
|
||||
]);
|
||||
in
|
||||
{
|
||||
nvim-dap = ''
|
||||
local dap = require('dap')
|
||||
|
||||
dap.adapters.python = function(callback, config)
|
||||
callback({
|
||||
name = 'debugpy',
|
||||
type = 'executable',
|
||||
command = '${venv}/bin/python3.10',
|
||||
args = { '-m', 'debugpy.adapter' },
|
||||
options = {
|
||||
source_filetype = 'python',
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
dap.configurations.python = dap.configurations.python or {}
|
||||
table.insert(dap.configurations.python, {
|
||||
name = 'Launch',
|
||||
type = 'python',
|
||||
request = 'launch',
|
||||
program = "''${file}",
|
||||
cwd = "''${workspaceFolder}",
|
||||
})
|
||||
'';
|
||||
|
||||
nvim-lspconfig = ''
|
||||
require('lspconfig').pylsp.setup {
|
||||
settings = {
|
||||
pylsp = {
|
||||
-- `flake8` currently fails in some cases:
|
||||
-- https://github.com/python-lsp/python-lsp-server/pull/434
|
||||
configurationSources = 'pycodestyle',
|
||||
plugins = {
|
||||
autopep8 = { enabled = false },
|
||||
black = { enabled = true },
|
||||
mccabe = { enabled = true },
|
||||
pycodestyle = { enabled = true },
|
||||
pyflakes = { enabled = true },
|
||||
yapf = { enabled = false },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
'';
|
||||
|
||||
extraPackages = [
|
||||
venv
|
||||
];
|
||||
}
|
Loading…
Reference in New Issue