Skip to content

Instantly share code, notes, and snippets.

@guillemcanal
Last active April 8, 2025 22:54
Show Gist options
  • Save guillemcanal/dc6c69d6733d557d2ca477b302f9f889 to your computer and use it in GitHub Desktop.
Save guillemcanal/dc6c69d6733d557d2ca477b302f9f889 to your computer and use it in GitHub Desktop.
nix home manager

Nix and Home Manager

sh <(curl -L https://nixos.org/nix/install) --no-daemon  
echo 'experimental-features = nix-command flakes' >> ~/.config/nix/nix.conf  
nix run home-manager/master -- init --switch  
{
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1744038920,
"narHash": "sha256-9a4V1wQXS8hXZtc7mRtz0qINkGW+C99aDrmXY6oYBFg=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "a4d8020820a85b47f842eae76ad083b0ec2a886a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nixGL": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1713543440,
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
"owner": "nix-community",
"repo": "nixGL",
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixGL",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1743964447,
"narHash": "sha256-nEo1t3Q0F+0jQ36HJfbJtiRU4OI+/0jX/iITURKe3EE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "063dece00c5a77e4a0ea24e5e5a5bd75232806f8",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixGL": "nixGL",
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}
{
description = "Home Manager configuration of guillem";
inputs = {
# Specify the source of Home Manager and Nixpkgs.
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
# @see https://github.com/nix-community/home-manager/issues/3968#issuecomment-2514739063
nixGL = {
url = "github:nix-community/nixGL";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { nixpkgs, home-manager, nixGL, ... }:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
in {
homeConfigurations."guillem" = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = {
inherit nixGL;
};
# Specify your home configuration modules here, for example,
# the path to your home.nix.
modules = [ ./home.nix ];
# Optionally use extraSpecialArgs
# to pass through arguments to home.nix
};
};
}
{ config, lib, pkgs, nixGL, ... }:
let
phpVersion = "84";
phpPkg = builtins.getAttr ("php" + phpVersion) pkgs;
phpPackages = builtins.getAttr ("php" + phpVersion + "Packages") pkgs;
php = phpPkg.buildEnv {
extensions = { all, ... }: with all; [
xdebug
redis
amqp
iconv
readline
tokenizer
];
extraConfig = ''
xdebug.mode=debug
memory_limit=256M
'';
};
node = pkgs.nodejs_22;
yarn = pkgs.yarn.override {
nodejs = node;
};
composer = phpPackages.composer.override {
php = php;
};
psysh = phpPackages.psysh.override {
php = php;
};
in {
home.username = "guillem";
home.homeDirectory = "/home/guillem";
home.stateVersion = "24.11";
fonts.fontconfig.enable = true;
home.packages = [
php
psysh
node
yarn
composer
pkgs.symfony-cli
pkgs.direnv
pkgs.nerd-fonts.jetbrains-mono
];
home.file = {
# Define dotfiles here
};
home.sessionVariables = {
EDITOR = "vim";
};
nixGL.packages = nixGL.packages;
nixGL.defaultWrapper = "mesa";
# @see https://github.com/clo4/ghostty-hm-module
programs.ghostty = {
enable = true;
package = config.lib.nixGL.wrap pkgs.ghostty;
settings = {
font-size = 12;
font-family = "JetBrainsMono Nerd Font";
};
};
programs.home-manager.enable = true;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment