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": {
|
||||
"lastModified": 1690084763,
|
||||
"narHash": "sha256-Nw680m/pyVoosSgXZW415Z657mfVM2BxaxDPjEk48Z0=",
|
||||
"lastModified": 1687871164,
|
||||
"narHash": "sha256-bBFlPthuYX322xOlpJvkjUBz0C+MOBjZdDOOJJ+G2jU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "fb03fa5516d4e86059d24ab35a611ffa3a359547",
|
||||
"rev": "07c347bb50994691d7b0095f45ebd8838cf6bc38",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-23.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1690083312,
|
||||
"narHash": "sha256-I3egwgNXavad1eIjWu1kYyi0u73di/sMmlnQIuzQASk=",
|
||||
"lastModified": 1690271650,
|
||||
"narHash": "sha256-qwdsW8DBY1qH+9luliIH7VzgwvL+ZGI3LZWC0LTiDMI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "af8cd5ded7735ca1df1a1174864daab75feeb64a",
|
||||
"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",
|
||||
"rev": "6dc93f0daec55ee2f441da385aaf143863e3d671",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
@ -52,11 +37,27 @@
|
|||
"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": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"nixpkgs-23_05": "nixpkgs-23_05"
|
||||
"nixpkgs-unstable": "nixpkgs-unstable"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
95
flake.nix
95
flake.nix
|
@ -2,89 +2,58 @@
|
|||
description = "A Very Flakey Home Manager";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||
nixpkgs-23_05.url = "github:nixos/nixpkgs/nixos-23.05";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
url = "github:nix-community/home-manager/release-23.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = {nixpkgs, home-manager, ...} @inputs:
|
||||
outputs = { self, nixpkgs, home-manager, ... }@inputs:
|
||||
let
|
||||
# Overlays enable you to customize the Nixpkgs attribute set
|
||||
overlays = [
|
||||
(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 = [
|
||||
inherit (self) outputs;
|
||||
forAllSystems = nixpkgs.lib.genAttrs [
|
||||
"aarch64-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
|
||||
rec {
|
||||
inherit allSystems importPkgs forAllSystems home-manager;
|
||||
packages = forAllSystems (system:
|
||||
let pkgs = nixpkgs.legacyPackages.${system};
|
||||
in import ./nix/pkgs { inherit pkgs; }
|
||||
);
|
||||
|
||||
overlays = { };
|
||||
devShells = forAllSystems (system:
|
||||
let pkgs = nixpkgs.legacyPackages.${system};
|
||||
in import ./nix/shell.nix { inherit pkgs; }
|
||||
);
|
||||
|
||||
packages = forAllSystems
|
||||
({ pkgs, system }: rec {
|
||||
home-penguin-fw = homeConfigurations."john@penguin-fw".activationPackage;
|
||||
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
|
||||
overlays = import ./nix/overlays { inherit inputs; };
|
||||
nixosModules = import ./nix/modules/nixos;
|
||||
homeManagerModules = import ./nix/modules/home-manager;
|
||||
|
||||
nixosConfigurations = {
|
||||
pixnix = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs outputs; };
|
||||
modules = [
|
||||
./nix/nixos/configuration.nix
|
||||
];
|
||||
};
|
||||
default = all;
|
||||
});
|
||||
};
|
||||
|
||||
homeConfigurations = {
|
||||
"john@penguin-fw" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = importPkgs "x86_64-linux";
|
||||
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
extraSpecialArgs = { inherit inputs outputs; };
|
||||
modules = [
|
||||
./nix/machines/penguin-fw/home.nix
|
||||
];
|
||||
};
|
||||
"john@penguin-duet" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = importPkgs "aarch64-linux";
|
||||
|
||||
modules = [
|
||||
./nix/machines/penguin-duet/home.nix
|
||||
];
|
||||
};
|
||||
"john@pixnix" = home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = importPkgs "x86_64-linux";
|
||||
|
||||
modules = [
|
||||
./nix/common/home.nix
|
||||
{
|
||||
home = {
|
||||
username = "john";
|
||||
homeDirectory = "/home/john";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,78 +1,70 @@
|
|||
{ pkgs, lib, config, ... }: {
|
||||
{ inputs, outputs, lib, config, pkgs, ... }: {
|
||||
imports = [
|
||||
../lib/tmux.nix
|
||||
../lib/vim.nix
|
||||
];
|
||||
# home-manager config
|
||||
home.username = "john";
|
||||
home.homeDirectory = "/home/john";
|
||||
home.stateVersion = "23.05"; # Please read the comment before changing.
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
allowUnfreePredicate = (_: 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;
|
||||
|
||||
# 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 = {
|
||||
enable = true;
|
||||
enableExtensionUpdateCheck = false;
|
||||
|
|
|
@ -3,6 +3,11 @@
|
|||
../../common/home.nix
|
||||
];
|
||||
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
allowUnfreePredicate = (_: true);
|
||||
};
|
||||
|
||||
# packages
|
||||
home.packages = with pkgs; [
|
||||
obsidian
|
||||
|
|
|
@ -4,6 +4,11 @@
|
|||
../../lib/vscode.nix
|
||||
];
|
||||
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
allowUnfreePredicate = (_: true);
|
||||
};
|
||||
|
||||
# packages
|
||||
home.packages = with pkgs; [
|
||||
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