diff --git a/README.md b/README.md index 1e250c1..bc69530 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,13 @@ # setup-machines -This repo contains all the tools to correctly setup all the needed tools on a machine from clean install \ No newline at end of file +This repo contains all the tools to correctly setup all the needed tools on a machine from clean install + +[home-manager manual](https://nix-community.github.io/home-manager/index.xhtml) + +```sh +home-manager switch --flake ".#noahk@NixOS_Desktop" +``` + +```sh +sudo nixos-rebuild switch --flake ".#NixOS_Desktop" +``` diff --git a/flake.lock b/flake.lock index ea7c123..f77e3f4 100644 --- a/flake.lock +++ b/flake.lock @@ -7,32 +7,32 @@ ] }, "locked": { - "lastModified": 1720042825, - "narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=", + "lastModified": 1739757849, + "narHash": "sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA=", "owner": "nix-community", "repo": "home-manager", - "rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073", + "rev": "9d3d080aec2a35e05a15cedd281c2384767c2cfe", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-24.05", + "ref": "release-24.11", "repo": "home-manager", "type": "github" } }, "nixpkgs": { "locked": { - "lastModified": 1723938990, - "narHash": "sha256-9tUadhnZQbWIiYVXH8ncfGXGvkNq3Hag4RCBEMUk7MI=", + "lastModified": 1740463929, + "narHash": "sha256-4Xhu/3aUdCKeLfdteEHMegx5ooKQvwPHNkOgNCXQrvc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "c42fcfbdfeae23e68fc520f9182dde9f38ad1890", + "rev": "5d7db4668d7a0c6cc5fc8cf6ef33b008b2b1ed8b", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-24.05", + "ref": "nixos-24.11", "repo": "nixpkgs", "type": "github" } diff --git a/flake.nix b/flake.nix index 502609c..be02b2f 100644 --- a/flake.nix +++ b/flake.nix @@ -2,9 +2,9 @@ description = "A very basic flake"; inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; + nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; - home-manager.url = "github:nix-community/home-manager/release-24.05"; + home-manager.url = "github:nix-community/home-manager/release-24.11"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; }; diff --git a/home-manager/IDEs/default.nix b/home-manager/IDEs/default.nix new file mode 100644 index 0000000..9f885b8 --- /dev/null +++ b/home-manager/IDEs/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ + ./vscode.nix + ]; +} \ No newline at end of file diff --git a/home-manager/IDEs/vscode.nix b/home-manager/IDEs/vscode.nix new file mode 100644 index 0000000..656ff54 --- /dev/null +++ b/home-manager/IDEs/vscode.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: + +{ + programs.vscode = { + enable = true; + extensions = with pkgs.vscode-extensions; [ + catppuccin.catppuccin-vsc + catppuccin.catppuccin-vsc-icons + + jnoortheen.nix-ide + mhutchie.git-graph + donjayamanne.githistory + eamodio.gitlens + ]; + }; +} \ No newline at end of file diff --git a/home-manager/git/default.nix b/home-manager/git/default.nix new file mode 100644 index 0000000..d7e1d8e --- /dev/null +++ b/home-manager/git/default.nix @@ -0,0 +1,42 @@ +{ pkgs, ... }: + +{ + programs.git = { + enable = true; + package = pkgs.gitFull; + + delta.enable = true; + + userName = "Noah Knegt"; + userEmail = "personal@noahknegt.com"; + + signing = { + key = "~/.ssh/id_ed25519.pub"; + signByDefault = true; + }; + + extraConfig = { + gpg = { format = "ssh"; }; + push = { autoSetupRemote = true; }; + pull = { rebase = true; }; + fetch = { prune = true; }; + }; + + includes = [ + { + condition = "gitdir:~/git.noahknegt.com"; + path = "~/.config/git/git.noahknegt.com.gitconfig"; + contents = { + userEmail = "git@noahknegt.com"; + }; + } + { + condition = "gitdir:~/open-source"; + path = "~/.config/git/open-source.gitconfig"; + contents = { + userEmail = "git@noahknegt.com"; + }; + } + ]; + }; +} \ No newline at end of file diff --git a/home-manager/home.nix b/home-manager/home.nix index ca10f03..eea40ec 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -14,6 +14,13 @@ # You can also split up your configuration and import pieces of it here: # ./nvim.nix + + ./IDEs + + ./tools + + ./git + ./zsh ]; nixpkgs = { @@ -39,21 +46,26 @@ }; home = { - username = noahk; - homeDirectory = /home/noahk/; + username = "noahk"; + homeDirectory = "/home/noahk"; + + packages = [ + (pkgs.nerdfonts.override { fonts = [ "SourceCodePro" ]; }) + ]; }; + fonts.fontconfig.enable = true; + # Add stuff for your user as you see fit: # programs.neovim.enable = true; # home.packages = with pkgs; [ steam ]; # Enable home-manager and git programs.home-manager.enable = true; - programs.git.enable = true; # Nicely reload system units when changing configs - systemd.user.startServices = sd-switch; + systemd.user.startServices = "sd-switch"; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion - home.stateVersion = 24.05; + home.stateVersion = "24.11"; } diff --git a/home-manager/tools/bat.nix b/home-manager/tools/bat.nix new file mode 100644 index 0000000..ded7a61 --- /dev/null +++ b/home-manager/tools/bat.nix @@ -0,0 +1,7 @@ +{ pkgs, inputs, ... }: + +{ + programs.bat = { + enable = true; + }; +} diff --git a/home-manager/tools/default.nix b/home-manager/tools/default.nix new file mode 100644 index 0000000..6af9a51 --- /dev/null +++ b/home-manager/tools/default.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + imports = [ + ./bat.nix + ./eza.nix + ./fzf.nix + ./ripgrep.nix + ./tmux.nix + ]; +} diff --git a/home-manager/tools/eza.nix b/home-manager/tools/eza.nix new file mode 100644 index 0000000..08abd36 --- /dev/null +++ b/home-manager/tools/eza.nix @@ -0,0 +1,16 @@ +{ pkgs, inputs, ... }: + +{ + programs.eza = { + enable = true; + enableZshIntegration = true; + + colors = "always"; + icons = "always"; + git = true; + + extraOptions = [ + "--group-directories-first" + ]; + }; +} diff --git a/home-manager/tools/fzf.nix b/home-manager/tools/fzf.nix new file mode 100644 index 0000000..3e697cb --- /dev/null +++ b/home-manager/tools/fzf.nix @@ -0,0 +1,9 @@ +{ pkgs, inputs, ... }: + +{ + programs.fzf = { + enable = true; + enableZshIntegration = true; + + }; +} diff --git a/home-manager/tools/ripgrep.nix b/home-manager/tools/ripgrep.nix new file mode 100644 index 0000000..510a0a3 --- /dev/null +++ b/home-manager/tools/ripgrep.nix @@ -0,0 +1,7 @@ +{ pkgs, inputs, ... }: + +{ + programs.ripgrep = { + enable = true; + }; +} diff --git a/home-manager/tools/tmux.nix b/home-manager/tools/tmux.nix new file mode 100644 index 0000000..6e128be --- /dev/null +++ b/home-manager/tools/tmux.nix @@ -0,0 +1,7 @@ +{ pkgs, inputs, ... }: + +{ + programs.tmux = { + enable = true; + }; +} \ No newline at end of file diff --git a/home-manager/zsh/antidote.nix b/home-manager/zsh/antidote.nix new file mode 100644 index 0000000..3e313b7 --- /dev/null +++ b/home-manager/zsh/antidote.nix @@ -0,0 +1,33 @@ +{ pkgs, inputs, ... }: + +{ + programs.zsh.antidote = { + enable = true; + + plugins = [ + # popular fish-like plugins + "mattmc3/zfunctions" + "zsh-users/zsh-autosuggestions" + "zdharma-continuum/fast-syntax-highlighting kind:defer" + "zsh-users/zsh-history-substring-search" + + # set up Zsh completions with plugins + "mattmc3/ez-compinit" + "zsh-users/zsh-completions kind:fpath path:src" + + # frameworks like oh-my-zsh are supported + "getantidote/use-omz" # handle OMZ dependencies + "ohmyzsh/ohmyzsh path:lib" # load OMZ's library + + # List of plugins + "ohmyzsh/ohmyzsh path:plugins/extract" + "ohmyzsh/ohmyzsh path:plugins/fzf" + "ohmyzsh/ohmyzsh path:plugins/git" + "ohmyzsh/ohmyzsh path:plugins/git-auto-fetch" + "ohmyzsh/ohmyzsh path:plugins/gitignore" + "ohmyzsh/ohmyzsh path:plugins/jsontools" + "ohmyzsh/ohmyzsh path:plugins/sudo" + "ohmyzsh/ohmyzsh path:plugins/tmux" + ]; + }; +} \ No newline at end of file diff --git a/home-manager/zsh/default.nix b/home-manager/zsh/default.nix new file mode 100644 index 0000000..8232731 --- /dev/null +++ b/home-manager/zsh/default.nix @@ -0,0 +1,10 @@ +{ ... }: + +{ + imports = [ + ./antidote.nix + ./starship.nix + ./zoxide.nix + ./zsh.nix + ]; +} diff --git a/home-manager/zsh/starship.nix b/home-manager/zsh/starship.nix new file mode 100644 index 0000000..20e9385 --- /dev/null +++ b/home-manager/zsh/starship.nix @@ -0,0 +1,8 @@ +{ pkgs, inputs, ... }: + +{ + programs.starship = { + enable = true; + enableZshIntegration = true; + }; +} diff --git a/home-manager/zsh/zoxide.nix b/home-manager/zsh/zoxide.nix new file mode 100644 index 0000000..1701cbf --- /dev/null +++ b/home-manager/zsh/zoxide.nix @@ -0,0 +1,8 @@ +{ pkgs, inputs, ... }: + +{ + programs.zoxide = { + enable = true; + enableZshIntegration = true; + }; +} diff --git a/home-manager/zsh/zsh.nix b/home-manager/zsh/zsh.nix new file mode 100644 index 0000000..756e516 --- /dev/null +++ b/home-manager/zsh/zsh.nix @@ -0,0 +1,28 @@ +{ pkgs, inputs, ... }: + +{ + programs.zsh = { + enable = true; + + autosuggestion.enable = true; + enableCompletion = true; + + history = { + append = true; + }; + + + shellAliases = { + ls = "eza"; + ll = "eza -lh"; + lal = "eza -lah"; + + cd = "z"; + + grep = "rg"; + + cat = "bat"; + less = "bat --pager=less"; + }; + }; +} \ No newline at end of file diff --git a/nixos/configuration.nix b/nixos/configuration.nix index bea3c6c..8b8859f 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -32,11 +32,23 @@ channel.enable = false; }; + networking = { + hostName = "NixOS_Desktop"; # Define your hostname. + networkmanager.enable = true; + + firewall = { + allowedTCPPorts = [ + # Allow discovery for spotify on the network + 57621 + ]; + allowedUDPPorts = [ + # Allow discovery for spotify on the network + 5353 + ]; + }; + }; - networking.hostName = "NixOS_Desktop"; # Define your hostname. -# Enable networking - networking.networkmanager.enable = true; # Set your time zone. time.timeZone = "Europe/Amsterdam"; @@ -56,15 +68,14 @@ LC_TIME = "nl_NL.UTF-8"; }; - # Enable the X11 windowing system. - services.xserver.enable = true; - - # Enable the XFCE Desktop Environment. - services.xserver.displayManager.lightdm.enable = true; - services.xserver.desktopManager.xfce.enable = true; - - # Configure keymap in X11 + # Configure X11 services.xserver = { + enable = true; + + # XFCE + displayManager.lightdm.enable = true; + desktopManager.xfce.enable = true; + xkb.layout = "us"; xkb.variant = ""; }; @@ -88,11 +99,14 @@ #media-session.enable = true; }; + programs.zsh.enable = true; + # Define a user account. Don't forget to set a password with 'passwd'. users.users.noahk = { isNormalUser = true; description = "Noah Knegt"; extraGroups = [ "networkmanager" "wheel" ]; + shell = pkgs.zsh; }; # Install firefox. @@ -109,6 +123,9 @@ papirus-icon-theme # Menu kind xfce.xfce4-whiskermenu-plugin + + # Spotify + spotify ]; # This value determines the NixOS release from which the default @@ -117,6 +134,5 @@ # 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? - + system.stateVersion = "24.11"; # Did you read the comment? }