diff --git a/modules/system/base.nix b/modules/system/base.nix index bc57008..e55b473 100644 --- a/modules/system/base.nix +++ b/modules/system/base.nix @@ -25,5 +25,7 @@ boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; + nixpkgs.config.allowUnfree = true; + system.stateVersion = "25.11"; } diff --git a/modules/system/home-manager-skel.nix b/modules/system/home-manager-skel.nix index 9ae3fa9..b3142c7 100644 --- a/modules/system/home-manager-skel.nix +++ b/modules/system/home-manager-skel.nix @@ -1,44 +1,8 @@ { ... }: let - flakeText = '' -{ - description = "Home Manager configuration of admin"; - - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - home-manager = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - }; - - outputs = { nixpkgs, home-manager, ... }: { - homeConfigurations."admin" = home-manager.lib.homeManagerConfiguration { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - modules = [ ./home.nix ]; - }; - }; -} -''; - - homeText = '' -{ config, pkgs, ... }: - -{ - home.username = "admin"; - home.homeDirectory = "/home/admin"; - home.stateVersion = "25.05"; - - home.packages = [ pkgs.ptyxis ]; - - home.file = { }; - - home.sessionVariables = { }; - - programs.home-manager.enable = true; -} -''; + flakeText = (builtins.readFile ../../templates/home-flake.nix); + homeText = (builtins.readFile ../../templates/home-home.nix); in { environment.etc = { diff --git a/modules/system/packages.nix b/modules/system/packages.nix index 0416fca..02dacae 100644 --- a/modules/system/packages.nix +++ b/modules/system/packages.nix @@ -3,8 +3,10 @@ { # Baseline system tools available everywhere; users run Home Manager standalone. config.environment.systemPackages = lib.mkAfter [ - pkgs.home-manager pkgs.ghostty + pkgs.home-manager + pkgs.just pkgs.libnotify + pkgs.micro ]; } diff --git a/scripts/hm-bootstrap.sh b/scripts/hm-bootstrap.sh index 52fe97e..0bd2f8f 100644 --- a/scripts/hm-bootstrap.sh +++ b/scripts/hm-bootstrap.sh @@ -68,6 +68,7 @@ mkdir -p "$HOME/.config/home-manager" for f in flake.nix home.nix; do if [ -f "/etc/skel/.config/home-manager/$f" ] && [ ! -e "$HOME/.config/home-manager/$f" ]; then cp "/etc/skel/.config/home-manager/$f" "$HOME/.config/home-manager/$f" + chmod u+rw "$HOME/.config/home-manager/$f" fi done diff --git a/templates/home-flake.nix b/templates/home-flake.nix new file mode 100644 index 0000000..6d6508b --- /dev/null +++ b/templates/home-flake.nix @@ -0,0 +1,18 @@ +{ + description = "Home Manager configuration of admin"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { nixpkgs, home-manager, ... }: { + homeConfigurations."admin" = home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.x86_64-linux; + modules = [ ./home.nix ]; + }; + }; +} \ No newline at end of file diff --git a/templates/home-home.nix b/templates/home-home.nix new file mode 100644 index 0000000..a4d96e8 --- /dev/null +++ b/templates/home-home.nix @@ -0,0 +1,76 @@ +{ config, pkgs, ... }: + +{ + home.username = "admin"; + home.homeDirectory = "/home/admin"; + home.stateVersion = "25.05"; + + nixpkgs.config.allowUnfree = true; + + programs.vscode = { + enable = true; + + # Choose between VS Code and Codium: + # package = pkgs.vscode; + package = pkgs.vscodium; + + # You can declaratively enable extensions here: + profiles.default.extensions = with pkgs.vscode-extensions; [ + dracula-theme.theme-dracula + yzhang.markdown-all-in-one + ]; + }; + + # programs.emacs.enable = true + # programs.vim.enable = true + # programs.neovim.enable = true + + home.packages = with pkgs; [ + + # decibels # default GNOME audio player + gnome-calendar # default GNOME calendar + # gnome-contacts # default GNOME contacts + + firefox # Mozilla web browser + # google-chrome # web browser from Google + # chromium # open source web browser from Google + # brave # privacy oriented web browser + # opera # fast alternative web browser + # vivaldi # powerful and personal web browser + + thunderbird # full-featured Mozilla e-mail client + # geary # default GNOME email client + + ptyxis # container aware GNOME terminal + # alacritty # GPU accelerated terminal emulator + # kitty # GPU accelerated terminal emulator + + jetbrains-toolbox # fresh versions of Android Studio and other tools + # devpod # open-source code spaces + + ]; + + home.file = { + ".justfile".text = '' + [no-cd] + manage: + $EDITOR ~/.config/home-manager/home.nix + + [no-cd] + switch: + home-manager switch --flake ~/.config/home-manager#$USER + + [no-cd] + rebuild: + sudo nixos-rebuild switch --flake /etc/nixos#local-$HOSTNAME + + [no-cd] + clean: + nix-collect-garbage -d + ''; + }; + + home.sessionVariables = { }; + + programs.home-manager.enable = true; +}