mirror of
https://github.com/jbowdre/dotfiles.git
synced 2024-11-24 10:12:17 +00:00
refactor nix config based on https://github.com/Misterio77/nix-starter-configs
This commit is contained in:
parent
fde8393c21
commit
f444ee8081
12 changed files with 202 additions and 162 deletions
47
flake.lock
47
flake.lock
|
@ -7,42 +7,27 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1690084763,
|
"lastModified": 1687871164,
|
||||||
"narHash": "sha256-Nw680m/pyVoosSgXZW415Z657mfVM2BxaxDPjEk48Z0=",
|
"narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "fb03fa5516d4e86059d24ab35a611ffa3a359547",
|
"rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
|
"ref": "release-23.05",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1690083312,
|
"lastModified": 1690271650,
|
||||||
"narHash": "sha256-I3egwgNXavad1eIjWu1kYyi0u73di/sMmlnQIuzQASk=",
|
"narHash": "sha256-qwdsW8DBY1qH+9luliIH7VzgwvL+ZGI3LZWC0LTiDMI=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "af8cd5ded7735ca1df1a1174864daab75feeb64a",
|
"rev": "6dc93f0daec55ee2f441da385aaf143863e3d671",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-23_05": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1689956312,
|
|
||||||
"narHash": "sha256-NV9yamMhE5jgz+ZSM2IgXeYqOvmGIbIIJ+AFIhfD7Ek=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "6da4bc6cb07cba1b8e53d139cbf1d2fb8061d967",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -52,11 +37,27 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-unstable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1690272529,
|
||||||
|
"narHash": "sha256-MakzcKXEdv/I4qJUtq/k/eG+rVmyOZLnYNC2w1mB59Y=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "ef99fa5c5ed624460217c31ac4271cfb5cb2502c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nixpkgs-23_05": "nixpkgs-23_05"
|
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
101
flake.nix
101
flake.nix
|
@ -2,91 +2,60 @@
|
||||||
description = "A Very Flakey Home Manager";
|
description = "A Very Flakey Home Manager";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05";
|
||||||
nixpkgs-23_05.url = "github:nixos/nixpkgs/nixos-23.05";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager/release-23.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {nixpkgs, home-manager, ...} @inputs:
|
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
||||||
let
|
let
|
||||||
# Overlays enable you to customize the Nixpkgs attribute set
|
inherit (self) outputs;
|
||||||
overlays = [
|
forAllSystems = nixpkgs.lib.genAttrs [
|
||||||
(self: super:
|
|
||||||
let
|
|
||||||
system = self.stdenv.system;
|
|
||||||
in {
|
|
||||||
pkgs_2305 = inputs.nixpkgs-23_05.legacyPackages.${system};
|
|
||||||
pkgs_aarch64 = import nixpkgs {
|
|
||||||
system = "aarch64-${builtins.head (builtins.match ".+-([[:lower:]]+)" system)}";
|
|
||||||
};
|
|
||||||
pkgs_x86_64 = nixpkgs.legacyPackages.${"x86_64-${builtins.head (builtins.match ".+-([[:lower:]]+)" system)}"};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
# Systems supported
|
|
||||||
allSystems = [
|
|
||||||
"aarch64-linux"
|
"aarch64-linux"
|
||||||
"x86_64-linux"
|
"x86_64-linux"
|
||||||
];
|
];
|
||||||
|
|
||||||
importPkgs = (system: import nixpkgs {
|
|
||||||
inherit overlays system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
# Helper to provide system-specific attributes
|
|
||||||
forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f {
|
|
||||||
inherit system;
|
|
||||||
pkgs = (importPkgs system);
|
|
||||||
});
|
|
||||||
|
|
||||||
in
|
in
|
||||||
rec {
|
rec {
|
||||||
inherit allSystems importPkgs forAllSystems home-manager;
|
packages = forAllSystems (system:
|
||||||
|
let pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in import ./nix/pkgs { inherit pkgs; }
|
||||||
|
);
|
||||||
|
|
||||||
|
devShells = forAllSystems (system:
|
||||||
|
let pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in import ./nix/shell.nix { inherit pkgs; }
|
||||||
|
);
|
||||||
|
|
||||||
|
overlays = import ./nix/overlays { inherit inputs; };
|
||||||
|
nixosModules = import ./nix/modules/nixos;
|
||||||
|
homeManagerModules = import ./nix/modules/home-manager;
|
||||||
|
|
||||||
overlays = { };
|
nixosConfigurations = {
|
||||||
|
pixnix = nixpkgs.lib.nixosSystem {
|
||||||
packages = forAllSystems
|
specialArgs = { inherit inputs outputs; };
|
||||||
({ pkgs, system }: rec {
|
modules = [
|
||||||
home-penguin-fw = homeConfigurations."john@penguin-fw".activationPackage;
|
./nix/nixos/configuration.nix
|
||||||
home-penguin-duet = homeConfigurations."john@penguin-duet".activationPackage;
|
|
||||||
home-pixnix = homeConfigurations."john@pixnix".activationPackage;
|
|
||||||
all = pkgs.symlinkJoin {
|
|
||||||
name = "all";
|
|
||||||
paths = [
|
|
||||||
home-penguin-fw
|
|
||||||
home-penguin-duet
|
|
||||||
home-pixnix
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
default = all;
|
};
|
||||||
});
|
|
||||||
|
|
||||||
homeConfigurations = {
|
homeConfigurations = {
|
||||||
"john@penguin-fw" = home-manager.lib.homeManagerConfiguration {
|
"john@penguin-fw" = home-manager.lib.homeManagerConfiguration {
|
||||||
pkgs = importPkgs "x86_64-linux";
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
extraSpecialArgs = { inherit inputs outputs; };
|
||||||
modules = [
|
modules = [
|
||||||
./nix/machines/penguin-fw/home.nix
|
./nix/machines/penguin-fw/home.nix
|
||||||
];
|
{
|
||||||
};
|
home = {
|
||||||
"john@penguin-duet" = home-manager.lib.homeManagerConfiguration {
|
username = "john";
|
||||||
pkgs = importPkgs "aarch64-linux";
|
homeDirectory = "/home/john";
|
||||||
|
};
|
||||||
modules = [
|
}
|
||||||
./nix/machines/penguin-duet/home.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"john@pixnix" = home-manager.lib.homeManagerConfiguration {
|
|
||||||
pkgs = importPkgs "x86_64-linux";
|
|
||||||
|
|
||||||
modules = [
|
|
||||||
./nix/common/home.nix
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
|
@ -1,78 +1,70 @@
|
||||||
{ pkgs, lib, config, ... }: {
|
{ inputs, outputs, lib, config, pkgs, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
../lib/tmux.nix
|
../lib/tmux.nix
|
||||||
../lib/vim.nix
|
../lib/vim.nix
|
||||||
];
|
];
|
||||||
# home-manager config
|
|
||||||
home.username = "john";
|
nixpkgs.config = {
|
||||||
home.homeDirectory = "/home/john";
|
allowUnfree = true;
|
||||||
home.stateVersion = "23.05"; # Please read the comment before changing.
|
allowUnfreePredicate = (_: true);
|
||||||
programs.home-manager.enable = true;
|
};
|
||||||
|
|
||||||
|
home = {
|
||||||
|
homeDirectory = lib.mkDefault "/home/${config.home.username}";
|
||||||
|
stateVersion = lib.mkDefault "23.05";
|
||||||
|
|
||||||
|
file = {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
packages = with pkgs; [
|
||||||
|
babelfish
|
||||||
|
hugo
|
||||||
|
packer
|
||||||
|
powershell
|
||||||
|
terraform
|
||||||
|
tldr
|
||||||
|
vault
|
||||||
|
];
|
||||||
|
|
||||||
|
sessionVariables = {
|
||||||
|
EDITOR = "vim";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
home-manager.enable = true;
|
||||||
|
|
||||||
|
# direnv = {
|
||||||
|
# enable = lib.mkDefault true;
|
||||||
|
# # enableFishIntegration = true;
|
||||||
|
# nix-direnv.enable = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
fish = {
|
||||||
|
enable = true;
|
||||||
|
shellInit = "source ${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.fish";
|
||||||
|
functions = {
|
||||||
|
switch-home = "home-manager switch -b backup --flake ${config.home.homeDirectory}/.dotfiles#$USER@$(hostname -s)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
delta.enable = true;
|
||||||
|
userEmail = lib.mkDefault "john@bowdre.net";
|
||||||
|
userName = lib.mkDefault "John Bowdre";
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
pull.rebase = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
htop.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
jq.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
targets.genericLinux.enable = true;
|
targets.genericLinux.enable = true;
|
||||||
|
|
||||||
# home files
|
|
||||||
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
|
|
||||||
# '';
|
|
||||||
};
|
|
||||||
|
|
||||||
# env vars
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "vim";
|
|
||||||
};
|
|
||||||
|
|
||||||
# packages
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
babelfish
|
|
||||||
fish
|
|
||||||
htop
|
|
||||||
hugo
|
|
||||||
packer
|
|
||||||
powershell
|
|
||||||
terraform
|
|
||||||
tldr
|
|
||||||
vault
|
|
||||||
|
|
||||||
# # 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}!"
|
|
||||||
# '')
|
|
||||||
];
|
|
||||||
|
|
||||||
# Fish shell settings
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
shellInit = "source ${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.fish";
|
|
||||||
functions = {
|
|
||||||
switch-home = "home-manager switch -b backup --flake ${config.home.homeDirectory}/.dotfiles";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# git settings
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
delta.enable = true;
|
|
||||||
userEmail = "john@bowdre.net";
|
|
||||||
userName = "John Bowdre";
|
|
||||||
extraConfig = {
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
pull.rebase = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,10 @@
|
||||||
{ pkgs, lib, ...}: {
|
{ pkgs, lib, config, ...}: {
|
||||||
|
|
||||||
|
nixpkgs.config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
allowUnfreePredicate = (_: true);
|
||||||
|
};
|
||||||
|
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enableExtensionUpdateCheck = false;
|
enableExtensionUpdateCheck = false;
|
||||||
|
|
|
@ -3,6 +3,11 @@
|
||||||
../../common/home.nix
|
../../common/home.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
nixpkgs.config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
allowUnfreePredicate = (_: true);
|
||||||
|
};
|
||||||
|
|
||||||
# packages
|
# packages
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
obsidian
|
obsidian
|
||||||
|
|
|
@ -4,6 +4,11 @@
|
||||||
../../lib/vscode.nix
|
../../lib/vscode.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
nixpkgs.config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
allowUnfreePredicate = (_: true);
|
||||||
|
};
|
||||||
|
|
||||||
# packages
|
# packages
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
firefox-esr
|
firefox-esr
|
||||||
|
|
7
nix/modules/home-manager/default.nix
Normal file
7
nix/modules/home-manager/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Add your reusable home-manager modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
||||||
|
# These should be stuff you would like to share with others, not your personal configurations.
|
||||||
|
|
||||||
|
{
|
||||||
|
# List your module files here
|
||||||
|
# my-module = import ./my-module.nix;
|
||||||
|
}
|
7
nix/modules/nixos/default.nix
Normal file
7
nix/modules/nixos/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
|
||||||
|
# These should be stuff you would like to share with others, not your personal configurations.
|
||||||
|
|
||||||
|
{
|
||||||
|
# List your module files here
|
||||||
|
# my-module = import ./my-module.nix;
|
||||||
|
}
|
24
nix/overlays/default.nix
Normal file
24
nix/overlays/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# This file defines overlays
|
||||||
|
{ inputs, ... }:
|
||||||
|
{
|
||||||
|
# This one brings our custom packages from the 'pkgs' directory
|
||||||
|
additions = final: _prev: import ../pkgs { pkgs = final; };
|
||||||
|
|
||||||
|
# This one contains whatever you want to overlay
|
||||||
|
# You can change versions, add patches, set compilation flags, anything really.
|
||||||
|
# https://nixos.wiki/wiki/Overlays
|
||||||
|
modifications = final: prev: {
|
||||||
|
# example = prev.example.overrideAttrs (oldAttrs: rec {
|
||||||
|
# ...
|
||||||
|
# });
|
||||||
|
};
|
||||||
|
|
||||||
|
# When applied, the unstable nixpkgs set (declared in the flake inputs) will
|
||||||
|
# be accessible through 'pkgs.unstable'
|
||||||
|
unstable-packages = final: _prev: {
|
||||||
|
unstable = import inputs.nixpkgs-unstable {
|
||||||
|
system = final.system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
6
nix/pkgs/default.nix
Normal file
6
nix/pkgs/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# Custom packages, that can be defined similarly to ones from nixpkgs
|
||||||
|
# You can build them using 'nix build .#example' or (legacy) 'nix-build -A example'
|
||||||
|
|
||||||
|
{ pkgs ? (import ../nixpkgs.nix) { } }: {
|
||||||
|
# example = pkgs.callPackage ./example { };
|
||||||
|
}
|
10
nix/shell.nix
Normal file
10
nix/shell.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Shell for bootstrapping flake-enabled nix and home-manager
|
||||||
|
# You can enter it through 'nix develop' or (legacy) 'nix-shell'
|
||||||
|
|
||||||
|
{ pkgs ? (import ./nixpkgs.nix) { } }: {
|
||||||
|
default = pkgs.mkShell {
|
||||||
|
# Enable experimental features without having to specify the argument
|
||||||
|
NIX_CONFIG = "experimental-features = nix-command flakes";
|
||||||
|
nativeBuildInputs = with pkgs; [ nix home-manager git ];
|
||||||
|
};
|
||||||
|
}
|
8
nixpkgs.nix
Normal file
8
nixpkgs.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# A nixpkgs instance that is grabbed from the pinned nixpkgs commit in the lock file
|
||||||
|
# This is useful to avoid using channels when using legacy nix commands
|
||||||
|
let lock = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.nixpkgs.locked;
|
||||||
|
in
|
||||||
|
import (fetchTarball {
|
||||||
|
url = "https://github.com/nixos/nixpkgs/archive/${lock.rev}.tar.gz";
|
||||||
|
sha256 = lock.narHash;
|
||||||
|
})
|
Loading…
Reference in a new issue