diff --git a/README.md b/README.md new file mode 100644 index 0000000..f691c85 --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# Nora's Configs + +The evolution of `nora/dotfiles`; Nix configs under `home-manager` deployed with `morph`. + +## Layout + +These files are "organized" as follows: + +- `common/` is the directory where most of the configuration happens. + These are the files used in more than one host configuration, now or later. + - `home_manager/` includes all `home-manager` configs, including packagesets. + For example, `home_manager/rust.nix` includes packages and options related to Rust development. + - `common.nix` contains all configurations common across all `home-manager` deployments. + For example, GPG agent configurations and Vim settings. + - `users/` contains basic user definitions. + - `default.nix` is the core file defining the default nix configuration for all machines. + - `common.nix` contains all the common NixOS definitions that all machines will need. +- `files/` contains files used by `home-manager` to deploy anything not covered by existing `home-manager` options. +- `hosts/` defines host-specific configurations for NixOS and `home-manager`. + - `calembel/` is my Thelio (thelio-r1) + - `configuration.nix` is the core NixOS configuration file, copied from the installed system + - `hardware-configuration.nix` is the hardware config, imported in `configuration.nix`. + - `home.nix` is the `home-manager` config specifically for `calembel`. +- `ops/` contains all the information needed to deploy using `morph`. + +The import structure goes as follows: + +- The `ops//network.nix` file defining the hosts in a network imports + - `common/default.nix` for all-machine defaults, which imports + - `common/common.nix` for common setup, including fonts, nixpkgs setup, and locale, which imports + - `common/users/*` which sets up usernames, shells, SSH keys, and groups for users. + - the host's `hosts//configuration.nix` file, which configures NixOS on the host and imports + - the hosts's `hosts//hardware-configuration.nix` file, which configures partitions and drivers. + - the host's `hosts//home.nix` file, which configures `home-manager` for that host, by importing + - `common/home_manager/common.nix`, which configures `home-manager` for all machines + - various `common/home_manager/.nix`, which configures a specific use case, + like graphical programs or Rust development. diff --git a/common/packagesets/desktop.nix b/common/packagesets/desktop.nix deleted file mode 100644 index 8ccc013..0000000 --- a/common/packagesets/desktop.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ pkgs, ...}: -{ - users.nora.packages = with pkgs; [ - wally-cli # flash my ergodox - ]; -} diff --git a/common/packagesets/packages.nix b/common/packagesets/packages.nix deleted file mode 100644 index a845214..0000000 --- a/common/packagesets/packages.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ pkgs, ...}: -{ - packageOverrides = pkgs: with pkgs; rec { - - # Machines - Calembel = pkgs.buildEnv { - name = "calembel"; - paths = [ Terminal X Graphical Audio Rust ]; - }; - - X = pkgs.buildEnv { - name = "x-tools"; - paths = [ - xorg.xkill - xorg.xev - ]; - }; - - Graphical = pkgs.buildEnv { - name = "graphical"; - paths = [ - element-desktop - discord - tdesktop - mumble - ]; - }; - - Audio = pkgs.buildEnv { - name = "audio"; - paths = [ pulseeffects-pw pulsemixer audacity picard ]; - }; - - Rust = pkgs.buildEnv { - name = "rust"; - paths = [ evcxr rustup ]; - }; - - # Bugged; "found a set where a list was expected", whatever that means. - Python = pkgs.buildEnv { - name = "python"; - paths = (python39.withPackages (ps: with ps; [ pylint pyflakes flake8 pygments ])); - }; -};} diff --git a/files/vimrc b/files/vimrc new file mode 100644 index 0000000..f259aff --- /dev/null +++ b/files/vimrc @@ -0,0 +1,54 @@ +set encoding=utf-8 + +" Leader +let mapleader=" " + +" Switch syntax highlighting on, when the terminal has colors +" Also switch on highlighting the last used search pattern. +if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on") + syntax on +endif + +set history=50 +set backspace=2 " backspace deletes in insert mode +set nobackup +set nowritebackup +set noswapfile " don't write .swp files +set ruler " show cursor position all the time +set showcmd " display incomplete commands +set incsearch " incremental searching +set laststatus=2 " always show status +set autowrite " always write before commands +set nomodeline " disable modelines completely +set modelines=0 + +filetype plugin indent on + +" Soft tabs with two spaces +set tabstop=2 +set shiftwidth=2 +set shiftround +set expandtab + +" Display extra whitespace +set list listchars=tab:»·,trail:·,nbsp:· + +" Use one space, not two, after punctuation. +set nojoinspaces + +" Ripgrep configuration, if available +" +" Use The Silver Searcher https://github.com/ggreer/the_silver_searcher +if executable('rg') + " Use Ripgrep over Grep + set grepprg="rg --no-heading --color never" + + " Use rg in fzf for listing files. Lightning fast and respects .gitignore + let $FZF_DEFAULT_COMMAND = 'rg --files-with-matches -F --color never --hidden -g ""' + + if !exists(":Rg") + command -nargs=+ -complete=file -bar Rg silent! grep! |cwindow|redraw! + nnoremap \ :Rg + endif +endif +