diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c22f9e5 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +default: switch + +switch: + home-manager switch --flake ~/.dotfiles \ No newline at end of file diff --git a/README.md b/README.md index 94b8965..13e5a11 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ -nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager -nix-channel --update -nix-shell '' -A install +# Run the following command to begin +``` +curl -s https://raw.githubusercontent.com/vleeuwenmenno/dotfiles/master/setup.sh | bash +``` \ No newline at end of file diff --git a/flake.nix b/flake.nix index 06080bc..5d93176 100644 --- a/flake.nix +++ b/flake.nix @@ -24,5 +24,16 @@ ]; }; }; + nixos = nixpkgs.lib.nixosSystem { + modules = [ + ./configuration.nix + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.livenux = import ./home.nix; + } + ]; + }; }; } \ No newline at end of file diff --git a/home.nix b/home.nix index 922b33a..e8b1df2 100644 --- a/home.nix +++ b/home.nix @@ -1,75 +1,32 @@ { config, pkgs, ... }: - { - # Home Manager needs a bit of information about you and the paths it should - # manage. - home.username = "menno"; - home.homeDirectory = "/home/menno"; + home = { + username = "menno"; + homeDirectory = "/home/menno"; + stateVersion = "23.11"; - # 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 = [ - # # Adds the 'hello' command to your environment. It prints a friendly - # # "Hello, world!" when run. - pkgs.hello - - # # It is sometimes useful to fine-tune packages, for example, by applying - # # overrides. You can do that directly here, just don't forget the - # # parentheses. Maybe you want to install Nerd Fonts with a limited number of - # # fonts? - # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) - - # # 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}!" - # '') - ]; - - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. - home.file = { - # # 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 - # ''; + packages = [ + pkgs.gnumake + pkgs.btop + pkgs.go + ]; }; - # 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/menno/etc/profile.d/hm-session-vars.sh - # - home.sessionVariables = { - # EDITOR = "emacs"; - }; + programs = { + home-manager.enable = true; - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; -} + neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + }; + + git = { + enable = true; + userName = "Menno van Leeuwen"; + userEmail = "menno@vleeuwen.me"; + }; + # nushell.enable = true; + }; +} \ No newline at end of file diff --git a/setup.sh b/setup.sh index 6bbf57f..2f25748 100644 --- a/setup.sh +++ b/setup.sh @@ -1,5 +1,5 @@ #!/bin/bash -NIX_CONFIG_URL="https://gist.githubusercontent.com/vleeuwenmenno/4671a99beca2e45dc4b0211de7865dfe/raw/8eb0656fe956db81b18d31caad54aaff66298e0a/nix.conf" +DOTFILES_REPO="git@github.com:vleeuwenmenno/dotfiles.git" help() { echo "Usage: $0 [option...]" >&2 @@ -19,7 +19,7 @@ install_nix() { echo 'Installing NIX' sh <(curl -L https://nixos.org/nix/install) --daemon - echo 'Please restart your shell to continue...' + echo 'Please restart your shell to continue... (Then run `./setup.sh -c`)' touch ~/.setup-initial-done fi } @@ -64,10 +64,19 @@ if [ "$1" == "-c" ] || [ "$1" == "--continue" ]; then # Add experimental-features to nix.conf nix_experimental - # Insert nix configuration from github gist - nix_config_import + # Clone dotfiles + if [ -d ~/.dotfiles ]; then + echo "Dotfiles already cloned." + else + echo "Cloning dotfiles..." + git clone $DOTFILES_REPO ~/.dotfiles + fi - + # Run initial home-manager setup + nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-manager + nix-channel --update + nix-shell '' -A install + home-manager switch --flake ~/.dotfiles elif [ "$1" == "-h" ] || [ "$1" == "--help" ]; then help elif [ "$1" == "-i" ] || [ "$1" == "--init" ]; then @@ -77,7 +86,11 @@ elif [ "$1" == "-i" ] || [ "$1" == "--init" ]; then # Install nix install_nix else - help + # Ubuntu specific, hide login message + hush_login + + # Install nix + install_nix fi