From 59f6c1d359c64c402cbedb61f089b059ff054ea3 Mon Sep 17 00:00:00 2001 From: arnaucube Date: Sun, 9 Jul 2023 08:28:13 +0200 Subject: [PATCH] add nixos config --- .tmux.conf | 7 +- install-new-desktop.sh | 26 +++++ nixos/.gitignore | 2 + nixos/configuration.nix | 129 +++++++++++++++++++++++++ nixos/extra-hardware-configuration.nix | 31 ++++++ 5 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 install-new-desktop.sh create mode 100644 nixos/.gitignore create mode 100644 nixos/configuration.nix create mode 100644 nixos/extra-hardware-configuration.nix diff --git a/.tmux.conf b/.tmux.conf index ccb733a..a770eb2 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -8,4 +8,9 @@ set -g status-fg white bind + run 'cut -c3- ~/.tmux.conf | sh -s _maximize_pane "#{session_name}" #D' # on bind + Ctrl+t open a new window and launch there gotty with a 'random' url -bind-key C-t new-window "gotty -r tmux attach -t `tmux display -p '#S'`" +# bind-key C-t new-window "gotty -r tmux attach -t `tmux display -p '#S'`" + +bind h select-pane -L +bind j select-pane -D +bind k select-pane -U +bind l select-pane -R diff --git a/install-new-desktop.sh b/install-new-desktop.sh new file mode 100644 index 0000000..1827e7d --- /dev/null +++ b/install-new-desktop.sh @@ -0,0 +1,26 @@ +# this file assumes NixOS is being used using the NixOS configuration provided in this repo. + + +cp ./.tmux.conf ~/.tmux.conf + +cp ./vimconfigbase.vim ~/vimconfigbase.vim +cp ./.vimrc ~/.vimrc + +mkdir ~/.config +mkdir ~/.config/nvim +cp ./init.vim ~/.config/nvim/init.vim + +cp ./.zshrc ~/.zshrc +cp ./.sh_alias ~/.sh_alias + +mkdir -p ~/bin +cp ./bin/ltx ~/bin/ +cp ./bin/screens ~/bin/ +cp ./bin/wk ~/bin/ + + +# assuming that Rust is installed +echo "installing delta (gitdiff tool)" +cargo install git-delta +echo "append .gitconfig of this repo lines to the .gitconfig system file to use delta gitdiff tool" +cat .gitconfig >> ~/.gitconfig diff --git a/nixos/.gitignore b/nixos/.gitignore new file mode 100644 index 0000000..afa0dfc --- /dev/null +++ b/nixos/.gitignore @@ -0,0 +1,2 @@ +private-configuration.nix +hardware-configuration.nix diff --git a/nixos/configuration.nix b/nixos/configuration.nix new file mode 100644 index 0000000..c38fccd --- /dev/null +++ b/nixos/configuration.nix @@ -0,0 +1,129 @@ +# 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 = + [ + ./hardware-configuration.nix + ./extra-hardware-configuration.nix + ./private-configuration.nix + ]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # Setup keyfile + boot.initrd.secrets = { + "/crypto_keyfile.bin" = null; + }; + + networking.hostName = "nixos"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Madrid"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ALL = "en_US.UTF-8"; + }; + + # Configure keymap in X11 + services.xserver = { + layout = "us"; + xkbVariant = ""; + + enable=true; + displayManager = { + defaultSession = "none+i3"; + }; + windowManager.i3 = { + enable=true; + extraPackages = with pkgs; [ + dmenu + i3status + i3lock + ]; + }; + }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.userc = { + isNormalUser = true; + description = "userc"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; []; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + vim + neovim + wget + tmux + git + delta + mosh + bat + ripgrep + fzf + python3 + xfce.thunar + screenfetch + htop + alacritty + firefox + qutebrowser + ]; + + # 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; + # }; + programs.zsh.enable = true; + users.defaultUserShell = pkgs.zsh; + environment.shells = with pkgs; [zsh]; + + # 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; + + # 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"; # Did you read the comment? + + # gvfs needed for Thunar to detect external disks + services.gvfs.enable = true; + +} diff --git a/nixos/extra-hardware-configuration.nix b/nixos/extra-hardware-configuration.nix new file mode 100644 index 0000000..82e5b61 --- /dev/null +++ b/nixos/extra-hardware-configuration.nix @@ -0,0 +1,31 @@ +# This is a custom file for a chromebook. + +{ config, lib, pkgs, modulesPath, ... }: + +{ + services.logind.extraConfig = '' + # disable power button. This is for the chromebook + HandlePowerKey=ignore + ''; + + # Set an usable key configuration: Ctrl at capslock, Win at Alt, Alt at Ctrl + services.xserver.displayManager.sessionCommands ='' + ${pkgs.xorg.xmodmap}/bin/xmodmap "${pkgs.writeText "xkb-layout" '' + ! + ! Swap Caps_Lock and Control_L + ! + + remove control = Control_L + remove mod1 = Alt_L + remove mod4 = Super_L + + keysym Control_L = Alt_L + keysym Super_L = Control_L + keysym Alt_L = Super_L + + add control = Control_L + add mod1 = Alt_L + add mod4 = Super_L + ''}" + ''; +}